在Android中,如果我有想要在会话中持久保存的信息,我知道我可以使用SharedPreferences或创建SQLite数据库,甚至可以将文件写入设备并在以后阅读.
有没有办法只使用Flutter保存和恢复这样的数据?或者我是否需要为服务示例中的Android和iOS编写特定于设备的代码?
Set*_*add 88
有几个选择:
Rao*_*che 38
如果你想要保存一个你想稍后提到的小值的情况.然后,您应该使用shared_preferences将数据存储为键值数据
但如果你想存储大数据,你应该使用SQLITE
但是,您始终可以使用可脱机使用的firebase数据库
由于我们讨论的是本地存储,因此您始终可以将文件读写到磁盘
其他方案:
Abo*_*zlR 14
您可以使用本地存储
flutter pub add localstorage
Run Code Online (Sandbox Code Playgroud)
1-添加依赖项pubspec.yaml(根据上一个更改版本)
dependencies:
...
localstorage: ^4.0.0+1
Run Code Online (Sandbox Code Playgroud)
2-然后运行以下命令
flutter packages get
Run Code Online (Sandbox Code Playgroud)
3- 导入本地存储:
import 'package:localstorage/localstorage.dart';
Run Code Online (Sandbox Code Playgroud)
4-创建实例
class MainApp extends StatelessWidget {
final LocalStorage storage = new LocalStorage('localstorage_app');
...
}
Run Code Online (Sandbox Code Playgroud)
将项目添加到 lcoalstorage :
void addItemsToLocalStorage() {
storage.setItem('name', 'Abolfazl');
storage.setItem('family', 'Roshanzamir');
final info = json.encode({'name': 'Darush', 'family': 'Roshanzami'});
storage.setItem('info', info);
}
Run Code Online (Sandbox Code Playgroud)
从 lcoalstorage获取一个项目:
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'];
}
Run Code Online (Sandbox Code Playgroud)
从本地存储中删除项目:
void removeItemFromLocalStorage() {
storage.deleteItem('name');
storage.deleteItem('family');
storage.deleteItem('info');
}
Run Code Online (Sandbox Code Playgroud)
ema*_*nga 12
一个迟到的答案,但我希望它也能帮助以后访问这里的任何人..
我将提供要保存的类别及其各自的最佳方法...
Fur*_*tas 10
您可以使用flutter官方插件中的共享首选项. https://github.com/flutter/plugins/tree/master/packages/shared_preferences
它使用Android的共享首选项,iOS的NSUserDefaults.
Geo*_*rge 10
如果你只需要存储简单的值,比如 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');
Run Code Online (Sandbox Code Playgroud)
不要忘记shared_preferences在 pubspec.yaml 中添加依赖项(保留间距格式):
dependencies:
shared_preferences: any
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58180 次 |
| 最近记录: |