繁体   English   中英

无法在 Flutter 中加载本地 JSON 文件

[英]Not able to load local JSON File in Flutter

我正在开发一个个人 Flutter 项目,其中包含一些本地存储的 JSON 文件

这是代码

class CCategory extends StatefulWidget {
  @override
  _CCategory createState() => _CCategory();
}
class Prod {
  String Name;
  String Image;
  Prod({ this.Name, this.Image});
  factory Prod.fromJson(Map<String, dynamic> parsedJson) {
    return Prod(
        Name: parsedJson['Name'],
        Image: parsedJson['Image']);
  }
}
Future<String> _loadProdAsset() async {
  return await rootBundle.loadString('assets/data/Dabur.json');
}
Future<Prod> loadProd() async {
  String jsonString = await _loadProdAsset();
  final jsonResponse = json.decode(jsonString);
  return new Prod.fromJson(jsonResponse);
}

class _CCategory extends State<CCategory> {

  Prod _prod;
  bool _loaded = false;
  @override
  void initState() {
    super.initState();
    loadProd().then((s) => setState(() {
      _prod = s;
      _loaded = true;
    }));
  }
  Widget build(BuildContext context) {
    SystemChrome.setPreferredOrientations([
      DeviceOrientation.portraitDown,
      DeviceOrientation.portraitUp,

    ]);
    return MaterialApp(
        title: "Dabur Products",
        theme: ThemeData(
          primaryColor: Colors.black,
        ),
        home: Scaffold(
            appBar: AppBar(
              title: Text("Dabur Products",
              ),
            ),
            body: _loaded?Center(

                child: ListView(

                    children: <Widget>[
                ListTile(
                leading: Image.asset('${_prod.Image}'),
                  title: Text('${_prod.Name}'),
    )
    ]

    )
    )
                : new Center(
              child: new CircularProgressIndicator(),
            )
        ),
    );

    }

    }

JSON 文件的内容未加载,这是我在调试时遇到的错误

[错误:flutter/lib/ui/ui_dart_state.cc(157)] 未处理的异常:类型 'List' 不是类型 'Map<String, dynamic>' 的子类型

有人可以帮我解决这个问题吗?

我不知道你的 JSON 文件是什么样子,但看看你的错误代码, json.decode(jsonString)似乎给你一个List而不是Map 我猜你的 JSON 文件实际上是一个列表:

[ 
  ... content ...
]

相反,您的 JSON 文件应如下所示(使用{ } ):

{ 
  "Name": ...,
  "Image": ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM