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

如何从Flutter类列表动态构建PlutoGrid行?

从自定义类列表动态生成PlutoGrid行

要将ActivitiesSummaryReportLine列表转换为PlutoGrid所需的PlutoRow列表,核心是通过映射类实例的字段到PlutoCell来实现,不需要专门的构建器方法,直接用Dart的集合操作即可。

1. 定义PlutoGrid的列配置

先对应要展示的字段(fullName和amount)定义列:

final List<PlutoColumn> columns = [
  PlutoColumn(
    title: '姓名',
    field: 'fullName',
    type: PlutoColumnType.text(),
  ),
  PlutoColumn(
    title: '金额',
    field: 'amount',
    type: PlutoColumnType.number(format: '#,###.00'),
  ),
];

2. 将类列表转换为PlutoRow列表

假设你已有List<ActivitiesSummaryReportLine>格式的数据源,通过map方法逐个转换为PlutoRow:

// 示例数据源
List<ActivitiesSummaryReportLine> reportLines = [
  ActivitiesSummaryReportLine(fullName: 'Mike', amount: 200.50),
  ActivitiesSummaryReportLine(fullName: 'Jack', amount: 450.00),
  ActivitiesSummaryReportLine(fullName: 'Suzi', amount: 780.25),
];

// 转换为PlutoRow列表
final List<PlutoRow> rows = reportLines.map((line) {
  return PlutoRow(
    cells: {
      'fullName': PlutoCell(value: line.fullName),
      'amount': PlutoCell(value: line.amount),
    },
  );
}).toList();

3. 在PlutoGrid中使用组件

把定义好的columns和rows传入PlutoGrid:

PlutoGrid(
  columns: columns,
  rows: rows,
  onChanged: (PlutoGridOnChangedEvent event) {
    // 可选:处理单元格变更逻辑
  },
)

补充说明

  • 如果数据来自JSON,先通过ActivitiesSummaryReportLine.fromJson将JSON数组解析为类列表,再执行上述转换步骤。
  • 列的field属性必须和PlutoRow中cells的key完全一致,否则PlutoGrid无法匹配数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 10:30:52