csv Flutter / Android无法正确访问文件,但Web可以

prdp8dxp  于 2023-03-27  发布在  Flutter
关注(0)|答案(1)|浏览(124)

我有一个名为final.csv的文件,它位于flutter项目的assets文件夹中。

assets:
  - assets/final.csv

当运行Chrome浏览器的代码,这完美的工作,所以我知道文件是可访问的,而不是空的,因为数据被正确解析.但当我运行这个与Android Studio的Android模拟器,它返回我的错误无法解析文件.我已经尝试了一百万零一个想法,但我不能得到它太工作.
如果我上传文件到服务器,并更改代码从URL拉文件,它的工作完美,但我不希望它太拉数据每次加载页面。
任何明显我遗漏的东西。

Future<List<Map<String, dynamic>>> fetchMarkers() async {
try {
    // Load the local file from the assets folder
    final csvFullString = await rootBundle.loadString('final.csv');

    // Parse the CSV content
    final csvFullList = const CsvToListConverter().convert(csvFullString);
    final dataRows = csvFullList.sublist(1); // Remove the header row
    final markers = dataRows
        .map((row) => {
              'name': row[0],
              'area': row[1],
              'road': row[2],
              'easting': row[3],
              'northing': row[4]
            })
        .toList();

    print('Parsing complete');
    return markers;
  } catch (e) {
    throw Exception('Failed to load markers: $e');
  }
}

短暂性脑缺血发作

rkttyhzu

rkttyhzu1#

你能试着把final.csv的加载方式改为:

final csvFullString = await rootBundle.load('assets/final.csv');

我没有尝试解析csv文件(懒得处理),但在我的例子中,它肯定是将csv文件的内容加载到对象csvFullString中。你的问题似乎是loadString,因为你试图加载一个二进制文件(.csv)而不是一个String。
希望这能回答问题。

相关问题