Я пытался использовать FutureBuilder для виджета с состоянием, я написал простое приложение flask и проверил конечную точку, она хорошо работает через браузер. НО в моем флаттерном приложении я продолжаю получать «нет данных», что означает, что выборка с сервера не производилась.
Почему функция getFamily () не вызывается (см. Ниже)?
Полагаю, мне здесь чего-то не хватает, c: /, я бы хотел получить семью. Отец!
ниже мой код в виджете с состоянием:
Future<FamilyModel> familyFuture;
@override
void initState() {
super.initState();
familyFuture = getFamily();
}
Future<AuditionModel> getFamily() async {
print("Welcome to getFamily!!\n");
final url = "http://192.168.1.2:5000/search";
final response = await http.get(url);
// for debugging only
# print('statusCode: ${response.statusCode}');
if (response.statusCode == 200) {
# print("You have reached here!!!");
final jsonFamily = jsonDecode(response.body);
return FamilyModel.fromJson(jsonFamily);
} else {
throw Exception();
}
}
в части сборки:
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: MyCustomedAppBar(), // works well
body: Container(
child: FutureBuilder(
future: familyFuture,
builder: (context, snapshot) {
if (snapshot.hasData) {
switch (snapshot.connectionState) {
case ConnectionState.active:
return Text('Active');
case ConnectionState.done:
final family = snapshot.data;
print("Done!!!");
return Text(family.father);
case ConnectionState.none:
return Text("none");
case ConnectionState.waiting:
return Text("waiting");
default:
return Text("default");
}
} else {
return Text("No data");
}
},
),
),
);
Модель:
class FamilyModel {
final String father;
final String mother;
final String sister;
FamilyModel(
{this.father,
this.mother,
this.sister});
factory AuditionModel.fromJson(final json) {
return FamilyModel(
father: json["father"],
mother: json["mother"],
sister: json["sister"]);
}
Спасибо всем за помощь!