在flutter中为JSON数据配置字段时遇到错误

如何解决在flutter中为JSON数据配置字段时遇到错误

我在flutter应用程序中获取了JSON数据,我试图将其显示为PageView.builder和嵌套的ListView.builder,这是我已经创建的模型。

首先像这样配置JSON数据订单详细信息,然后它具有嵌套的order_items。我需要在一页中显示单个订单,然后在ListView.Builder中的同一页面上显示order_items。

在这种尝试中,我遇到了以下错误

错误

TypeList<dynamic> is not a subtype of Map<dynamic,dynamic>

我无法为pageview的元素编制索引,而为order_items嵌套的ListView.builder编制索引。

请指导我如何纠正它

这是我可以在flutter应用程序中从服务器获取的JSON数据

{
    "error": "false","content": [
        {
            "comp_code": "4","comp_name": "KMT OVERSEAS","order_no": "16","soh_pk": "23660","order_items": [
                {
                    "comp_code": "4","sod_pk": "31689",},{
                    "comp_code": "4","sod_pk": "31688",}
            ]
        },{
            "comp_code": "4","order_no": "18","soh_pk": "23702","sod_pk": "31749","sod_pk": "31742","sod_pk": "31743",]
        }
    ]
}

我使用的代码是用于获取有状态小部件中数据的

Future<Payload> getdetailsoforders(String userid,String companycode) async {

    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    Map data = {
      'user_id': userid,'company_code':companycode

    };

     //newapi is the url link for the server
    var response = await http.post(newapi,body: data);
    if(response.statusCode == 200) {
     jsonResponse = json.decode(response.body);
      print("jsonrespnse");
      print(jsonResponse);
 }
    

  }

这是我用来获取字段数据的代码

NewDetail.fromJson(Map<String,dynamic> json) {
    error = json['error'];
    if (json['content'] != null) {
      content = new List<NewOrderModel>();
      json['content'].forEach((v) {
        content.add(new NewOrderModel.fromJson(v));
      });
    }
  }

  Map<String,dynamic> toJson() {
    final Map<String,dynamic> data = new Map<String,dynamic>();
    data['error'] = this.error;
    if (this.content != null) {
      data['content'] = this.content.map((v) => v.toJson()).toList();
    }
    return data;
  }

在flutter应用程序中正在实现的小工具代码

FutureBuilder(
           future: _future,           builder: (context,AsyncSnapshot<Payload> snapshot) {
             switch (snapshot.connectionState) {
               case ConnectionState.none:
                 return Text('none');
               case ConnectionState.waiting:
                 return Center(child: CircularProgressIndicator());
               case ConnectionState.active:
                 return Text('');
               case ConnectionState.done:
                 if (snapshot.hasError) {
                   return Text(
                     '${snapshot.error}',                     style: TextStyle(color: Colors.red),                   );
                 } else {
  return PageView.builder(
                       scrollDirection: Axis.horizontal,                       itemCount: snapshot.data.content.keys.length,                       itemBuilder: (context,index) {
                         String key =
                         snapshot.data.content.keys.elementAt(index);
                 return Column(
                           children: [
                             SizedBox(height: 25,),                             Column(
                               mainAxisAlignment: MainAxisAlignment.center,                               crossAxisAlignment:CrossAxisAlignment.center,                               children: <Widget>[
                                 Row(
                                   mainAxisAlignment: MainAxisAlignment.center,                                   crossAxisAlignment:CrossAxisAlignment.center,                                   children: <Widget>[
                                     Container(

                                       height: 32,                                       width: 160,                                       decoration: BoxDecoration(
                                         color: Colors.white,                                         border: Border.all(

                                           width:0.5,                                           color: Color(0xFF766F6F),                                         ),                                         borderRadius: BorderRadius.circular(10.0),                                       ),                                       child: Center(
                                         child: Text('Order No.',style: TextStyle(backgroundColor: Colors.white,                                           color:Color(0xFF2e2a2a),                                           fontFamily: 'Roboto',                                           fontSize: 12,                                     ),                                     Container(
                                       height: 32,                                         border: Border.all(
                                           width:0.5,                                       child: Center(
                                         child: Text(key,                                     )]
                                   ,                               ],                             SizedBox(height: 30,                             Expanded(

                               child: ListView.separated(
                                 separatorBuilder:
                                     (BuildContext context,int index) {
                                   return SizedBox(
                                     height: 16,                                   );
                                 },                                 shrinkWrap: true,                                 itemCount: snapshot.data.content[key].length,                                 itemBuilder: (context,index) {
                                  return Column(
                                     children: [

                                       Column(
                                         mainAxisAlignment: MainAxisAlignment.center,                                         crossAxisAlignment: CrossAxisAlignment.center,                                         children: <Widget>[
                                           Row(
                                             mainAxisAlignment: MainAxisAlignment.center,                                             // crossAxisAlignment:CrossAxisAlignment.center,                                             children: <Widget>[
                                               Container(

                                                 height: 32,                                                 width: 160,                                                 decoration: BoxDecoration(
                                                   color: Colors.white,                                                   border: Border.all(

                                                     width:0.5,                                                     color: Color(0xFF766F6F),                                                   ),                                                   borderRadius: BorderRadius.circular(10.0),                                                 ),                                                 child: Center(
                                                   child: Text("Catalog Item",   style: TextStyle(backgroundColor: Colors.white,                                                     color:Color(0xFF2e2a2a),                                                     fontFamily: 'Roboto',                                                     fontSize: 12,                                               ),                                               Container(
                                                 height: 32,                                                 child: Center(
                                                   child: Text(snapshot
                                                       .data.content[key][index][0].sqdFk,                                             ],                                           Row(
                                             mainAxisAlignment: MainAxisAlignment.center,                                             crossAxisAlignment:CrossAxisAlignment.center,                                                   border: Border.all(
                                                     width:0.5,                                                 child: Center(
                                                   child: Text('QTY.',                                                 child: Center(
                                                   child: Text(snapshot
                                                       .data.content[key][index][0].sohFk,],                                     ],                               ),                             )
                           ],                         );
                       });
                 }
             }
           })

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-