gpt4 book ai didi

json - 无需 future/async 同步解析本地 json 文件

转载 作者:行者123 更新时间:2023-12-05 06:14:37 25 4
gpt4 key购买 nike

我是 Flutter 的新手,我正在尝试解析本地 json文件到 List的对象。到目前为止,这是我的代码:

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'],
);
}
}

我只看到有人解析jsonasync功能,但这不是我想要的。谁能解释我如何同步解析 json,所以我的 List<Item> items already 将在 loadItems() 之后拥有所有项目方法?有什么想法吗?

最佳答案

因此,如果有人遇到与我相同的问题,我决定尝试此页面中提到的第一种方法:Load JSON data using Flutter in different ways

我遇到了我的主要功能被“分区”的问题。然后我发现了这个问题:Flutter - Android app shows just a blank screen

我编辑了方法 1,而不是 void , 我用过 Future<void> main async并简单地添加 WidgetsFlutterBinding.ensureInitialized();await 之前命令/行。

现在,json 文件会在应用程序启动前加载到列表中。请注意,这会暂停应用程序,直到加载列表!所以不要尝试加载一个巨大的 json 文件。

关于json - 无需 future/async 同步解析本地 json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62812466/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com