首页 > 解决方案 > 转换地图数据到类数据

问题描述

在我的应用程序和一个屏幕中,我将类数据传递Map<String,dynamic>到另一个屏幕,

onTap: (){
  Map<String,dynamic> dataMap = Map<String,dynamic>();
  dataMap['id']=tickets[index].id;
  dataMap['subject']=tickets[index].subject;
  dataMap['createdAt']=tickets[index].createdAt;
  dataMap['ticketNumber']=tickets[index].ticketNumber;

  Navigation.router.navigateTo(context, 'showTicketReplies/$dataMap',transition: TransitionType.fadeIn);
  },

在另一个屏幕中,我可以使用以下结构获取此数据:

widget.ticketData = {_InternalLinkedHashMap} size = 1
 0 = {map entry} "id" -> [_GrowableList]
  key = "id"
  value = {_GrowableList} size = 1
   0 = "{
           id: 1, 
           subject: hello world, 
           createdAt: 2019-01-01, 
           ticketNumber: 3381
        }"

现在我想用这个数据制作简单的类变量:

TicketsTableData get _ticket => TicketsTableData.fromJson(widget.ticketData.values.toList()[0][0]);

widget.ticketData.values.toList()[0][0]值是:

{id: 1, subject: hello world, createdAt:2019-01-01, ticketNumber: 3381}

但是当我尝试它时,我得到了这个错误:

type 'String' is not a subtype of type 'Map<String, dynamic>'

更新

我想我应该json在制作类数据之前将其转换为。例如:

TicketsTableData get _ticket => TicketsTableData.fromJson(json.encode(widget.ticketData.values.toList()[0][0].toString()));

但我json没有任何报价

标签: flutterdart

解决方案


问题解决了!!!

onTap: (){
  var dataMap ={};
  dataMap["id"]           = tickets[index].id;
  dataMap["subject"]      = tickets[index].subject;
  dataMap["createdAt"]    = tickets[index].createdAt;
  dataMap["ticketNumber"] = tickets[index].ticketNumber;

  Navigation.router.navigateTo(context, 'showTicketReplies/${json.encode(dataMap)}',transition: TransitionType.fadeIn);
},

推荐阅读