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 ...
随机推荐
- day10 函数的定义及函数语法详解
""" 今日内容: (1)函数的定义及特点 (2)函数的语法及函数的四部分 (3)函数的分类 (4)函数的调用 (5)函数的return详解 一.函数的定义 1.什么是函 ...
- .Net ABP 框架 service 无法访问
最近在看ABP框架,按照文档写好service后,怎么也访问不到,后来发现,忘记把service类设置为public的了! 不写public ABP框架就不能将这个service映射为controll ...
- asp.net core 发布到iis session无法传递的问题
网站是用asp.net core 的Razor Pages开发的,其中用户登录用到了session,调试运行没有问题,但是发布到iis之后出现session无法记录的问题. 我用log记录查看了一下, ...
- 如何设置PDF签名文档,PDF签名文档怎么编辑
在工作中我们都会遇到有文件需要签名的时候,如果是在身边就直接拿笔来签名了,那么如果没有在身边又是电子文件需要签名的时候应该怎么办呢,这个时候就应该设置一个电子的签名文档,其他的文件电子文件签名很简单, ...
- Nginx 中利用 Lua 脚本做访问控制
使用场景 需要在后端服务之前做访问控制,或没有后端服务的场景,如静态文件. 实验环境 Ubuntu 14.04 Nginx 1.4.6 安装 Lua 运行环境 sudo apt-get install ...
- md5加密 bas64加密
/** * 获取bas64加密的算法 * @param str * @return */ public static String getBase64(String str) { byte[] b = ...
- plsql developer 中文乱码(???)解决办法
添加环境变量 变量名称: NLS_LANG 内容: SIMPLIFIED CHINESE_CHINA.ZHS16GBK 再次新插入的数据就不会乱码了
- 末学者笔记--shell编程上 1 玄
Shell 编程 [内容简列]: 1.shell简介 2. shell分类 3. 查看shell 4. 第一个shell脚本 5. shell编程常用命令 5.1 grep 5.2 cut 5.3 s ...
- centos6.9关闭防火墙
/etc/init.d/iptables stop 临时关闭防火墙, chkconfig iptables off 永久关闭防火墙 查看防火墙状态 chkconfig --list i ...
- ansible playbook批量改ssh配置文件,远程用户Permission denied
最近手里的数百台服务器需要改/etc/ssh/sshd_config的参数,禁止root直接登陆,也就是说 [root@t0 ~]# cat /etc/ssh/sshd_config | grep R ...