dart - 如何在 flutter 中动态添加项目到表中?

标签 dart flutter

有人知道如何在 Flutter 的 DataTable 中动态添加更多行吗?如您所见,我的代码非常“硬编码”[行:11-31]。
应该有一种方法可以摆脱编写越来越多的数据行。

代码:

class DataTableWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return DataTable(
      columns: [
        DataColumn(label: Text('Patch')),
        DataColumn(label: Text('Version')),
        DataColumn(label: Text('Ready')),
      ],
      rows: <DataRow>[
        DataRow(
          cells: <DataCell>[
            DataCell(Text('AAAAAA')),
            DataCell(Text('1')),
            DataCell(Text('Yes')),
          ],
        ),
        DataRow(
          cells: <DataCell>[
            DataCell(Text('BBBBBB')),
            DataCell(Text('2')),
            DataCell(Text('No')),
          ],
        ),
        DataRow(
          cells: <DataCell>[
            DataCell(Text('CCCCCC')),
            DataCell(Text('3')),
            DataCell(Text('Yes')),
          ],
        ),
      ],
    );
  }
}

最佳答案

你可以使用

listOfColumns.map(((element) => DataRow(...))).toList()

这是您使用此方法的代码。

class DataTableWidget extends StatelessWidget {
  final List<Map<String, String>> listOfColumns = [
    {"Name": "AAAAAA", "Number": "1", "State": "Yes"},
    {"Name": "BBBBBB", "Number": "2", "State": "no"},
    {"Name": "CCCCCC", "Number": "3", "State": "Yes"}
  ];
//  DataTableWidget(this.listOfColumns);     // Getting the data from outside, on initialization
  @override
  Widget build(BuildContext context) {
    return DataTable(
      columns: [
        DataColumn(label: Text('Patch')),
        DataColumn(label: Text('Version')),
        DataColumn(label: Text('Ready')),
      ],
      rows:
          listOfColumns // Loops through dataColumnText, each iteration assigning the value to element
              .map(
                ((element) => DataRow(
                      cells: <DataCell>[
                        DataCell(Text(element["Name"])), //Extracting from Map element the value
                        DataCell(Text(element["Number"])),
                        DataCell(Text(element["State"])),
                      ],
                    )),
              )
              .toList(),
    );
  }
}

关于dart - 如何在 flutter 中动态添加项目到表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53997496/

相关文章:

Flutter 3.0 显示错误 : WidgetsBinding. instance!.addPostFrameCallback((_) => widget.onReady.call());

list - ListView 中一次只显示一个项目

gridview - Flutter GridView 页脚(用于指示无限滚动的负载)

dart - 当应用进入前台或后台时,AppLifcycleState.didChangeLifecycleState( ) 函数不会被调用

flutter - 为什么子 Bottom Sheet 状态的变化会触发父窗口小部件的重建?

flutter - 如何通过 Sentry 发送设备信息

dart - 为什么e.currentTarget.id显示警告?

flutter - 如何去除圆角的背景颜色

html - 根据媒体加载特定的 .dart 文件

android - 异步并在 flutter 朔迷离中等待