Flutter 读写本地文件
注意
- 安装 path_provider 插件后重启f5, 而不是等待热更新
demo
import 'dart:io';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Ajnauw',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key}) : super(key: key);
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String value; // 每次input的值
String allText = ''; // 从本地文件获取的值
/**
* 此方法返回本地文件地址
*/
Future<File> _getLocalFile() async {
// 获取文档目录的路径
Directory appDocDir = await getApplicationDocumentsDirectory();
String dir = appDocDir.path;
final file = new File('$dir/demo.txt');
// print(file);
return file;
}
/**
* 保存value到本地文件里面
*/
void _saveValue() async {
try {
File f = await _getLocalFile();
IOSink slink = f.openWrite(mode: FileMode.append);
slink.write('$value\n');
// await fs.writeAsString('$value');
setState(() {
value = '';
});
slink.close();
} catch (e) {
// 写入错误
print(e);
}
}
/**
* 读取本地文件的内容
*/
void _readContent() async {
File file = await _getLocalFile();
// 从文件中读取变量作为字符串,一次全部读完存在内存里面
String contents = await file.readAsString();
setState(() {
allText = contents;
});
}
// 清空本地保存的文件
void _clearContent() async {
File f = await _getLocalFile();
await f.writeAsString('');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('demo'),
),
body: ListView(
children: <Widget>[
Container(
padding: EdgeInsets.all(8.0),
child: Row(
children: <Widget>[
Expanded(
child: Container(
margin: EdgeInsets.only(right: 16.0),
child: TextField(
controller: TextEditingController(
text: value,
),
onChanged: (String v) {
value = v;
},
onSubmitted: (String r) {
value = r;
},
),
),
),
RaisedButton(
color: Theme.of(context).primaryColor,
onPressed: _saveValue,
child: Text('保存'),
),
],
),
),
Container(
child: Column(
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
RaisedButton(
color: Theme.of(context).accentColor,
onPressed: _readContent,
child: Text('获取本地数据'),
),
RaisedButton(
color: Colors.red,
textColor: Colors.white,
onPressed: _clearContent,
child: Text('清空本地数据'),
),
],
),
Container(
padding: const EdgeInsets.all(16.0),
child: Text('''$allText'''),
),
],
),
),
],
),
);
}
}
Flutter 读写本地文件的更多相关文章
- 利用Lua读写本地文件
缘由 今天在使用Lua编写脚本时,需要用到读写文件的操作,很久没有使用Lua了,特写下此文来备忘一下. 简介 Lua对文件的操作与C对文件的操作基本一致,不管是参数还是方法.Lua中可以直接通过全局方 ...
- node读写本地文件
http://nodejs.cn/api/fs.html#fs_fs_writefilesync_file_data_options https://www.cnblogs.com/diaosizha ...
- ios本地文件内容读取,.json .plist 文件读写
ios本地文件内容读取,.json .plist 文件读写 本地文件.json .plist文件是较为常用的存储本地数据的文件,对这些文件的操作也是一种常用的基础. 本文同时提供初始化变量的比较标准的 ...
- Android View转为图片保存为本地文件,异步监听回调操作结果;
把手机上的一个View或ViewGroup转为Bitmap,再把Bitmap保存为.png格式的图片: 由于View转Bitmap.和Bitmap转图片都是耗时操作,(生成一个1M的图片大约500ms ...
- JavaWeb 项目,更改本地文件需刷新才有效问题 (tomcat相关)
问题 如果JavaWeb项目需要读取实时更新的本地文件内容,可能遇到必须在更新后手动refresh才能有效的问题. 原因 这是由于项目实际上是运行在Tomcat中,而非本地的工作目录.eclipse可 ...
- Android Studio上手,基于VideoView的本地文件及流媒体播放器
既然是第一个Android程序.少不了要Hello World. 1. 新建安卓project watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm0wNTE ...
- angular 读写电脑本地文件
angular 读写本地电脑文件 angular将数据写进到电脑文件 在前端写一个按钮,然后点击按钮的时候在本地电脑保存一个text文件. 这时候我们需要用到一个angular的插件,叫做" ...
- C 本地文件夸网文件Cp操作
1,linux平台C简单实现本地文件cp 码子及运行效果测试
- iOS 文件和数据管理 (可能会删除本地文件储存)
转自:http://www.apple.com.cn/developer/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgramm ...
随机推荐
- Cardinality
Cardinality: 优化器在计算成本的时候,需要从统计信息中取得数据,然后去估计每一步操作所涉及的行数,叫做Cardinality. 比如,一张表T有1000行数据,列COL1上没有直方图,没有 ...
- <A>标记onclick事件
<script> function ss() { document.getElementById("btnPublicity").click(); }</scri ...
- ffmypeg 视频处理类库使用方法
(经常用到ffmpeg 做一些视频数据的处理转换等,用来做测试,今天总结了一下,参考了网上部分朋友的经验,一起在这里汇总了一下,有需要的朋友可以收藏测试一下,有问题欢迎在下面回帖交流,谢谢;by te ...
- C++简单交换堆排序的代码
下面的内容内容是关于C++简单交换堆排序的内容,应该对各位朋友有较大用途. { int start, end; { }} { int root, child; { if((child + 1 < ...
- python单元测试框架unittest总结
unittest.TestCase:TestCase类,所有测试用例类继承的基本类. class BaiduTest(unittest.TestCase): TestCase类的属性如下: setUp ...
- inotify+rsync文件实时同步报错:usr/local/bin/inotifywait: error while loading shared libraries: libinotifytools.so.0:
解决办法: ln -sv /usr/local/lib/libinotify* /usr/lib/ /usr/lib64/libinotifytools.so.
- github配置ssh密钥的方法
配置用户名和邮箱 初次安装git需要配置用户名和邮箱,否则git会提示:please tell me who you are. 你需要运行命令来配置你的用户名和邮箱: $ git config --g ...
- Redis 学习目录
Redis in .NET Core 入门 Redis实战 - 1.String和计数器 Redis实战 - 2.list.set和Sorted Set Redis实战 - 4.Key Redis实战 ...
- Explanation About Initilizing A DirextX3D Class 关于初始化Direct3D类的解释
目录 DirectX11 Study Note Create a DirectX graphics interface factory.创建一个DirectX图形界面工厂 CreateDXGIFact ...
- Redis持久化之RDB
本文及后续文章,Redis版本均是v3.2.8 上篇文章介绍了RDB的优缺点,我们先来回顾下RDB的主要原理,在某个时间点把内存中所有数据保存到磁盘文件中,这个过程既可以通过人工输入命令执行,也可以让 ...