Flutter 加载assets 下的json文件的方式

第一种 使用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);
    });
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 9,059评论 0 13
  • flutter 多语言处理 目前就我而言接触到两种比较优雅的处理方式第一种是设置抽象类,不同的语言有不同的实现,当...
    gsyQAQ阅读 1,353评论 0 0
  • 灯下的影子被孤单地拉长 我穿行在你走过小巷 迷失在追寻你的路上 远方传来悲伤的呐喊 那是我灵魂深处的彷徨 远处走来...
    大魔魔阅读 280评论 1 10
  • 所有人都在努力生活,而我除了生活却看不到一丝努力。 我问小...
    游梦拾荒阅读 298评论 0 2
  • 小时候的我,皮肤黝黑,自来卷的头发蓬松得就像狮子头一样,头发短剪短总被人误认为男孩,因为本身有点点小缺陷,这样一个...
    桃宝宝是我阅读 241评论 0 0