flutter - 将文本文件作为文件打开后如何保存对文本文件所做的更改?
问题描述
我在内存中有一个使用 File.readAsString() 打开的文本文件。这会从中提取文本并将其保存为字符串。这被提供给 TextField() 以便可以对此文本进行更改。
如何有效地将这些更改保存回原始文件?
到目前为止,这是我的代码。一切正常,文件打开,其中的文本显示在 TextField 中。但我不知道如何将更改保存回文件..
class _NoteEditScreenState extends State<NoteEditScreen> {
TextEditingController _controller;
String startingText = '';
String fileName;
@override
void initState() {
super.initState();
getTextFromFile().whenComplete(() {
//when we read the string, extract lines from it
lines = lineSplitter.convert(startingText);
setState(() {
_controller = TextEditingController(text: startingText);
});
});
fileName = widget.txtPath.split('/').last;
}
Future getTextFromFile() async {
final file = File(widget.txtPath);
//read the file
String contents = await file.readAsString();
startingText = contents;
}
@override
Widget build(BuildContext context) {
return SafeArea(
child: Scaffold(
appBar: AppBar(
title: Text(fileName),
backgroundColor: Colors.teal,
centerTitle: true,
actions: <Widget>[
IconButton(
icon: Icon(Icons.search),
onPressed: (){
showSearch(context: context, delegate: TextSearch(lines));
},
),
],
),
body: Center(
child: Container(
padding: EdgeInsets.all(5.0),
//height: 50.0,
child: TextField(
maxLines: null,
controller: _controller,
decoration: InputDecoration(
enabledBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.teal),
//borderRadius: BorderRadius.all(Radius.circular(20.0))
),
focusedBorder: OutlineInputBorder(
borderSide: BorderSide(color: Colors.red),
//borderRadius: BorderRadius.all(Radius.circular(20.0))
),
),
),
),
),
我看到它发生的方式是删除旧文件并创建一个同名的新文件。这是最好的方法吗?或者你们能推荐一个更好的方法吗?
解决方案
要写入文件,您可以使用
yourFile.writeAsString(contents)
或 yourFile.writeAsStringSync(contents)
。
如果writeAsString
您不想等待文件完全写入或不想阻止应用程序执行,或者writeAsStringSync
如果您想阻止应用程序在完成写入之前继续运行,请使用。
推荐阅读
- python - ModuleNotFoundError:没有名为“websocket”的模块(Python、Anaconda)
- python - Python If And 语句在 Dataframe 中抛出 KeyError 9
- python - 在 SQLAlchemy 中引用连接对象属性
- c++ - C++代码值错误,计算阶乘
- http - 如何在 PhpStorm 中测试 HTTP 请求
- algorithm - 找到最小化评估函数的元素的最佳组合
- python - 读取带有标题的 JSON 文本文件并仅将指定标题下的数据检索到 Python 中的变量中
- html-table - 关于 Html 表上的行的最新跨越问题的问题
- python - Windsws 系统 (Python) 中的 Epoch 1970
- reactjs - 即使在 plesk 服务器上的 react 应用程序构建中配置了 .htaccess 文件后,我也得到了一个空白页