颤抖-无法通过FutureBuilder发送API请求

时间:2019-04-01 08:47:59

标签: dart flutter

我正在尝试使用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调用,我认为没有必要在此处包含该文件。

1 个答案:

答案 0 :(得分:1)

尽管我看不到其余的代码,但我认为您要实现的目标应该使用方法而非小部件来完成。当用户按下Submit时,调用一个基本上包含您在该生成器上编写的内容的函数。

从构建器内部调用导航器是一个坏主意。任何生成器都将被多次调用,在您的情况下,这将导致意外行为,这可能就是您所看到的