Flutter使用path_provIDer
插件读取与写入文件,path_provIDer
插件提供了一种平台无关的方法来访问设备文件系统上常用的位置。该类目前支持访问两个文件系统位置:
临时目录:系统可以随时清除的临时目录(缓存),在iOS上,对应NstemporaryDirectory()返回的值,在AndroID上,这是getCacheDir()返回的值。
文档目录:应用程序的目录,用于存储只有它可以访问的文件,仅当删除应用程序时,系统才会清除目录,在iOS上,这对应NSdocumentsDirectory,在AndroID上,这是AppData目录。
首先我们需要修改一下pubspec.yaml
文件,添加path_provIDer
插件,再在pubspec.yaml
顶部的动作功能区中点击“Packages Get”。
dependencIEs: Flutter: sdk: Flutter path_provIDer: ^0.2.1+1
当你的Flutter应用程序有一个文件位置的引用,你可以使用dart:io API对文件系统执行读/写 *** 作。
下面的示例会在点击按钮时保存按钮按下的次数,并在应用程序重新启动时加载按钮按下的次数:
import 'dart:io';import 'dart:async';import 'package:Flutter/material.dart';import 'package:path_provIDer/path_provIDer.dart';class ReadAnDWriteDemo extends StatefulWidget { @overrIDe _ReadAnDWriteDemoState createState() => new _ReadAnDWriteDemoState();}class _ReadAnDWriteDemoState extends State<ReadAnDWriteDemo> { // 全局变量,存储点击数 int _counter; // 覆盖initState函数,创建状态对象调用该方法 @overrIDe voID initState() { // 调用原initState方法内容 super.initState(); /* * 调用_readCounter函数,读取点击数 * 将点击数作为参数,创建一个函数 */ _readCounter().then((int value){ // 通知框架此对象的内部状态已更改 setState((){ // 将参数赋予存储点击数的变量 _counter = value; }); }); } /* * _readCounter函数,读取点击数 * 关键字async表示异步 *** 作 * 返回值Future类型,表示延迟处理的对象 */ Future<int> _readCounter() async { try { /* * 获取本地文件目录 * 关键字await表示等待 *** 作完成 */ file file = await _getLocalfile(); // 使用给定的编码将整个文件内容读取为字符串 String contents = await file.readAsstring(); // 返回文件中的点击数 return int.parse(contents); } on filesystemexception { // 发生异常时返回默认值 return 0; } } // _getLocalfile函数,获取本地文件目录 Future<file> _getLocalfile() async { // 获取本地文档目录 String dir = (await getApplicationdocumentsDirectory()).path; // 返回本地文件目录 return new file('$dir/counter.txt'); } // _incrementCounter函数,点击增加按钮时的回调 Future<Null> _incrementCounter() async { setState((){ // 存储点击数的变量自加1 _counter++; }); // 将存储点击数的变量作为字符串写入文件 await (await _getLocalfile()).writeAsstring('$_counter'); } @overrIDe Widget build(BuildContext context) { return new Scaffold( appbar: new Appbar(Title: new Text('读写文件 *** 作')),body: new Center( child: new Text('点击按钮${_counter==0?'':'$_counter次'}!') ),@R_301_5987@ingActionbutton: new @R_301_5987@ingActionbutton( onpressed: _incrementCounter,tooltip: '增加',child: new Icon(Icons.add),) ); }}voID main() { runApp(new MaterialApp( Title: 'Flutter',home: new ReadAnDWriteDemo(),));}总结
以上是内存溢出为你收集整理的Flutter进阶—读取与写入文件全部内容,希望文章能够帮你解决Flutter进阶—读取与写入文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)