第一种 使用rootBundle
import 'package:flutter/services.dart';
rootBundle.loadString('assets/data/sort_0.json').then((value){
_mGoodsSort = json.decode(value);
setState(() {
_mList = _mGoodsSort;
});
});
rootBundle.loadString('assets/data/sort_1.json').then((value) {
_mGoodsSort1 = json.decode(value);
});
rootBundle.loadString('assets/data/sort_2.json').then((value) {
_mGoodsSort2 = json.decode(value);
});
第二种 使用DefaultAssetBundle
/如果有自己定义的AssetBundle 并用DefaultAssetBundle 包围在widget 最外层 则使用这种方式获取的就是自己定义的AssetBundle 如果没有设置 则最后找的还是rootBundle/
//自定义AssetBundle
class TestAssetBundle extends CachingAssetBundle {
@override
Future<ByteData> load(String key) async {
if (key == 'resources/test')
return ByteData.view(Uint8List.fromList(utf8.encode('Hello World!')).buffer);
return null;
}
}
//使用自定义AssetBundle
MaterialApp(
home: DefaultAssetBundle(
bundle: TestAssetBundle(),
child: TestWidget(),
),
),
具体使用方法
DefaultAssetBundle.of(context).loadString('').then((value){
_mGoodsSort2 = json.decode(value);
});