Local storage
If you don’t need to store a lot of data and it doesn’t require structure, you can use shared_preferences
which allows you to read and write persistent key-value pairs of primitive data types: booleans, floats, ints, longs, and strings.
How do I store persistent key-value pairs that are global to the app?
In React Native, you use the setItem
and getItem
functions of the AsyncStorage
component to store and retrieve data that is persistent and global to the app.
// React Native
await AsyncStorage.setItem( 'counterkey', json.stringify(++this.state.counter));
AsyncStorage.getItem('counterkey').then(value => {
if (value != null) {
this.setState({ counter: value });
}
});
In Flutter, use the shared_preferences
plugin to store and retrieve key-value data that is persistent and global to the app. The shared_preferences
plugin wraps NSUserDefaults
on iOS and SharedPreferences
on Android, providing a persistent store for simple data. To use the plugin, add shared_preferences
as a dependency in the pubspec.yaml
file then import the package in your Dart file.
dependencies:
flutter:
sdk: flutter
shared_preferences: ^0.4.3
// Dart
import 'package:shared_preferences/shared_preferences.dart';
To implement persistent data, use the setter methods provided by the SharedPreferences
class. Setter methods are available for various primitive types, such as setInt
, setBool
, and setString
. To read data, use the appropriate getter method provided by the SharedPreferences
class. For each setter there is a corresponding getter method, for example, getInt
, getBool
, and getString
.
SharedPreferences prefs = await SharedPreferences.getInstance();
_counter = prefs.getInt('counter');
prefs.setInt('counter', ++_counter);
setState(() {
_counter = _counter;
});