添加依赖
flutter pub add path_provider
获取本地目录
虽然获取路径总共有八种,但是在实际应用开发过程中,我们经常使用的有三种,我们分别来获取这三种目录的路径,如下:
/// 获取文档目录文件
Future<File> _getLocalDocumentFile() async {
final dir = await getApplicationDocumentsDirectory();
return File('${dir.path}/str.txt');
}
/// 获取临时目录文件
Future<File> _getLocalTemporaryFile() async {
final dir = await getTemporaryDirectory();
return File('${dir.path}/str.txt');
}
/// 获取应用程序目录文件
Future<File> _getLocalSupportFile() async {
final dir = await getApplicationSupportDirectory();
return File('${dir.path}/str.txt');
}
import 'dart:io'; import 'package:flutter/material.dart'; import 'package:path_provider/path_provider.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { String name = "Jimi"; /// 获取文档目录文件 Future<File> _getLocalDocumentFile() async { final dir = await getApplicationDocumentsDirectory(); return File('${dir.path}/str.txt'); } /// 获取临时目录文件 Future<File> _getLocalTemporaryFile() async { final dir = await getTemporaryDirectory(); return File('${dir.path}/str.txt'); } /// 获取应用程序目录文件 Future<File> _getLocalSupportFile() async { final dir = await getApplicationSupportDirectory(); return File('${dir.path}/str.txt'); } /// 读取值 Future<void> readString() async { try { final file = await _getLocalDocumentFile(); final result = await file.readAsString(); print("result-----$result"); final file1 = await _getLocalTemporaryFile(); final result1 = await file1.readAsString(); print("result1-----$result1"); final file2 = await _getLocalSupportFile(); final result2 = await file2.readAsString(); print("result2-----$result2"); } catch (e) { } } /// 写入数据 Future<void> writeString(String str) async { final file = await _getLocalDocumentFile(); await file.writeAsString(name); final file1 = await _getLocalTemporaryFile(); await file1.writeAsString(name); final file2 = await _getLocalSupportFile(); await file2.writeAsString(name); print("写入成功"); } @override Widget build(BuildContext context) { return MaterialApp( title: 'Flutter Demo', theme: ThemeData( primarySwatch: Colors.blue, ), home: Scaffold( appBar: AppBar(title: Text("path_provider"),), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text(name, style: TextStyle( color: Colors.pink, fontSize: 30 ), ), SizedBox(height: 20), ElevatedButton( onPressed: (){ writeString(name); }, child: Text("存入本地目录"), ), ElevatedButton( onPressed: (){ readString(); }, child: Text("读取值"), ), ], ), ), ) ); } }