如何从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
相关产品推荐
相关产品推荐

