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

如何在Flutter中用List<String>遍历同时显示SQLite列名与对应值

解决方案

1. 简化fetchRecord函数,避免定义大量字段变量

不需要为每个列单独定义变量,直接从返回的第一条记录中取出完整的Map对象,后续直接通过键名取值即可:

bool isLoading = true;
// 改为存储单条记录的Map,而非List
Map<String, dynamic>? currentRecord;

void fetchRecord(int recordId) async {
  final data = await SQLiteMethods.getRecord(recordId);
  setState(() {
    // 直接取第一条记录存入单个Map,处理空数据情况
    currentRecord = data.isNotEmpty ? data[0] : null;
    isLoading = false;
  });
}

2. 遍历列名列表,动态显示列名与对应值

在UI中遍历columnsList时,通过currentRecord的键名直接获取对应值,同时处理空值与类型转换:

// 先处理加载状态,避免数据未就绪时出错
if (isLoading) {
  return const CircularProgressIndicator();
}

return Column(
  crossAxisAlignment: CrossAxisAlignment.start,
  children: [
    for (var columnName in columnsList)
      Text(
        '$columnName: ${currentRecord?[columnName]?.toString() ?? ''}'
      ),
  ],
);

关键说明

  • currentRecord?[columnName]:用空安全操作符避免currentRecord为null时抛出异常
  • ?.toString() ?? '':将数据库返回的任意类型值转为字符串,若值为null则显示空字符串
  • 必须先判断isLoading状态,确保数据加载完成后再渲染内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:20:28