W Androidzie, jeśli mam informacje, które chcę zachować między sesjami, wiem, że mogę użyć SharedPreferences lub utworzyć bazę danych SQLite, a nawet zapisać plik na urządzeniu i przeczytać go później.
Czy istnieje sposób na zapisywanie i przywracanie takich danych za pomocą Fluttera? A może musiałbym napisać kod specyficzny dla urządzenia dla systemu Android i iOS, jak w przykładzie usług ?
flutter
local-storage
Reagankm
źródło
źródło
Jeśli jesteś w sytuacji, w której chcesz zaoszczędzić niewielką wartość, którą chcesz później odnieść. wtedy powinieneś przechowywać swoje dane jako dane klucz-wartość przy użyciu shared_preferences
ale jeśli chcesz przechowywać duże dane, powinieneś skorzystać z SQLITE
jednak zawsze możesz użyć bazy danych Firebase, która jest dostępna w trybie offline
Ponieważ mówimy o lokalnej pamięci, zawsze możesz czytać i zapisywać pliki na dysku
Inne rozwiązania:
źródło
sqflite
przechowuje go tylko w telefonie.firebase
zostaje zsynchronizowany w centralnej bazie danych, w której możesz wykonywać zapytania w swoim zapleczu.firebase
ułatwia również synchronizację między urządzeniami.Możesz używać wspólnych preferencji z oficjalnych wtyczek fluttera. https://github.com/flutter/plugins/tree/master/packages/shared_preferences
Korzysta z preferencji wspólnych dla Androida, NSUserDefaults dla iOS.
źródło
Jeśli potrzebujesz przechowywać tylko proste wartości, takie jak token API lub dane logowania (nie hasła!), Oto czego użyłem:
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');
Nie zapomnij dodać
shared_preferences
zależności w swoim pubspec.yaml (zachowaj format odstępów):dependencies: shared_preferences: any
źródło
Późna odpowiedź, ale mam nadzieję, że pomoże to również każdemu, kto tu później przyjedzie😁 ..
Podam kategorie do zapisania i ich najlepsze metody ...
źródło
Jest kilka opcji:
Moor: biblioteka Persistence dla Dart
Odczytaj i zapisz plik
Wtyczka wspólnych preferencji dla flutter
SQlite do trzepotania
źródło
Myślę, że jeśli zamierzasz przechowywać dużą ilość danych w lokalnej pamięci, możesz użyć biblioteki sqflite. Jest bardzo łatwy w konfiguracji i osobiście korzystałem z jakiegoś projektu testowego i działa dobrze.
https://github.com/tekartik/sqflite To samouczek - https://proandroiddev.com/flutter-bookshelf-app-part-2-personal-notes-and-database-integration-a3b47a84c57
Jeśli chcesz przechowywać dane w chmurze, możesz skorzystać z firebase. Jest to solidna usługa świadczona przez Google.
https://firebase.google.com/docs/flutter/setup
źródło
Możesz użyć Localstorage
1- Dodaj zależność do
pubspec.yaml
( Zmień wersję na podstawie ostatniej )dependencies: ... localstorage: ^3.0.0
2- Następnie uruchom następujące polecenie
flutter packages get
3- Zaimportuj lokalny magazyn:
import 'package:localstorage/localstorage.dart';
4- Utwórz instancję
class MainApp extends StatelessWidget { final LocalStorage storage = new LocalStorage('localstorage_app'); ... }
Dodaj przedmiot do lcoalstorage:
void addItemsToLocalStorage() { storage.setItem('name', 'Abolfazl'); storage.setItem('family', 'Roshanzamir'); final info = json.encode({'name': 'Darush', 'family': 'Roshanzami'}); storage.setItem('info', info); }
Zdobądź przedmiot z 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']; }
Usuń element z magazynu lokalnego:
void removeItemFromLocalStorage() { storage.deleteItem('name'); storage.deleteItem('family'); storage.deleteItem('info'); }
źródło
Możesz użyć SharedPreferences w przypadku niewielkiej ilości danych. Ale jeśli masz duże i złożone dane, powinieneś użyć Sqlite Database do lokalnego przechowywania w aplikacjach flutter.
źródło