flutter - 如何将字符串转换为列表
问题描述
我有一个列表,其中包含几个键和值,然后将它们映射到要显示的 DataTable 中。
List<Map<String, String>> listOfColumns = [
{"Name": "John", "Number": "1", "State": " "},
{"Name": "Brad", "Number": "2", "State": " "},
{"Name": "Ryan", "Number": "3", "State": " "},
{"Name": "Grant", "Number": "4", "State": " "},
];
现在,我希望保存数据表中的数据。所以我简单地使用文件 IO 系统创建了一个名为 _save() 和 _read() 的异步函数,在 _save() 中我将 listOfColumns 转换为字符串。
_read() async {
try {
final directory = await getExternalStorageDirectory();
final file = File('${directory.path}/my_file.txt');
text = await file.readAsString();
} catch (e) {
print("Couldn't read file");
}
}
_save() async {
final directory = await getExternalStorageDirectory();
final file = File('${directory.path}/my_file.txt');
final List<Map<String, String>> data = listOfColumns;
await file.writeAsString(data.toString());
print('saved');
}
现在,当涉及到从文件中读取数据时,事情是这样的——我实际上如何将变量文本转换回List<Map<String,String>>
?我完全不知道如何实现这一目标。非常感谢任何帮助。谢谢。
解决方案
您实际上应该首先将其保存为JSON(使用jsonEncode
然后您可以轻松地将其转换回来:
Future<void> _save() async {
...
final jsonString = jsonEncode(listOfColumns);
await file.writeAsString(jsonString);
}
现在,您可以使用以下方法轻松加载数据jsonDecode
:
Future<void> _read() async {
...
final decoded = jsonDecode(await file.readAsString()) as List;
listOfColumns = decoded.cast<Map<String, dynamic>>()
.map((map) => map.cast<String, String>()).toList();
}
推荐阅读
- php - 无法使用 number_format 格式化我的计算
- c - 使用 cairo.h 创建渐变动画
- networking - 如何将外部 IP 转发到本地托管的 websocket 服务器?
- google-colaboratory - 已加载运行时 CuDNN 库:8.0.5,但源代码编译为:8.1.0 Tensorflow2 对象检测
- adobe-analytics - Adobe Analytics 中的“保留变量”是什么?
- git - 我可以将一个本地 git 存储库与两个远程存储库一起使用吗?
- python - 总结列表中接近特定数字的数字
- python-3.x - 如何仅在用户打印/关闭窗口后关闭打印窗口|| 如何使用 QPrintPreviewDialog 预览图像
- python - 需要用 Python 实现的树形数据结构
- android - 几分钟后 Chrome 远程 DevTools 连接断开