【问题标题】:Flutter: Load JSON data automatically StatefulWidgetFlutter:自动加载 JSON 数据 StatefulWidget
【发布时间】:2019-09-16 00:15:08
【问题描述】:
我正在尝试自动将 json 数据分配给列表,而无需按下按钮,然后调用方法。
为简单起见,这是我的方法:
_fetchData() async {
final response =
await http.get("https://jsonplaceholder.typicode.com/photos");
if (response.statusCode == 200) {
list = json.decode(response.body) as List;
} else {
throw Exception("Failed to load data");
}
}
我有一个带有变量“list”的 StatefulWidget,在 build 方法中,返回一个列表构建器,然后使用列表中的数据。
我该怎么做?谢谢。
【问题讨论】:
标签:
json
flutter
dart
android-asynctask
【解决方案1】:
您需要在 initState 中调用您的方法。这里重要的一点是触发小部件重建的 setState()。
这是一个例子:
class _PhotosWidgetState extends State<PhotosWidget> {
List<dynamic> photos = [];
@override
void initState() {
super.initState();
setState(() {
photos = _fetchData();
});
}
List<dynamic> _fetchData() async {
final response =
await http.get("https://jsonplaceholder.typicode.com/photos");
if (response.statusCode == 200) {
return json.decode(response.body) as List;
} else {
throw Exception("Failed to load data");
}
}
@override
Widget build(BuildContext context) {
return [....your list builder here....];
}
}