无法通过硬编码数据创建类实例

Posted

技术标签:

【中文标题】无法通过硬编码数据创建类实例【英文标题】:Can't create class instances via hard coded data 【发布时间】:2020-10-28 07:05:39 【问题描述】:

尝试创建实例以便通过小部件树正确传递数据,我从字符串/整数列表开始,并将创建一个实例列表,其中子列表的每个索引都存储在实例中.将硬编码数据手动传递到类初始化程序中很麻烦,我的数据已经存储在一个列表中,我尝试过映射和循环列表,但似乎没有任何效果。如何从现有的硬编码数据结构自动创建类实例?

我最终只是将列表复制到 python 并运行一个脚本来创建在 dart 中表示正在初始化的类的字符串,从那里我将脚本粘贴到 dart 中。但将来我想从硬编码数据转到类实例而不切换语言。下面是我在 Flutter 中尝试过的一个示例。

`
    Class Item
    final String x;
    final int mula;
    Item(this.x, this.y)
    

    var data = [["hog", 22]["meow", 55]];

    List<Item> = data.map((item)=> Item(item[0],item[1])).toList();

` 应该给出输出 [Item(hog,22) etc.

【问题讨论】:

【参考方案1】:

您的代码有一些语法错误,例如 Class(大写 C),而不是 class,并且您的 data 列表中的 2 个子列表之间也缺少逗号,并且类变量没有与您在构造函数中传递的内容相匹配。试试下面的代码。您可以在DartPad 进行测试。

class Item 
  final String x;
  final int y;
  Item(this.x, this.y);


void main() 

  var data = [
    ["hog", 22],
    ["meow", 55]
  ];

  List<Item> listItem = [];
  
  data.forEach((item) 
    listItem.add(Item(item[0], item[1]));
  );

  print(listItem[0].x);

 

【讨论】:

以上是关于无法通过硬编码数据创建类实例的主要内容,如果未能解决你的问题,请参考以下文章

java硬编码数据校验

通过 findById 访问活动布局中的硬编码片段

获取Android中所选图库图像的文件路径和文件名

从硬编码数组而不是 DB 创建游标

将一个类从viewModel绑定到一个div,并在knockout中使用现有的硬编码类

删除 C# 中重复的硬编码循环和条件