首页 > 解决方案 > 如何修复'NoSuchMethodError:getter'length'被调用为null'

问题描述

我如何解决这个问题我使用函数从 api 获取数据,但我看到错误'NoSuchMethodError: The getter 'length' was called on null'

我的代码:

Future getData() async{
http.Response response = await http.get('https://myappres.000webhostapp.com/pubg/api.php?action=getskin');
debugPrint(response.body);

_data = json.decode(response.body);
_list = _data['categorys'];

return _list;                                                               
}

 Center(
          child: _list.length != null? ListView.builder(
              itemCount: _list.length,
              padding: const EdgeInsets.all(15.9),
              itemBuilder: (BuildContext context, int position){
                final index = position;
                return ListTile(
                    title: Text('${_list[index]['name']}'),
                    subtitle: Image.network('${_list[index]['image']}',width: 200,)
                );
              }
          ):Container()
        )

这是结果错误:

在此处输入图像描述

标签: flutter

解决方案


尝试使用 FutureBuilder 等待未来:

FutureBuilder(
      future: getData(),
      builder: (BuildContext context,AsyncSnapshot<List> snapshot){
        if(snapshot.hasData){
           return Center(child: snapshot.length)
        } else return Container();
      },

//you can use too:
getData().then((listData){
      Center(child: listData)...
});


推荐阅读