Flutter/dart仅在Android 32+上阅读CSV文件的第一行

eqqqjvef  于 2023-03-24  发布在  Flutter
关注(0)|答案(1)|浏览(97)

在我的Flutter应用程序中,我在Android 32+上从设备阅读文件时遇到问题。任何低于32的Android版本都允许我使用file.readAsStringSync()读取CSV文件的所有行,但当我尝试在Android版本32或更高版本上运行相同的代码时,它只返回文件的第一行(CSV头行)。我使用文件选择器库来选择文件,但下面的代码一直工作到Android 32(头行都是正确的,但这是文件中唯一被读取的部分)。

var result = await FilePicker.platform.pickFiles(type: FileType.custom, allowedExtensions: ['csv']);
if (result == null) return null;

File file = File(result.files.single.path!);
var csvString = file.readAsStringSync();

有没有其他人经历过这个问题或者能够重现这个问题并有办法解决它?

mctunoxg

mctunoxg1#

您可以使用此功能

Future<List<List<dynamic>>> convertCsvStringToList(String csvString, bool hasHeader) async {
  List<List<dynamic>> rowsAsListOfValues = CsvToListConverter(
      eol: '\n', fieldDelimiter: ',').convert(csvString);
  if (hasHeader) {
    rowsAsListOfValues.removeAt(0); // Remove the header row
  }
  return rowsAsListOfValues;
}

相关问题