使用rootBundle.loadString从json文件读取数据是否很慢?

使用rootBundle.loadString从json文件读取数据是否很慢?,json,flutter,asynchronous,dart,Json,Flutter,Asynchronous,Dart,我只是想知道使用rootBundle.loadString从资产json文件读取数据是否相对较慢 我知道这是一个异步进程,我应该等待它,那么这是否意味着我不应该经常这样做,或者我应该在读取文件时显示加载指示器?或者它不是那么慢吗?loadString返回未来,因此您可以使用来构建未来数据的下拉列表 //其他代码 未来建设者( future:rootBundle.loadString('path-to-file.json'), 生成器:(上下文,快照){ if(snapshot.connectio

我只是想知道使用
rootBundle.loadString
从资产json文件读取数据是否相对较慢


我知道这是一个异步进程,我应该等待它,那么这是否意味着我不应该经常这样做,或者我应该在读取文件时显示加载指示器?或者它不是那么慢吗?

loadString
返回未来,因此您可以使用来构建未来数据的下拉列表

//其他代码
未来建设者(
future:rootBundle.loadString('path-to-file.json'),
生成器:(上下文,快照){
if(snapshot.connectionState==connectionState.done){
//使用快照的数据返回小部件。
}
//处理其他连接状态。
},
),
//其他代码

loadString对大于10Kb的文件使用
compute
(即运行隔离)(有关最新详细信息,请参阅函数实现)。我发现在某些安卓设备上工作(或启动,都不重要)的速度很慢(比如三星J5 2017)。不确定原因-是设备速度慢还是此体系结构存在一些多线程调用问题。因此,您可以直接使用“rootBundle.load()”,如:

Future<String> loadString(String key) async {
    final ByteData data = await rootBundle.load(key);
    return utf8.decode(data.buffer.asUint8List());
}
未来加载字符串(字符串键)异步{
final ByteData data=wait rootBundle.load(键);
返回utf8.decode(data.buffer.asUint8List());
}

您需要使用FutureBuilder。如果我加载json字符串,用其他输入字段填充屏幕中的下拉菜单,该怎么办?例如,我想我可以在initState()中加载字符串?这是一种不好的做法吗?这是一种异步操作,您希望在将来构建UI,以便FutureBuilder完全适合您。