Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter &引用;NoSuchMethodError:getter';长度';被调用时为null“;关于Listview构建器区域_Flutter - Fatal编程技术网

Flutter &引用;NoSuchMethodError:getter';长度';被调用时为null“;关于Listview构建器区域

Flutter &引用;NoSuchMethodError:getter';长度';被调用时为null“;关于Listview构建器区域,flutter,Flutter,我想问一下我犯的错误。所以,在有人声称这个问题与其他问题相似之前,也许是的,但其他人的回答仍然不能解决我的问题 因此,我的代码有问题,错误显示大约5秒,然后显示数据列表。然后我搜索解决方案,找到了futurebuilder的答案,但当我调试时,错误仍然显示,并且是永久性的,不会像以前那样更改为数据列表。 这是我的密码 列表数据; Future loadJsonData()异步{ var jsonText=await rootBundle.loadString('Json/indomodel.J

我想问一下我犯的错误。所以,在有人声称这个问题与其他问题相似之前,也许是的,但其他人的回答仍然不能解决我的问题

因此,我的代码有问题,错误显示大约5秒,然后显示数据列表。然后我搜索解决方案,找到了futurebuilder的答案,但当我调试时,错误仍然显示,并且是永久性的,不会像以前那样更改为数据列表。 这是我的密码

列表数据;
Future loadJsonData()异步{
var jsonText=await rootBundle.loadString('Json/indomodel.Json');
如果(本安装){
设置状态(){
data=json.decode(jsonText);
});
}
//打印(jsonText);
}
@凌驾
void initState(){
super.initState();
这是loadJsonData();
//loaddata();
}
@凌驾
小部件构建(构建上下文){
//var buildContext=(buildContext上下文,异步快照);
返回脚手架(
resizeToAvoidBottomInset:false,
resizeToAvoidBottomPadding:false,
主体:容器(
子:列(
儿童:[
容器(
填充:边缘组。对称(水平:20.0,垂直:10.0),
身高:60.0,
宽度:MediaQuery.of(context).size.width,
装饰:盒子装饰(颜色:彩色。白色),
孩子:TextField(
装饰:输入装饰(
聚焦顺序:大纲输入边框(
borderSide:borderSide(颜色:颜色。透明),
),
alignLabelWithHint:正确,
调焦颜色:颜色。白色,
hintText:“Ketik Kata”,
hintStyle:TextStyle(颜色:Colors.grey),
//labelText:“印度尼西亚语”,
图标:图标(
FontAwesomeIcons.search,
颜色:颜色。灰色,
尺寸:15.0,
),
labelStyle:TextStyle(颜色:Colors.grey)),
光标颜色:颜色。黄色,
样式:TextStyle(颜色:Colors.grey.shade800),
),
),
容器(
填充:仅限边缘设置(顶部:10.0),
宽度:MediaQuery.of(context).size.width,
高度:MediaQuery.of(上下文).size.height*0.6,
孩子:未来建设者(
future:loadJsonData(),
生成器:(BuildContext上下文,异步快照){
if(!snapshot.hasData)返回中心(子项:CircularProgressIndicator(),);
if(snapshot.connectionState==connectionState.done){
if(snapshot.hasError)返回文本('Error${snapshot.Error}');
返回ListView.builder(
itemCount:snapshot.data.length,
itemBuilder:(构建上下文,索引){
回程卡(
标高:0.3,
孩子:ListTile(
//前导:CircleAvatar(子:图标(FontAwesomeIcons.adjust)),
标题:专栏(
crossAxisAlignment:crossAxisAlignment.start,
儿童:[
划船(
mainAxisAlignment:mainAxisAlignment.spaceBetween,
儿童:[
可选择文本(
数据[索引]['word'],
样式:TextStyle(
字体大小:16.0,
fontWeight:fontWeight.bold,
颜色:颜色。深紫色。阴影800),
),
正文(
“我的卡穆斯”,
样式:TextStyle(
颜色:颜色。灰色,字体大小:10),
)
],
),
尺寸箱(高度:10.0,),
文本(数据[索引]['trans'],样式:TextStyle(颜色:Colors.grey.shade700,fontSize:13.0),)
],
),
),
);
},
);
}
},
)
)
],
),
),
);

因为如果没有数据,
snapshot.data
返回
null
,并且您正在
列表视图中使用它,您需要做的就是使用这种方法:

FutureBuilder(
   future: loadJsonData(),
   builder: (BuildContext context, AsyncSnapshot snapshot){

   // if there is no data yet, show progress indicator. 
   if (!snapshot.hasData) return Center(child: CircularProgressIndicator());         

   // only show ListView if you have data
   return ListView.builder(...);
   }
)

我从电话中键入了此代码,因此可能存在一些基本语法错误。

尝试将您的
itemCount:snapshot.data.length,
替换为
itemCount:snapshot.data==null?0:snapshot.data.length,
。这应该可以解决问题。

它仅堆叠在进度条上。不显示数据。但感谢这意味着您的
加载jsondata
没有返回任何数据。请也发布该数据的代码。
FutureBuilder(
   future: loadJsonData(),
   builder: (BuildContext context, AsyncSnapshot snapshot){

   // if there is no data yet, show progress indicator. 
   if (!snapshot.hasData) return Center(child: CircularProgressIndicator());         

   // only show ListView if you have data
   return ListView.builder(...);
   }
)