Flutter _FutureBuilderState<;动态>;吸气剂';长度';在null上调用了。接收方:null尝试调用:长度

Flutter _FutureBuilderState<;动态>;吸气剂';长度';在null上调用了。接收方:null尝试调用:长度,flutter,Flutter,我的方法是从数据库中获取数据并在控制台上显示。我也尝试了其他帖子中给出的一些提示,但没有成功 _getUsers() async { print("getting"); var data = await http.post("http://10.0.2.2/Flutter/getdata.php", body: { "date": formattedDate, }); var jsonData = json.decode(data.body);

我的方法是从数据库中获取数据并在控制台上显示。我也尝试了其他帖子中给出的一些提示,但没有成功

_getUsers() async {
    print("getting");

    var data = await http.post("http://10.0.2.2/Flutter/getdata.php", body: {
      "date": formattedDate,
    });

    var jsonData = json.decode(data.body);

    print(jsonData);
  }
但是未来构建器无法显示

new FutureBuilder(
              future: _getUsers(),
              builder: (BuildContext context, AsyncSnapshot snapshot) {
                if (snapshot.connectionState == ConnectionState.waiting) {
                  return Center(
                    child: CircularProgressIndicator(),
                  );
                }
                if (snapshot.hasError) {
                  return Center(
                    child: new Text('Error ${snapshot.error}'),
                  );
                } else {
                  return Center(
                    child: Padding(
                      padding: const EdgeInsets.fromLTRB(56.0, 8.0, 56.0, 8.0),
//在这里,我也对空值进行了防范

child: ListView.builder(
                          itemCount: snapshot.data.length == null // showing error here
                              ? 0
                              : snapshot.data.length,
                          itemBuilder: (BuildContext context, int index) {
                            return ListTile(
                              leading: new Text(
                                '${snapshot.data[index]["branch"]}',
                                style: TextStyle(
                                  color: Colors.white,
                                  fontSize: 25.0,
                                ),
                              ),
                              trailing: new Text(
                                '${snapshot.data[index]["count(`branch`)".toString()]}',
                                style: TextStyle(
                                  color: Colors.white,
                                  fontSize: 25.0,
                                ),
                              ),
                            );
                          }),
                    ),
                  );
                }
              }),

无法解决此问题。请帮助..

您应该在
\u getUser()
中返回
jsonData

getUsers()异步{
打印(“获取”);
var data=wait http.post(“http://10.0.2.2/Flutter/getdata.php“,主体:{
“日期”:格式化日期,
});
var jsonData=json.decode(data.body);
返回jsonData;
}
,并更改此项

itemCount:snapshot.data.length==null//此处显示错误
? 0
:snapshot.data.length,
对此

itemCount:snapshot.data?长度??0,

snapshot.data?
检查
数据是否为空<代码>??
在前置函数为空时执行其后续函数。

您的函数不返回任何未来,因此
FutureBuilder
无法获取要运行的
未来

\u getUsers(){
打印(“获取”);
返回http.post(“http://10.0.2.2/Flutter/getdata.php“,主体:{
“日期”:格式化日期,
});
}
它需要返回一个未来,您不应该使用wait,因为FutureBuilder依赖于实际的未来,而不是数据。您可以在生成器中获取数据,然后对其进行解码

new FutureBuilder(
未来:_getUsers(),
生成器:(BuildContext上下文,异步快照){
if(snapshot.connectionState==connectionState.waiting){
返回中心(
子对象:CircularProgressIndicator(),
);
}
if(snapshot.hasError){
返回中心(
子项:新文本('Error${snapshot.Error}'),
);
}else if(snapshot.hasData){//正在检查数据
返回中心(
孩子:填充(
填充:常量边集。对称(水平:56,垂直:8),
子项:ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(构建上下文,int索引){
返回列表块(
导语:新文本(
“${snapshot.data[index][“branch”]}”,
样式:TextStyle(
颜色:颜色,白色,
字体大小:25.0,
),
),
尾随:新文本(
“${snapshot.data[index][“count(`branch`)”.toString()]}”,
样式:TextStyle(
颜色:颜色,白色,
字体大小:25.0,
),
),
);
}),
),
);
}
}),

supery..非常感谢,它解决了我的问题。。已经挣扎了几天…你救了m…@raj听到这个消息太好了!非常感谢@wurikiji,你能详细解释一下它为什么工作吗(用例子),这很有帮助。其他方面,请向我指出任何文章:)