如何在颤振/飞镖的多级下拉菜单中使用此 Json

Posted

技术标签:

【中文标题】如何在颤振/飞镖的多级下拉菜单中使用此 Json【英文标题】:How to use this Json inside a Multi level drop Down Menu in flutter/dart 【发布时间】:2021-12-24 13:03:38 【问题描述】:

   "cars": 

     "Nissan": [

        "model": "Sentra", "doors":4,
        "model": "Maxima", "doors":4,
        "model": "Skyline", "doors":2
     ],

     "Ford": [

        "model": "Taurus", "doors":4,
        "model": "Escort", "doors":4
     ]
  
 

我想将 json 解析为类对象并在多级下拉列表中使用它。我正在努力在下拉菜单按钮内进行映射

【问题讨论】:

【参考方案1】:

这是您的数据的模型类,借助 fromJson 函数,您可以将您的 json 数据转换为类对象,并可以根据模型类的结构访问它。

模型类生成Link

  class CarsData 
  Cars cars;

  CarsData(this.cars);

  CarsData.fromJson(Map<String, dynamic> json) 
    cars = json['cars'] != null ? new Cars.fromJson(json['cars']) : null;
  

  Map<String, dynamic> toJson() 
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.cars != null) 
      data['cars'] = this.cars.toJson();
    
    return data;
  


class Cars 
  List<Nissan> nissan;
  List<Ford> ford;

  Cars(this.nissan, this.ford);

  Cars.fromJson(Map<String, dynamic> json) 
    if (json['Nissan'] != null) 
      nissan = new List<Nissan>();
      json['Nissan'].forEach((v) 
        nissan.add(new Nissan.fromJson(v));
      );
    
    if (json['Ford'] != null) 
      ford = new List<Ford>();
      json['Ford'].forEach((v) 
        ford.add(new Ford.fromJson(v));
      );
    
  

  Map<String, dynamic> toJson() 
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.nissan != null) 
      data['Nissan'] = this.nissan.map((v) => v.toJson()).toList();
    
    if (this.ford != null) 
      data['Ford'] = this.ford.map((v) => v.toJson()).toList();
    
    return data;
  


class Nissan 
  String model;
  int doors;

  Nissan(this.model, this.doors);

  Nissan.fromJson(Map<String, dynamic> json) 
    model = json['model'];
    doors = json['doors'];
  

  Map<String, dynamic> toJson() 
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['model'] = this.model;
    data['doors'] = this.doors;
    return data;
  

【讨论】:

感谢您的回复,我需要帮助才能在多级下拉菜单中使用这些数据类。你能帮忙吗 你能给我看看你的多级下拉 UI 示例吗?

以上是关于如何在颤振/飞镖的多级下拉菜单中使用此 Json的主要内容,如果未能解决你的问题,请参考以下文章

你如何在颤振飞镖中渲染脚本标签

使用嵌套的对象数组创建多级下拉列表

如何使用 Bootstrap 4 和 Angular 7 在导航栏中制作多级下拉菜单

Angular 5 Material 如何将下拉菜单添加到多级轮播样式的 SideNav?

如何在颤振/飞镖中创建泛型类型的对象?

颤振/飞镖:如何在飞镖 FFI 中使用异步回调?