• 1000 1002 * Я пытаюсь получить данные прямо при загрузке экрана, функция выполняется правильно, потому что я печатаю данные в консоли, и она возвращает "null", но когда я go с экрана 1 (экран, на котором я хочу загрузить данные.) на экран 2 (любой экран), а затем обратно на экран 1, данные загружаются на месте и больше не возвращают null, это открывается только при первом запуске команды «flutter run» и go для на этом экране он не работает, но при горячей перезагрузке экрана или go на другой и обратно он снова работает нормально, может ли кто-нибудь мне помочь?
Ниже мой код.
class StudentMessages extends StatefulWidget {
@override
_StudentMessagesState createState() => _StudentMessagesState();
}
class _StudentMessagesState extends State<StudentMessages> {
bool isLoading = false;
Future getChats() async{
final response = await http.get(
Uri.encodeFull("https://xxxxxxxxxxxx/xxx/x/x/xx/getChat.php?id=${u.id}&page=$page"),
headers: {
"Accept": 'application/json',
}
);
if(response.statusCode == 200){
setState(() {
jsonData = jsonDecode(response.body);
isLoading = true;
});
if(jsonData == null){
print("this shit ain't working fam.");
}
print(jsonData);
}
}
void initState(){
super.initState();
getChats();
}
@override
Widget build(BuildContext context) {
if(isLoading == true) {
return ListView.builder(
shrinkWrap: true,
padding: EdgeInsets.all(15),
itemCount: jsonData == null ? 0 : jsonData.length,
itemBuilder: (BuildContext context, int index) {
if(jsonData == null){
return new Container();
}else{
return new Card(
child: ListTile(
leading: CircleAvatar(
backgroundImage: AssetImage('assets/images/tutor2.jpg'),
),
title: Text('${jsonData[index]['user_firstName']} ${jsonData[index]['user_lastName']}'),
subtitle: Text(
'${jsonData[index]['username']}',
overflow: TextOverflow.ellipsis,
),
onTap: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ChatPage(tutorData: jsonData)),
);
},
),
);
}
},
);
}else{
return Center(child:CircularProgressIndicator());
}
}
}