Flutter 我想从api获取用户数据,但它显示为空

Flutter 我想从api获取用户数据,但它显示为空,flutter,Flutter,我在每个索引中调用提供者,如果它为null,但仍然有null错误,我给它一个初始值 (所有数据显示在控制台中,但不在应用程序中) 错误消息 The getter 'name' was called on null. Receiver: null Tried calling: name 这是我在每个索引中存储用户数据的配置文件代码 Expanded( child: Text(

我在每个索引中调用提供者,如果它为null,但仍然有null错误,我给它一个初始值 (所有数据显示在控制台中,但不在应用程序中)

错误消息

The getter 'name' was called on null.
Receiver: null
Tried calling: name
这是我在每个索引中存储用户数据的配置文件代码

Expanded(

                                              child: Text(
                                                 userProvider.user.name==null?'':userProvider.user.name ,

                                              ),
                                            ),
                                          ),
                                          index == 1
                                              ? Padding(
                                                  padding:
                                                      const EdgeInsets.all(16),
                                                  child: Container(
                                                    child: Text(
                                                      userProvider.user.email== null? '' :userProvider.user.email,

                                                    ),
                                                  ),
                                                )
                                              : index == 3
                                                  ? Padding(
                                                      padding:
                                                          const EdgeInsets.all(
                                                              16),
                                                      child: Container(
                                                        child: Text(
                                                        userProvider.user.phone== null? '' :userProvider.user.phone,

                                                        ),
                                                      ),


              )
这是用于登录的用户提供程序

Future<dynamic> login(String email, String password) async {
    final Map<String, dynamic> body = {'email': email, 'password': password};

    _isLoading = true;
    notifyListeners();
    print('Starting request');
    http.Response response = await http.post(Environment.userLogin,
        body: json.encode(body), headers: Environment.requestHeader);
    print('Completed request');
    print('user login response : ${response.body}');
    Map<String, dynamic> res = json.decode(response.body);
    var results;
    if (res['code'] == 200) {
      // login successful
      _user = User.fromJson(res['message']);
      results = true;
    } else {
      print(res['error']);
      // login failed;
      results =
          FailedRequest(code: 400, message: res['error'], status: false);
    }
    _isLoading = false;
    notifyListeners();
    return results;
  }
未来登录(字符串电子邮件、字符串密码)异步{
最终映射体={'email':email,'password':password};
_isLoading=true;
notifyListeners();
打印(“启动请求”);
http.Response-Response=wait http.post(Environment.userLogin,
body:json.encode(body),headers:Environment.requestHeader);
打印(“已完成的请求”);
打印('用户登录响应:${response.body}');
Map res=json.decode(response.body);
var结果;
如果(res['code']==200){
//登录成功
_user=user.fromJson(res['message']);
结果=真;
}否则{
打印(res['error']);
//登录失败;
结果=
FailedRequest(代码:400,消息:res['error'],状态:false);
}
_isLoading=false;
notifyListeners();
返回结果;
}

您的登录方法返回结果,而不是_user或res.

这是我在登录屏幕中的功能,因此如果我将结果替换为res,问题将结束吗?signIn()异步{await userProvider.login(_userNameController.text,_passwordController.text);Navigator.pushReplacement(widget._上下文,MaterialPageRoute(builder:(context)=>BottomTabScreen());假设该值在response.body中,那么您需要做的是返回res,或者可以执行类似于
\u userData=User.fromJson(res[您的\u NAMED\u KEY\u包含\u CORRECT\u属性])的操作。
然后返回\u userData