Flutter进阶—读取与写入文件

Flutter进阶—读取与写入文件,第1张

概述Flutter使用path_provider插件读取写入文件,path_provider插件提供了一种平台无关的方法来访问设备文件系统上常用的位置。该类目前支持访问两个文件系统位置: 临时目录:系统可以随时清除的临时目录(缓存),在iOS上,对应NSTemporaryDirectory()返回的值,在Android上,这是getCacheDir()返回的值。 文档目录:应用程序的目录,用于存储只

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进阶—读取与写入文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1002702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存