Flutter保存文件到本地

一、概述

  遇到需求是将配置保存到本地,除了数据存储shared_preferences外最合适的就是创建一个文件来保存数据,这样不用担心数据丢失。

二、准备

  首先需要添加 path_provider 这个第三方插件库,这个插件是用来获取目录的,该插件为我们提供了多种获取不同类型目录的方法。

1.添加依赖

  在pubspec.yaml文件下添加

dependencies:
  path_provider: ^2.0.2

  使用的时候添加引用即可

import 'package:path_provider/path_provider.dart';

2.方法介绍

  • getTemporaryDirectory() :获取临时文件路径(IOS和安卓通用)
  • getApplicationSupportDirectory() :获取应用支持目录(IOS和安卓通用)
  • getApplicationDocumentsDirectory() :获取应用文件目录(IOS和安卓通用),针对 Android 设备的 AppDate 目录,iOS 设备的 NSDocumentDirectory 目录
  • getLibraryDirectory() :获取应用持久存储目录路径(仅IOS可用)
  • getExternalStorageDirectory() : 获取存储卡目录(仅安卓可用)
  • getExternalCacheDirectories() :获取外部缓存目录(仅安卓可用)
  • getDownloadsDirectory() :获取下载目录(仅桌面可用)

三、对应方法

  保存文件除了上述的目录插件对应的方法,还需要io数据编写方法的配合。正常思路是:1.获取文件目录;2.获取文件,无则创建;3.保存内容到文件中。下面展示具体代码。

/// 获取文档目录
Future<String> _localfilePath() async{ 
    Directory tempDir = await getTemporaryDirectory();
    return tempDir.path;
}
/// 获取文档
Future<File> _localfile() async{ 
    String path = await _localfilePath();
    print('$path/settting.txt');
    return new File('$path/settting.txt');
}
/// 保存内容到文本
void _saveFile(String val) async{ 
    try{ 
        File file = await _localfile();
        IOSink sink = file.openWrite(mode: FileMode.append);
        sink.write(val);
        sink.close();
    }
    catch(e){ 
        // 写入错误
        ToastUtil.print(e);
    }
}

  上面的方法中目录用的是getTemporaryDirectory()临时目录,这个是随着软件的删除而消失的,测试发现没有root的手机是没法找到的,跟window中的AppData文件夹类似,默认隐藏。

    原文作者:玉珂鸣响
    原文地址: https://blog.csdn.net/m0_52390420/article/details/121164219
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞