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

问题描述

我有来自 List<List<String>>Map<String,dynamic>

这是List<List<String>>代码
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。所以当时forEach won't work。所以不需要 forEach解决方案。

已更新
我可以做下拉的功能,但是 Text() 小部件应该按照这个顺序一个一个对齐。
在此下方还有一张具有相同设计的安全建议卡片。

Image

解决方法

你究竟为什么要避免 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

这将是输出。

enter image description here