mobileApplicationsKonectarApp/lib/views/interaction_module/interactionlistscreen.dart

146 lines
6.3 KiB
Dart

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<InteractionListScreen> createState() => _InteractionListScreenState();
}
class _InteractionListScreenState extends State<InteractionListScreen> {
List<SaveInteraction> savedList = [];
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
init();
});
super.initState();
}
init() async {
await Provider.of<InteractionProvider>(context, listen: false)
.initConfigData();
await Provider.of<InteractionProvider>(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<InteractionProvider>(
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<SaveInteraction> 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(),
],
);
})),
),
);
});
}
}