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,你能详细解释一下它为什么工作吗(用例子),这很有帮助。其他方面,请向我指出任何文章:)