一、概述
   
遇到需求是将配置保存到本地,除了数据存储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文件夹类似,默认隐藏。
   
 
版权声明:本文为m0_52390420原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
