В Android, если у меня есть информация, которую я хочу сохранять в сеансах, я знаю, что могу использовать SharedPreferences или создать базу данных SQLite или даже записать файл на устройство и прочитать его позже.
Есть ли способ сохранить и восстановить такие данные, просто используя Flutter? Или мне нужно написать код для конкретного устройства для Android и iOS, как в примере с услугами ?
flutter
local-storage
Reagankm
источник
источник
Если вы находитесь в ситуации, когда вы хотите сэкономить небольшую сумму, о которой вы хотите обратиться позже. тогда вы должны хранить свои данные как данные ключ-значение, используя shared_preferences
но если вы хотите хранить большие данные, вам следует использовать SQLITE
однако вы всегда можете использовать базу данных firebase, которая доступна в автономном режиме
Поскольку мы говорим о локальном хранилище, вы всегда можете читать и записывать файлы на диск
Другие решения:
источник
sqflite
хранит только в телефоне.firebase
синхронизируется в центральной базе данных, где вы можете выполнять запросы в своем бэкэнде.firebase
также упрощает синхронизацию между устройствами.Вы можете использовать общие настройки из официальных плагинов flutter. https://github.com/flutter/plugins/tree/master/packages/shared_preferences
Он использует общие настройки для Android, NSUserDefaults для iOS.
источник
Если вам нужно хранить только простые значения, такие как токен 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');
Не забудьте добавить
shared_preferences
зависимость в свой pubspec.yaml (сохранить формат интервала):dependencies: shared_preferences: any
источник
Поздний ответ, но я надеюсь, что он поможет и тем, кто приедет сюда позже😁 ..
Я предоставлю категории для сохранения и их соответствующие лучшие методы ...
источник
Есть несколько вариантов:
Moor: библиотека Persistence для Dart
Чтение и запись файла
Плагин общих настроек для флаттера
SQlite для флаттера
источник
Я думаю, что если вы собираетесь хранить большой объем данных в локальном хранилище, вы можете использовать библиотеку sqflite. Его очень легко настроить, я лично использовал его для некоторых тестовых проектов, и он отлично работает.
https://github.com/tekartik/sqflite Это руководство - https://proandroiddev.com/flutter-bookshelf-app-part-2-personal-notes-and-database-integration-a3b47a84c57
Если вы хотите хранить данные в облаке, вы можете использовать firebase. Это надежный сервис, предоставляемый Google.
https://firebase.google.com/docs/flutter/setup
источник
Вы можете использовать Localstorage
1- Добавить зависимость к
pubspec.yaml
( изменить версию на основе последней )dependencies: ... localstorage: ^3.0.0
2- Затем выполните следующую команду
flutter packages get
3- импортировать локальное хранилище:
import 'package:localstorage/localstorage.dart';
4- создать экземпляр
class MainApp extends StatelessWidget { final LocalStorage storage = new LocalStorage('localstorage_app'); ... }
Добавить в lcoalstorage:
void addItemsToLocalStorage() { storage.setItem('name', 'Abolfazl'); storage.setItem('family', 'Roshanzamir'); final info = json.encode({'name': 'Darush', 'family': 'Roshanzami'}); storage.setItem('info', info); }
Получите предмет из 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']; }
Удалить элемент из локального хранилища:
void removeItemFromLocalStorage() { storage.deleteItem('name'); storage.deleteItem('family'); storage.deleteItem('info'); }
источник
Вы можете использовать SharedPreferences для небольшого количества данных. Но если у вас есть большие и сложные данные, вам следует использовать базу данных Sqlite для локального хранения в приложениях flutter.
источник