ome/img/nav3_on.png">
APP
系统平台
  • 建站知识
  • 联系我们
  • 咨询热线 :
    028-86922220

    疆括仕网站建设,新征程启航

    为企业提供网站建设、域名注册、服务器等服务

    创新互联Flutter教程:Flutter文件读写

    介绍

    PathProvider 插件提供了一种平台透明的方式来访问设备文件系统上的常用位置。该类当前支持访问两个文件系统位置:

    • 临时目录: 系统可随时清除的临时目录(缓存)。在iOS上,这对应于NSTemporaryDirectory() 返回的值。在Android上,这是getCacheDir()返回的值。
    • 文档目录: 应用程序的目录,用于存储只有自己可以访问的文件。只有当应用程序被卸载时,系统才会清除该目录。在iOS上,这对应于NSDocumentDirectory。在Android上,这是AppData目录。

    一旦你的Flutter应用程序有一个文件位置的引用,你可以使用dart:ioAPI来执行对文件系统的读/写操作。有关使用Dart处理文件和目录的更多信息,请参阅此概述 和这些示例。

    读写文件的示例

    以下示例展示了如何统计应用程序中按钮被点击的次数(关闭重启数据不丢失):

    1. 通过 flutter create 或在IntelliJ中 File > New Project 创建一个新Flutter App.
    2. 在pubspec.yaml文件中声明依赖 PathProvider 插件
    3. 用一下代码替换 lib/main.dart中的:
    import 'dart:io';
    import 'dart:async';
    import 'package:flutter/material.dart';
    import 'package:path_provider/path_provider.dart';
    
    void main() {
      runApp(
        new MaterialApp(
          title: 'Flutter Demo',
          theme: new ThemeData(primarySwatch: Colors.blue),
          home: new FlutterDemo(),
        ),
      );
    }
    
    class FlutterDemo extends StatefulWidget {
      FlutterDemo({Key key}) : super(key: key);
    
      @override
      _FlutterDemoState createState() => new _FlutterDemoState();
    }
    
    class _FlutterDemoState extends State {
      int _counter;
    
      @override
      void initState() {
        super.initState();
        _readCounter().then((int value) {
          setState(() {
            _counter = value;
          });
        });
      }
    
      Future _getLocalFile() async {
        // get the path to the document directory.
        String dir = (await getApplicationDocumentsDirectory()).path;
        return new File('$dir/counter.txt');
      }
    
      Future _readCounter() async {
        try {
          File file = await _getLocalFile();
          // read the variable as a string from the file.
          String contents = await file.readAsString();
          return int.parse(contents);
        } on FileSystemException {
          return 0;
        }
      }
    
      Future _incrementCounter() async {
        setState(() {
          _counter++;
        });
        // write the variable as a string to the file
        await (await _getLocalFile()).writeAsString('$_counter');
      }
    
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(title: new Text('Flutter Demo')),
          body: new Center(
            child: new Text('Button tapped $_counter time${
              _counter == 1 ? '' : 's'
            }.'),
          ),
          floatingActionButton: new FloatingActionButton(
            onPressed: _incrementCounter,
            tooltip: 'Increment',
            child: new Icon(Icons.add),
          ),
        );
      }
    }

    标题名称:创新互联Flutter教程:Flutter文件读写
    新闻来源:https://tyhkzb.com/article/djcgipp.html
    在线咨询
    服务热线
    服务热线:028-86922220
    TOP