对于扑朔迷离来说我是一个新手,我试图将本地.json文件解析为对象列表。 到目前为止,这是我的代码:
import 'dart:convert';
import 'dart:async' show Future;
import 'package:flutter/services.dart';
class ItemManager {
List<Item> items;
ItemManager() {
loadItems();
}
void loadItems() async {
var tempList = await getItems();
items = tempList;
}
Future<List<Item>> getItems() async {
String dataString = await loadAsset();
var json = jsonDecode(dataString)['items'] as List;
List<Item> parsedList = json.map((i) => Item.fromJson(i)).toList();
return parsedList;
}
Future<String> loadAsset() async {
String value = await rootBundle.loadString('assets/items.json');
return value;
}
}
class Item {
String title = "";
String subtitle = "";
int subIcon = 1;
bool isFavourite = false;
String html = "";
Item({this.title, this.subtitle, this.subIcon, this.isFavourite, this.html});
factory Item.fromJson(Map<String, dynamic> parsedJson) {
return Item(
title: parsedJson['title'].toString(),
subtitle: parsedJson['subtitle'].toString(),
subIcon: parsedJson['subIcon'],
isFavourite: parsedJson['isFavourite'],
html: parsedJson['html'],
);
}
}
我只看到人们用异步功能解析.json,但这并不是我想要的那样。谁能解释我如何同步解析.json,所以我的List项目在loadItems()方法之后已经具有所有项目了? 有什么想法吗?
答案 0 :(得分:0)
因此,如果有人遇到与我相同的问题: 我决定尝试在此链接下尝试第一种方法: https://medium.com/@muddassirm/load-json-data-in-flutter-in-different-ways-e3312e6a317a
我遇到了问题,我的主要功能被“分区”了。然后我发现了这个问题:Flutter - Android app shows just a blank screen
我编辑了方法1,而不是“ void”,而是使用了“ Future main async”,并简单地添加了“ WidgetsFlutterBinding.ensureInitialized();”在等待命令之前。 现在,在应用启动之前,.json文件已加载到列表中。请注意,这会暂停应用程序,直到加载列表!因此,请勿尝试加载巨大的.json文件。