在Android中,如果我有想要在会话之间保留的信息,我知道可以使用SharedPreferences或创建一个SQLite数据库,甚至可以将文件写入设备并稍后读取它。
在Flutter中是否有一种只使用Flutter就能保存和恢复这样的数据的方法?还是我需要像服务示例中那样为Android和iOS编写特定于设备的代码?
在Flutter中是否有一种只使用Flutter就能保存和恢复这样的数据的方法?还是我需要像服务示例中那样为Android和iOS编写特定于设备的代码?
以下是几个选项:
如果您处于想要保存稍后引用的小值的情况中,那么您应该使用shared_preferences将数据存储为键值对数据。
但是,如果您想存储大量数据,应该使用SQLITE。
不过,您始终可以使用离线可用的Firebase数据库。
既然我们正在谈论本地存储,您始终可以读取和写入磁盘上的文件。
其他解决方案:sqflite
只在手机上存储数据。firebase
则会将数据同步到中央数据库,您可以在后端执行查询操作。firebase
还可以轻松实现设备之间的同步。 - Feu虽然回答比较晚,但我希望它能帮助任何以后来访问这里的人。
我将提供需要存储的类别以及它们各自最佳的方法...
您可以使用Flutter官方插件中的共享首选项。 https://github.com/flutter/plugins/tree/master/packages/shared_preferences
它在Android上使用Shared Preferences,在iOS上使用NSUserDefaults。
flutter pub add localstorage
1- 在pubspec.yaml
中添加依赖项(根据最新版本更改)。
dependencies:
...
localstorage: ^4.0.0+1
2- 然后运行以下命令
flutter packages get
第三步- 导入本地存储:
import 'package:localstorage/localstorage.dart';
4- 创建一个实例
class MainApp extends StatelessWidget {
final LocalStorage storage = new LocalStorage('localstorage_app');
...
}
将项目添加到本地存储:
void addItemsToLocalStorage() {
storage.setItem('name', 'Abolfazl');
storage.setItem('family', 'Roshanzamir');
final info = json.encode({'name': 'Darush', 'family': 'Roshanzami'});
storage.setItem('info', info);
}
从本地存储中获取一个项目:
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');
}
如果您只需要存储简单的值,例如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
Hive (https://pub.dev/packages/hive)是一种非常快速和灵活的解决方案。但如果您有SQL经验,则可以使用SqfLite软件包(https://pub.dev/packages/sqflite)。