flutter可以用 mysql数据库_Flutter 本地数据存储(文件、SharedPreferences 、数据库 sqlite)使用示例...

Flutter 提供了三种数据持久化方法,即文件、SharedPreferences 与数据库。

文件

Flutter 提供了两种文件存储的目录,即临时(Temporary)目录与文档(Documents)目录:

临时目录是操作系统可以随时清除的目录,通常被用来存放一些不重要的临时缓存数据。这个目录在 iOS 上对应着 NSTemporaryDirectory 返回的值(网上搜集的信息,对 iOS 不熟悉故不确定对错),而在 Android上则对应着 getCacheDir 返回的值。

文档目录则是只有在删除应用程序时才会被清除的目录,通常被用来存放应用产生的重要数据文件。在 iOS上,这个目录对应着 NSDocumentDirectory (网上搜集的信息,对iOS不熟悉故不确定对错),而在 Android上则对应着 AppData 目录。

如何在Flutter中获取上述两个目录地址呢?这里使用到的是 path_provider库

先在pubspec.yaml中添加依赖,然后点击AndroidStudio右上角的 packages get

dependencies:

path_provider: ^1.6.5

接下来就可以获取到以上两个目录路径了:

// 获取临时目录

Directory tempDir = await getTemporaryDirectory();

String tempPath = tempDir.path;

// 获取文档目录

Directory appDocDir = await getApplicationDocumentsDirectory();

String appDocPath = appDocDir.path;

接下来我们通过示例来看一下效果。

示例

创建文件并写入数据,随后将数据读取出来。由于文件读写一般比较耗时且容易出错,为了保证程序的健壮性,需要异步Futures以及 try catch使用。

首先在文档目录创建文件:

Future get _localFile async {

// 存在文档目录

final directory = await getApplicationDocumentsDirectory();

final path = directory.path;

// 使用绝对路径

return File('$path/content.txt');

}

接着在文件中写入数据:

Future writeContent(String content) async {

// 获取到文件

final file = await _localFile;

// 执行写入

return file.writeAsString(content);

}

最后将上一步写入的数据读取出来:

Future readContent() async {

try {

// 获取到文件

final file = await _localFile;

// 执行读取

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值