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

Flutter将CSV转换为List<List<dynamic>> 按二维索引访问字段问题咨询

解决方案

问题核心是csv包的CsvToListConverter默认使用英文逗号,作为字段分隔符,而你的CSV文件采用分号;作为分隔符,因此不会自动拆分每行的字段,导致整行内容被识别为单个元素。

直接修改openFile方法里的转换器配置即可,修改后的代码如下:

void openFile(filePath) async {
    File itemsFile = File(filePath);
    print('CSV to List');
    final input = itemsFile.openRead();
    // 新增fieldDelimiter参数指定分隔符为分号
    final fields = await input
        .transform(utf8.decoder)
        .transform(const CsvToListConverter(fieldDelimiter: ';'))
        .toList();
    print(fields);
    for(var i = 0; i < fields.length; i++){
      print(fields[i][0]); // 输出对应行的第一个字段,如第一行输出 item 1
      print(fields[i][1]); // 输出对应行的第二个字段,如第一行输出 1200
      print(fields[i][2]); // 输出对应行的第三个字段,如第一行输出 1300
    }
  }
额外说明
  • 如果你的CSV存在其他特殊配置,还可以调整CsvToListConverter的其他参数,比如textDelimiter指定文本包裹符、eol指定换行符、shouldParseNumbers设置是否自动将数字字符串转为int/double类型。
  • 修改后输出的结构就会是[["item 1", 1200, 1300], ["item 2", 1200, 1300]],完全支持通过二维数组索引直接访问对应字段。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 17:54:03