如何保存到本地存储使用扑动?

在 Android 中,如果我有想要在会话间持久保存的信息,我知道我可以使用 SharedPreferences 或者创建一个 SQLite 数据库,甚至可以在设备上写一个文件,然后在以后读取它。

有没有一种方法可以保存和恢复这样的数据,只是使用扑动?或者我需要像在 服务例子中那样为 Android 和 iOS 编写特定于设备的代码?

203546 次浏览

有几种选择:

你可以从 flutter 的官方插件中使用 共同的喜好Https://github.com/flutter/plugins/tree/master/packages/shared_preferences

它使用 Android 的共享首选项,iOS 使用 NSUserDefault。

如果您想要保存一个小值,以便稍后引用。然后,应该使用 share _ ferences 将数据存储为键值数据

但是如果您想存储大数据,那么应该使用 SQLITE

然而,你总是可以使用火灾基地数据库可离线

因为我们讨论的是本地存储,所以您总是可以将文件读写到磁盘上

其他解决方案:

我认为如果你要在本地存储器中存储大量的数据,你可以使用 sqflite 库。这是非常容易安装,我个人用于一些测试项目,它的工作很好。

Https://github.com/tekartik/sqflite 这是一个教程-< a href = “ https://proandroiddev.com/flutter-bookshel- app-part-2-personal-note-and-database-Integration-a3b47a84c57”rel = “ nofollow norefrer”> https://proandroiddev.com/flutter-bookshelf-app-part-2-personal-notes-and-database-integration-a3b47a84c57

如果你想在云中存储数据,你可以使用 firebase。这是由谷歌提供的可靠服务。

Https://firebase.google.com/docs/flutter/setup

如果您只需要存储简单的值,如 API 令牌或登录数据(而不是密码!),这里是我使用的:

import 'package:shared_preferences/shared_preferences.dart';


asyncFunc() async { // Async func to handle Futures easier; or use Future.then
SharedPreferences prefs = await SharedPreferences.getInstance();
}
...


// Set
prefs.setString('apiToken', token);


// Get
String token = prefs.getString('apiToken');


// Remove
prefs.remove('apiToken');

不要忘记在 pubspec.yaml 中添加 shared_preferences依赖项(保留间距格式) :

dependencies:


shared_preferences: any

有几种选择:

Moor: Dart 的持久性库

读写文件

用于颤振的共享首选项插件

振动器

一个迟到的回答,但我希望这将有助于任何人访问这里以后太. 。

我将提供类别保存和他们各自的最佳方法..。

  1. 共享偏好 在存储器上存储简单值时使用此选项,例如: 颜色主题、应用程序语言、最后滚动位置(在阅读应用程序时)。.这些是应用程序重新启动时希望保留的简单设置。. 但是,您可以使用它来存储大的东西(列表、地图、图像) 但这需要序列化和反序列化。.要了解有关此反序列化和序列化的更多信息,请访问 给你
  2. 文件 当您拥有更多由您定义的数据(例如日志文件、图像文件以及可能需要导出 csv 文件)时,这会有很大帮助。.我听说一旦磁盘空间耗尽,存储清理器就可以清除这种类型的持久性。.我不确定,因为我从来没有见过。. 除了序列化和反序列化的帮助之外,这也可以存储几乎任何东西。
  3. 保存到数据库 这对于有点复杂的数据非常有帮助。我认为这不会被磁盘清洗器冲洗,因为它是存储在 AppData(为机器人)。. 在这里,您的数据存储在一个 SQLite 数据库中,它的插件是 SQFLite。 你可能想要放在这里的数据类似于数据库可以表示的任何东西。

你可以使用 本地存储

flutter pub add localstorage

1-pubspec.yaml添加依赖项(根据上一个 更改版本)

dependencies:
...
localstorage: ^4.0.0+1

然后运行以下命令

flutter packages get

导入本地存储:

import 'package:localstorage/localstorage.dart';

创建一个实例

class MainApp extends StatelessWidget {
final LocalStorage storage = new LocalStorage('localstorage_app');
...
}

条目添加到 lcal 存储:

void addItemsToLocalStorage() {
storage.setItem('name', 'Abolfazl');
storage.setItem('family', 'Roshanzamir');


final info = json.encode({'name': 'Darush', 'family': 'Roshanzami'});
storage.setItem('info', info);
}

从 lCoal Storage 获取一个条目:

void getitemFromLocalStorage() {
final name = storage.getItem('name'); // Abolfazl
final family = storage.getItem('family'); // Roshanzamir
  

Map<String, dynamic> info = json.decode(storage.getItem('info'));
final info_name=info['name'];
final info_family=info['family'];
}

从本地存储中删除项目:

void removeItemFromLocalStorage() {
storage.deleteItem('name');
storage.deleteItem('family');
storage.deleteItem('info');
}

我正在寻找相同的,简单的本地存储,但也有一个合理的安全级别。我发现最有意义的两个解决方案是针对小数据的 扇形 _ 安全 _ 存储(如 拉乌夫所提到的)和针对大数据集的 蜂巢

蜂巢(https://pub.dev/packages/hive)是非常快速和灵活的解决方案。但是如果您有使用 SQL 的经验,则可以使用 SqfLite 包(https://pub.dev/packages/sqflite)