import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:pwa_ios/main.dart'; import 'package:pwa_ios/model/save_interaction.dart'; import 'package:pwa_ios/utils/util.dart'; import 'package:pwa_ios/viewmodel/interactionprovider.dart'; import 'package:pwa_ios/views/interaction_module/interaction_screen.dart'; import 'package:pwa_ios/views/interaction_module/view_forms_list.dart'; class InteractionListScreen extends StatefulWidget { const InteractionListScreen({super.key}); @override State createState() => _InteractionListScreenState(); } class _InteractionListScreenState extends State { List savedList = []; @override void initState() { WidgetsBinding.instance.addPostFrameCallback((timeStamp) { if (!mytimer!.isActive) { activateTimer(); } init(); }); super.initState(); } init() async { await Provider.of(context, listen: false) .initConfigData(); await Provider.of(context, listen: false).getRecords(); setState(() {}); } Future getCount(String form, InteractionProvider provider) async { await provider.getRecords(); return provider.savedList.where((element) => element.form == form).length; } @override Widget build(BuildContext context) { return Consumer( builder: (BuildContext context, provider, Widget? child) { return Scaffold( appBar: AppBar( title: Text( 'Interaction Forms', style: TextStyle(fontSize: isTablet ? 22 : 14, color: Colors.white), ), automaticallyImplyLeading: false, backgroundColor: const Color(0xFF2b9af3), ), body: Container( child: Center( child: ListView.builder( itemCount: provider.intConfigDataList.length, cacheExtent: double.parse( provider.intConfigDataList.length.toString()), itemBuilder: (context, index) { return Column( children: [ ListTile( title: Row( children: [ Text( provider.intConfigDataList[index].name, ), const SizedBox( width: 20, ), IconButton( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => InteractionScreen( index: index, form: provider .intConfigDataList[index] .name, ))); }, icon: const Icon( Icons.arrow_circle_right_outlined, size: 30, color: Color.fromARGB(255, 8, 39, 92), ), ), ], ), trailing: provider.savedList.indexWhere((element) => element.form == provider.intConfigDataList[index].name) != -1 ? InkWell( onTap: () { if (getCount( provider .intConfigDataList[index].name, provider) != 0) { List sendsavedList = provider .savedList .where((element) => element.form == provider .intConfigDataList[index] .name) .toList(); Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => SavedFormListScreen( formname: provider .intConfigDataList[ index] .name, ))); } }, child: Text( "${provider.savedList.where((element) => element.form == provider.intConfigDataList[index].name).length} record(s) saved", style: TextStyle( fontSize: isTablet ? 18.0 : 14, color: Colors.blue.shade900), ), ) : const SizedBox.shrink(), onTap: () { Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => InteractionScreen( index: index, form: provider .intConfigDataList[index].name, ))); }, ), const Divider(), ], ); })), ), ); }); } }