【发布时间】:2018-11-04 17:59:07
【问题描述】:
我正在尝试读取一个名为mood.json 的json 文件并将其解析为一个名为“data”的列表,但是当我运行setState() 时,data 从未改变,对此问题有何帮助?代码如下所示:
class DisplayPage extends StatefulWidget {
@override
_DisplayPageState createState() => new _DisplayPageState();
}
class _DisplayPageState extends State<DisplayPage> {
List _data = [];
Directory dir;
File jsonFile;
String jsonPath;
Future getData() async {
dir = await getApplicationDocumentsDirectory();
jsonPath = dir.path + "/" + "mood.json";
jsonFile = new File(jsonPath);
setState(() {
_data = json.decode(jsonFile.readAsStringSync());
});
}
@override
void initState() {
super.initState();
getData();
print(_data.length);
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text('Mood')
),
body: new ListView.builder(
itemCount: _data.length,
itemBuilder: (BuildContext context, int index) {
return new Card(
child: new Text(_data[index]["title"]),
);
},),
);
}
}
【问题讨论】:
-
你在哪里打电话给
setState?我在你的代码中看不到它。 -
你如何使用你的状态?
-
我重新编辑了问题,抱歉我的错误
-
@Phuc Tran 我想使用
_data列表来构建一个列表视图小部件,但解析后的_data没有传递给状态。 -
什么文件包含上面的代码?当您在
_data = ...;之后添加print(_data);时,是否会打印预期的数据?