Dart setState()在Flatter中的异步调用中不起作用
我试图读取一个名为Dart setState()在Flatter中的异步调用中不起作用,dart,flutter,Dart,Flutter,我试图读取一个名为mood.json的json文件,并将其解析为一个名为“data”的列表,但当我运行setState()时,数据从未更改,对此问题有何帮助?代码如下所示: class DisplayPage扩展了StatefulWidget{ @凌驾 _DisplayPageState createState()=>新建_DisplayPageState(); } 类_DisplayPageState扩展状态{ 列表_data=[]; 目录目录; 文件jsonFile; 字符串jsonPat
mood.json的json文件,并将其解析为一个名为“data”的列表,但当我运行setState()
时,数据从未更改,对此问题有何帮助?代码如下所示:
class DisplayPage扩展了StatefulWidget{
@凌驾
_DisplayPageState createState()=>新建_DisplayPageState();
}
类_DisplayPageState扩展状态{
列表_data=[];
目录目录;
文件jsonFile;
字符串jsonPath;
Future getData()异步{
dir=等待getApplicationDocumentsDirectory();
jsonPath=dir.path+“/”+“mood.json”;
jsonFile=新文件(jsonPath);
设置状态(){
_data=json.decode(jsonFile.readAsStringSync());
});
}
@凌驾
void initState(){
super.initState();
getData();
打印(_data.length);
}
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“语气”)
),
正文:新建ListView.builder(
itemCount:_data.length,
itemBuilder:(构建上下文,int索引){
归还新卡(
子项:新文本(_数据[索引][“标题]),
);
},),
);
}
}
我想你的问题可能是别的;我接受了你的代码,将网络调用更改为只等待5秒钟,然后返回一些虚拟数据,结果很好
Future getData() async {
await new Future.delayed(const Duration(seconds: 5));
setState(() {
_data = [
{"title": "one"},
{"title": "two"},
];
});
}
您应该在setState
调用中放置一个断点,以确保实际调用了该断点,并且分配给\u data
的数据符合预期。在哪里调用setState
?我在你的代码中看不到。你如何使用你的状态?我重新编辑了这个问题,很抱歉我的错误mistake@PhucTran我想使用\u data
列表构建listview小部件,但解析的\u data
不会传递到状态。哪个文件包含上述代码?添加打印(_数据)时代码>在之后\u数据=代码>是否打印了预期数据?
Future getData() async {
await new Future.delayed(const Duration(seconds: 5));
setState(() {
_data = [
{"title": "one"},
{"title": "two"},
];
});
}