如何组织`List<List<String>>`类型的数据

Posted

技术标签:

【中文标题】如何组织`List<List<String>>`类型的数据【英文标题】:How to organize the data of type `List<List<String>>` 【发布时间】:2021-08-05 22:04:13 【问题描述】:

我有一个来自Map&lt;String, dynamic&gt;List&lt;List&lt;String&gt;&gt;

这是List&lt;List&lt;String&gt;&gt;的代码 tab 是 Tablet Class 类型的对象。

Map<String, dynamic> demo = 'Uses': [tab.usesTitle, tab.usesBody], 'Safety Advices': [tab.safetyAdvTitle, tab.safetyAdvBody];

平板对象

Tablet tab = Tablet(
    usesTitle:  ['Pain Relief', 'Fever'],
    usesBody:  ['Pain Relief Details.....', 'Fever Details.....'],
    safetyAdvTitle:  ['Alcohol','Kidney' ],
    safetyAdvBody:  ['Alcohol Details...', 'Kidney Details...'],
);

我尝试了什么

demo.forEach((k, v)
    v.forEach((y)
      print(y.join('\n'));
    );
);

电流输出

Uses
Pain Relief
Fever
Pain Relief Details.....
Fever Details.....
Safety Advices
Alcohol
Kidney
Alcohol Details...
Kidney Details...

我想要这样

Uses
Pain Relief
Pain Relief Details.....
Fever
Fever Details.....

Safety Advices
Alcohol
Alcohol Details...
Kidney
Kidney Details...

实际上是演示所以只是打印值。在现实世界中,我将使用Widgets。所以当时forEachwon't work。所以需要没有forEach 的解决方案。

更新 我可以执行下拉菜单的功能,但 Text() 小部件应按此顺序一一对齐。 在此下方还有一张带有相同设计的安全建议的卡片。

【问题讨论】:

打印(tab.usesTitle.first.usesTitle);打印(tab.usesTitle.first.usesBody);打印(tab.usesTitle.last.usesBody);打印(tab.usesTitle.last.usesTitle); 【参考方案1】:

你为什么要避免forEach,无论你有数组,你也可以有forEachmap等,

试试这个,

Map<String, dynamic> demo = 
  'Uses': [
    ['Pain Relief', 'Fever'],
    ['Pain Relief Details.....', 'Fever Details.....'],
  ],
  'Safety Advices': [
    ['Alcohol', 'Kidney'],
    ['Alcohol Details...', 'Kidney Details...']
  ]
;


List<Widget> widgets = [];

demo.forEach((key, value) 
  for (int i = 0; i < value[0].length; i++) 
    for (int j = 0; j < value.length; j++) 
      // Inside this loop, j = 0 means your Heading and j = 1 means the content
      widgets.add(Text(
        (value[j] as List)[i],
        style: TextStyle(fontWeight: j == 0 ? FontWeight.bold : null),
      ));
    
  
);

然后,使用您创建的小部件数组作为childrenColumn

这将是输出。

【讨论】:

正如我最后所说,我需要使用小部件而不是 print() 语句,无法在 forEach 中创建小部件。出于演示目的,我在这里使用了print。在这种情况下,使用map() 很棒,但我正在尝试。 你能详细说明你的例子吗?尝试更新有关您想如何使用这些小部件的问题? 感谢您的时间,更新了问题,我添加了一张图片,我可以管理下拉菜单的功能。 card-body 包含一个Text(),应该是这个顺序。 还有一点,demo 中不仅存在单个值。许多 dynamic 值现在更新。 @ShashankGb 更新了答案。看看吧。

以上是关于如何组织`List<List<String>>`类型的数据的主要内容,如果未能解决你的问题,请参考以下文章

java 如何将一个list中的值全部复制到另一个list中?

擦除在 Kotlin 中是如何工作的?

递归方法,查询出树该组织及以下组织的组织ID

Java中List集合遍历的三种方式

Set集合转化List集合

比较 list<string> 和 vector<string> 中的字符串元素