我正在尝试自学Flutter,并且正在创建一些假想的情况,可以说我有一个JSON文件,其中包含公司的某些成员,其中包含以下信息。例如,约翰来自柏林,我想用柏林的天气加载另一个JSON文件。
[
{
"first_name": "John",
"last_name": "Doe",
"age": 25,
"description": "lorem ipsum dolorum",
"city": "Berlin"
}
]
这是柏林天气的文件。
[
{
"city" : "Berlin",
"weather" :
{
"monday": 23,
"tuesday": 24
...
}
}
]
这是将来的构建器加载我的资产的代码,据我了解,这允许我仅加载一个json文件,这在大多数情况下应该可以,但是我的想象中的情况需要加载另一个文件。
body: Container(
child: Center(
child: FutureBuilder(
future: DefaultAssetBundle.of(context).loadString(
'assets/file.json'),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
...
对于实现此目标的任何帮助,我们将不胜感激。
答案 0 :(得分:0)
您可以将两个调用包装在异步方法中,然后等待:
Future<Map<String, String>> loadJson() async {
final jsonA = await DefaultAssetBundle.of(context).loadString('assets/fileA');
final jsonB = await DefaultAssetBundle.of(context).loadString('assets/fileB');
return {
'fileA': jsonA,
'fileB': jsonB,
};
}
...
FutureBuilder(
future: loadJson(),
builder: (context, snapshot) {
if (!snapshot.hasData) {
return CircularProgressIndicator();
}
var fileA = snapshot.data['fileA'];
var fileB = snapshot.data['fileB'];
...
您可以将其作为列表或自定义类或其他任何形式返回,这只是为了显示想法。