我正在尝试使用FutureBuilder进行API调用,但由于未看到响应打印,因此似乎未发送请求。这是我未来的建设者:
FutureBuilder(
future: authBloc.login(user, pass),
builder: (context, AsyncSnapshot snapshotItem) {
Map<String, dynamic> data = snapshotItem.data[0];
print(data['response']);
if (data.containsKey('id')) {
saveId(data['id']);
Navigator.of(context).pushReplacement(
MaterialPageRoute(
builder: (BuildContext context) {
return MainPage();
}));
}
if (data.containsKey("response")) {
if (data['response'] == false) {
showDialog(
context: context,
builder: (BuildContext context) {
return AlertDialog(
title: Text('An Error Has Occurred'),
content: Text(
'Please Make Sure That You Are Entering Valid UserName And Password'),
actions: <Widget>[
FlatButton(
child: Text("OK"),
onPressed: () =>
Navigator.of(context).pop(),
)
],
);
});
}
}
},
);
authBloc.login(user, pass),
部分是另一个函数中的登录函数,该文件进行API调用,我认为没有必要在此处包含该文件。
答案 0 :(得分:1)
尽管我看不到其余的代码,但我认为您要实现的目标应该使用方法而非小部件来完成。当用户按下Submit时,调用一个基本上包含您在该生成器上编写的内容的函数。
从构建器内部调用导航器是一个坏主意。任何生成器都将被多次调用,在您的情况下,这将导致意外行为,这可能就是您所看到的