You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提取List<Map<String, Object>>类型rows的键值并传入TableRow构造函数

实现方案

1. 核心逻辑说明

你提供的TableRow写法存在拼写误差,标准Flutter场景下TableCell是作为TableRow的children参数传入的,以下是适配可空类型List<Map<String, Object>>?的完整实现。

2. 完整代码示例

import 'package:flutter/material.dart';

Widget buildTable(List<Map<String, Object>>? rows) {
  // 空安全校验,空数据返回占位组件
  if (rows == null || rows.isEmpty) {
    return const SizedBox.shrink();
  }

  List<TableRow> tableRows = [];

  // 【可选】生成表头行,不需要可以删除本段
  List<String> columnKeys = rows.first.keys.toList();
  tableRows.add(
    TableRow(
      // 若需要给TableRow设置唯一key,可参考:key: ValueKey('table_header')
      children: columnKeys.map((key) {
        return TableCell(
          child: Padding(
            padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12),
            child: Text(
              key,
              style: const TextStyle(fontWeight: FontWeight.bold),
            ),
          ),
        );
      }).toList(),
    ),
  );

  // 生成数据行
  for (var rowData in rows) {
    tableRows.add(
      TableRow(
        // 可自定义TableRow的key,用行内唯一值即可,示例用name当唯一标识
        key: ValueKey(rowData['name']),
        children: rowData.values.map((value) {
          // 针对不同类型的值自定义展示格式
          String showText;
          if (value is bool) {
            showText = value ? '是' : '否';
          } else {
            showText = value.toString();
          }
          return TableCell(
            child: Padding(
              padding: const EdgeInsets.symmetric(vertical: 8, horizontal: 12),
              child: Text(showText),
            ),
          );
        }).toList(),
      ),
    );
  }

  // 封装为Table组件返回
  return Table(
    border: TableBorder.all(color: Colors.grey),
    children: tableRows,
  );
}

3. 注意事项

  • 可根据业务需求调整布尔值、日期等特殊类型的格式化规则
  • 如果不需要表头,直接删除表头构造的代码段即可
  • 每行的key属性可根据实际业务唯一字段调整,无特殊需求也可以省略不写

内容的提问来源于stack exchange,提问作者Noufal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 03:36:04