引发了另一个异常:NoSuchMethodError:方法'[]'在null上被调用

时间:2020-03-30 21:49:22

标签: flutter

 var wfa_res = await CallApi().getData('waiting_for_approval/waiting_approval_list/'+widget.username+'/'+'0/requisition');
 var wfa_res_body = json.decode(wfa_res.body);

在小部件中

for(var my_index = 0; my_index < wfa_res_body.length; my_index++)
    Container(
        padding: EdgeInsetsDirectional.fromSTEB(5,5,5,5),
        // child: Text('design'),
        child: Text(approvalInfo != null?approvalInfo['page_data'][my_index]['requisition_code']:''),
      ),

错误 抛出另一个异常:NoSuchMethodError:方法'[]'在null上调用。

2 个答案:

答案 0 :(得分:1)

问题是您的小部件在异步方法完成之前就已经构建好了。 尝试使用将来的构建器,例如

您的方法:

Future yourMethodName() async {
 var wfa_res = await CallApi().getData('waiting_for_approval/waiting_approval_list/'+widget.username+'/'+'0/requisition');
var wfa_res_body = json.decode(wfa_res.body);
return wfa_res_body;
}

未来构建器:

FutureBuilder(
  future: yourMethodName(),
  builder: (context, AsyncSnapshot snapshot) {
    if (snapshot.data == null) {
      return Center(child: CircularProgressIndicator());
    }
    // after getting data from api
  },
);

答案 1 :(得分:0)

我解决了这个问题。实际上,api响应太慢。现在我设置了一个装载机。并且工作正常。感谢所有人的回答。

相关问题