Flutter中已生成的CSV文件存在但无法加载,求解决方案
问题解决:加载外部存储的CSV文件
你的问题出在错误使用了rootBundle.loadString()方法——这个方法仅用于读取应用打包时内置的assets资源文件,无法读取设备外部存储中生成的文件。要读取外部存储的CSV文件,需直接使用File类的读取方法。
修改后的_loadedCSV()代码如下:
_loadedCSV() async { if (await Permission.storage.request().isGranted) { String dir = (await getExternalStorageDirectory())!.path; String filep = "$dir/csvdatasave.csv"; print(filep); // 用File类读取外部存储文件,替换rootBundle File file = File(filep); if (await file.exists()) { // 先判断文件是否存在,避免报错 final _rawData = await file.readAsString(); _loadlistData = const CsvToListConverter().convert(_rawData); print("from csv"); print(_loadlistData); print("loaded from csv file "); } else { print("文件不存在,请先生成CSV"); } } else { Map<Permission, PermissionStatus> statuses = await [ Permission.storage, ].request(); } }
关键修改点:
- 替换
rootBundle.loadString(filep)为File(filep).readAsString(),直接操作外部存储文件 - 增加
file.exists()判断,提前处理文件不存在的情况,避免抛出异常
内容的提问来源于stack exchange,提问作者Jerome George
相关产品推荐
相关产品推荐

