Flutter   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Flutter进阶—读取与写入文件大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

Flutter使用path_provider插件读取与写入文件path_provider插件提供了一种平台无关的方法来访问设备文件系统上常用的位置。该类目前@L_874_6@访问两个文件系统位置:

  • 临时目录:系统可以随时清除的临时目录(缓存),在iOS上,对应NstemporaryDirectory()返回的值,在Android上,这是getCacheDir()返回的值。

  • 文档目录:应用程序的目录,用于存储只有它可以访问的文件,仅当删除应用程序时,系统才会清除目录,在iOS上,这对应NSDocumentsDirectory,在Android上,这是ApPDAta目录。

首先我们需要修改一下pubspec.yaml文件,@L_616_13@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次'}!')
      ),floaTingActionButton: new FloaTingActionButton(
        onPressed: _incrementCounter,tooltip: '增加',child: new Icon(Icons.add),)
    );
  }
}
void main() {
  runApp(new MaterialApp(
    title: 'Flutter',home: new ReadAndWriteDemo(),));
}

Flutter进阶—读取与写入文件

大佬总结

以上是大佬教程为你收集整理的Flutter进阶—读取与写入文件全部内容,希望文章能够帮你解决Flutter进阶—读取与写入文件所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。