import 'package:flutter/material.dart'; import 'package:provider/provider.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/viewmodel/viewinteractionprovider.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) { init(); }); super.initState(); } init() async { await Provider.of(context, listen: false) .initConfigData(); await Provider.of(context, listen: false).getRecords(); setState(() {}); } int getCount(String form, InteractionProvider provider) { 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( 'Interaction-form${(index + 1).toString()}', ), const SizedBox( width: 20, ), IconButton( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => InteractionScreen( index: index, form: 'Interaction-form${(index + 1).toString()}', ))); }, icon: const Icon( Icons.arrow_circle_right_outlined, size: 30, color: Color.fromARGB(255, 8, 39, 92), ), ), ], ), trailing: provider.savedList.indexWhere((element) => element.form == 'Interaction-form${(index + 1).toString()}') != -1 ? InkWell( onTap: () { if (getCount( 'Interaction-form${(index + 1).toString()}', provider) != 0) { List sendsavedList = provider .savedList .where((element) => element.form == 'Interaction-form${(index + 1).toString()}') .toList(); Navigator.push( context, MaterialPageRoute( builder: (BuildContext context) => SavedFormListScreen( formname: 'Interaction-form${(index + 1).toString()}', ))); } }, child: Text( "${getCount('Interaction-form${(index + 1).toString()}', provider).toString()} 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: 'Interaction-form${(index + 1).toString()}', ))); }, ), const Divider(), ], ); })), ), ); }); } }