flutter 生成文档_flutter 如何实现文件读写(使用篇)
flutter文件读写可以对磁盘文件进行操作,实现某些业务场景,那么我们开始来讲下这个文件读写操作。
使用的库插件(package)
dart:io(用于数据处理)
path_provider (用于获取路劲)
操作步骤
1.获取正确的本地路径
2.创建指向文件位置的引用
3.写入数据到文件内
4.从文件读取数据
**1.获取正确的本地路径 **
我们获取路劲用的是这个插件
path_provider
可以看到里面提供了两个获取路劲的方式
Example
Directory tempDir = await getTemporaryDirectory();
String tempPath = tempDir.path;
Directory appDocDir = await getApplicationDocumentsDirectory();
String appDocPath = appDocDir.path;
getTemporaryDirectory:【临时文件夹】
也就是系统可以随时清空的临时缓存文件夹,在IOS中对应NSTemporaryDirectory在安卓中对应getCacheDir()
我们来将信息储存在临时文件夹中,首先我们创建一个Storage类里面开始写
class Storage {
Future get _localPath async {
final _path = await getTemporaryDirectory();
return _path.path;
}
}
**2.创建指向文件位置的引用 **
确定文件储存位置之后,导入我们的io库,使用包里面的File类做泛型,然后获取路劲并且指向我们的文件名
Future get _localFile async {
final path = await _localPath;
return File('$path/counter.txt');
}
**3.写入数据到文件内 **
现在有了可以使用的File,直接就可以来读写数据了,因为我们使用了计数器,所以只需将证书储存为字符串格式,
使用“$counter”即可(解析成整数方法在下一步)
Future writeCounter(counter) async {
final file = await _localFile;
return file.writeAsString('$counter');
}
4.从文件读取数据
现在可以直接用file类来读取文件数据,然后用int的自带解析方法来解析我们读取的String
Future readCounter() async {
try {
final file = await _localFile;
var contents = await file.readAsString();
return int.parse(contents);
} catch (e) {
return 0;
}
}
完整代码
import 'dart:io';
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
class Storage {
Future get _localPath async {
final _path = await getTemporaryDirectory();
return _path.path;
}
Future get _localFile async {
final path = await _localPath;
return File('$path/counter.txt');
}
Future readCounter() async {
try {
final file = await _localFile;
var contents = await file.readAsString();
return int.parse(contents);
} catch (e) {
return 0;
}
}
Future writeCounter(counter) async {
final file = await _localFile;
return file.writeAsString('$counter');
}
}
class OnePage extends StatefulWidget {
final Storage storage;
OnePage({this.storage});
@override
_OnePageState createState() => _OnePageState();
}
class _OnePageState extends State {
int _counter;
@override
void initState() {
super.initState();
widget.storage.readCounter().then((value) {
setState(() => _counter = value);
});
}
Future _incrementCounter() async {
setState(() => _counter++);
return widget.storage.writeCounter(_counter);
}
Future _incrementCounterj() async {
setState(() => _counter--);
return widget.storage.writeCounter(_counter);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
),
floatingActionButton: Row(
children: [
FloatingActionButton(
onPressed: () => _incrementCounter(),
child: new Icon(Icons.add),
),
FloatingActionButton(
onPressed: () => _incrementCounterj(),
child: new Icon(Icons.title),
)
],
),
floatingActionButtonLocation: FloatingActionButtonLocation.centerDocked,
);
}
}
flutter 生成文档_flutter 如何实现文件读写(使用篇)相关推荐
- flutter 生成文档_Flutter文件操作
path_provider获取应用存储路径 path_provider是flutter提供的一个获取应用存储路径的插件,它封装了统一的api来获取Android和ios两个平台的应用存储路径,提供的a ...
- java 自动生成文档_[原]java开发文档的自动生成方式
对于Java注释我们主要了解三种: // 注释一行 /* ...... */ 注释若干行 第三种,文档注释: /** ...... */ 注释若干行,并写入 javadoc 文档 通常这种注释的多行写 ...
- 【飞书应用】自动生成文档
飞书开放平台 飞书开放平台,里面有关于飞书提供的一些供开发者使用的api,可以用来开发飞书的自定义应用,本次使用里面文档相关的api来自动生成文档 创建飞书应用 可以根据飞书官方文档,创建飞书应用,本 ...
- oracle导出pdm文件命令,利用PowerDesigner逆向工程导出PDM模型及生成文档
最近需要对老项目进行重构优化,由于项目都是好几年前的,相关设计资料很不全,最基本的数据库设计文档都没有,只能利用PowerDesigner逆向工程导出PDM模型及生成word文档:以下简单介绍导出模型 ...
- showdoc如何创建文件夹_showDoc生成文档
1. 创建项目 2. 获取api_key和api_token 1. 打开设置 2. 获取api_key和token 3. 生成文档 1. 先cd进入你的项目目录,命令行模式下输入: wget http ...
- Objective-C自动生成文档工具:appledoc
作者 iOS_小松哥 关注 2016.12.13 15:47* 字数 919 阅读 727评论 10喜欢 35 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective-C自动生成文 ...
- Objective-C 自动生成文档工具:appledoc
来源:iOS_小松哥 www.jianshu.com/p/fd4d8d6b6177 如有好文章投稿,请点击 → 这里了解详情 由于最近琐事比较多,所以好久没有写文章了.今天我们聊一聊Objective ...
- java前端目录_[Java教程]前端那点事儿——Tocify自动生成文档目录
[Java教程]前端那点事儿--Tocify自动生成文档目录 0 2016-06-29 22:00:07 今天偶然间看到文档服务器有一个动态目录功能,点击目录能跳转到指定的位置:窗口滑动也能自动更新目 ...
- linux c/c++ 代码使用 doxygen 自动生成文档
www.doxygen.org 的使用非常方便,下面分成2步介绍一下 1. 注释风格,需要在c/c++代码中按照下面的风格添加注释,基本上还是很顺手的 C++的注释风格 主要使用下面这种样式:即在注释 ...
最新文章
- C#格式化数值结果表(格式化字符串)
- Ubuntu系统(七)-安装FTP
- Wireshark抓取RTP包,还原语音
- python去停用词用nltk_【NLTK】安装和使用NLTK分词和去停词
- JavaScript ES2021 新特性解析
- 练习四十四:整数的排序
- WinRAR备份技巧 - imsoft.cnblogs
- java.lang.NoSuchMethodError: org.jaxen.dom4j.DocumentNavigator.getInstance()【可能的解决办法】
- 拉卡拉支付最新支付方式预览——刷脸支付上线
- 常见函数泰勒公式展开(清晰)
- 计算机模式识别科学家年薪,年薪可达80万,学人工智能要去这些学校
- 用php上传头像的步骤,php怎么上传头像
- 通过puppet hiera配置bigtop大数据集群
- 国家药品监督管理局药品审评中心—重点功能介绍
- 1.5.33 计算分数加减表达式的值
- ansible playbook详细教程(笔记)
- Moto Z6 手机 联通GSM卡上网设置, 使用技巧及疑难问题解决
- Linux手机众筹1000万
- nginx 访问状态统计 访问控制 虚拟主机
- 如何高效学习-随意信息处理-信息的记忆
热门文章
- 学习日报 1026 使用属性升级MyBank
- django-记住用户名-利用cookie-待演练
- win10 安装mysql-5.7.19-winx64
- 辨析ADKJVMJREJDKADT
- Linux下的tar压缩解压缩命令详解(转)
- Percona XtraDB cluster--第一部分:XtraDB cluster安装 (Centos7)
- 利用Android属性动画实现Banner的原理与实践
- OSGI-flex-blazeds通信
- Exchange 2007 删除 某时间段 特定主题 的邮件
- 收藏网站制作常用经典css.div.布局.设计实例打包下载