Future Builder在api中有数据,但返回Null

问题描述 投票:0回答:1

打电话给我的Future构建器时,我得到的是null。

我有这样的api设置:

Future getDriverInfo() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  var _token = prefs.getString('token');

  var dProfile;
  var url =
      'http://buddies-8269.herokuapp.com/api/driver/current_user/?access=$_token';

  await http.post(url, headers: {"Content-Type": "application/json"}).then(
      (http.Response response) {
    switch (response.statusCode) {
      case (200):
        var responseData = json.decode(response.body);

        DriverProfile driverProfile = DriverProfile.fromJson(responseData);
        print('Driver Info API: Got Data ${driverProfile.status.user.email}');
        dProfile = driverProfile.status;

        break;
      case (500):
        print('500 Error ${response.body}');

        break;
    }
    return dProfile;
  });
}

[我写给未来的建设者:

_getInfo = getDriverInfo();

  Widget _buildDataWidget() {
    return Container(
        height: 10,
        child: FutureBuilder(
            future: getDriverInfo(),
            builder: (context, snapshot) {  
              if (!snapshot.hasData == null) {
                return Center(child: CircularProgressIndicator());
              } else {
                var x = snapshot.data;
                print('The Drivers data is $x');
                return Container(
                  child:Text(x)
                );
              }
            }));
  }

控制台返回“驱动程序数据为空”,但是当我直接从api函数打印出数据时,我得到了数据。您能告诉我我做错了什么吗?

flutter dart future
1个回答
0
投票

您可能会从发布请求中获取200或500以外的状态代码。您尚未在代码段中的switch语句中处理默认情况。尝试添加默认情况,然后检查是否还有其他错误。

© www.soinside.com 2019 - 2024. All rights reserved.