In this UI when i run the application first 10 data loads but pagination does not work so it does not load next 10 items, but when I make some changes on UI and run hot reload it works just right.API is working perfectly I don't know why UI is behaving like this. I need help on this please look at the below code.
Thanks
The UI
child: FutureBuilder(
future: getData('0'),
builder: (context, snapshot){
if (snapshot.connectionState == ConnectionState.done) {
if (contactModel.status == 'true'){
return ListView.builder(
controller: scrollController,
itemCount: contacts.length,
itemBuilder: (BuildContext context, int index) {
return listViewItem(contacts[index]);
});
}
else{
return Center();
}
}
else {
return Center(child: CircularProgressIndicator());
}
}
),
Data Calling
Future<ContactModel> getData(String lastId) async {
empid = await SharedPreferencesClass().getempid();
tkc_id = await SharedPreferencesClass().gettkcid();
try {
Dio dio = new Dio();
dio.options.connectTimeout = 50000;
dio.options.contentType = "multipart/form-data";
FormData formData;
formData = FormData.fromMap({
"emp_id": '11409',
"tkc_id": 'TKC0011',
"selected_tkcid": 'TKC0011',
"last_id": lastId,
"contactval":'A',
"locality":'A',
"custtype":'A',
});
Response response = await dio.post(HttpUrl.getcrmcustomerlist, data: formData);
// print('Server response: ' + response.toString());
if (response.statusCode == 200) {
Map<String, dynamic> responseBody = response.data;
contactModel = ContactModel.fromJson(responseBody);
contacts.addAll(contactModel.contacts);
} else {
Fluttertoast.showToast(
msg: "Please Try After Some Time",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
timeInSecForIosWeb: 1,
);
}
} catch (e) {
print(e);
}
return new ContactModel();
}
Scroll Controller on InitState
void initState() {
super.initState();
scrollController.addListener(() {
if(scrollController.position.pixels >= scrollController.position.maxScrollExtent ){
// print('Data Called');
Future.delayed(Duration(milliseconds: 2000));
getData(contacts.last.customer_id);
}
});
}
I believe the issue will resolve on adding setState, Like but it does not load any data
if (response.statusCode == 200) {
Map<String, dynamic> responseBody = response.data;
contactModel = ContactModel.fromJson(responseBody);
setState(() {
contacts.addAll(contactModel.contacts);
})
} else {
Fluttertoast.showToast(
msg: "Please Try After Some Time",
toastLength: Toast.LENGTH_SHORT,
gravity: ToastGravity.BOTTOM,
timeInSecForIosWeb: 1,
);