flutter_persistent_value_notifier

Last updated:

0 purchases

flutter_persistent_value_notifier Image
flutter_persistent_value_notifier Images
Add to Cart

Description:

flutter persistent value notifier

The flutter_persistent_value_notifier library #
ReactiveValue resets to its initial value every time the app is restarted. You can persist values across app restarts by using PersistentValueNotifier rather than ValueNotifier.
This Flutter library extends ValueNotifier<T> to provide a PersistentValueNotifier that stores the ValueNotifier's value in SharedPreferences, so that changes in the value survive app restarts.
Usage #
(1) Add a dependency upon flutter_persistent_value_notifier in your pubspec.yaml (replace any with the latest version, if you want to control the version), then run flutter pub get:
dependencies:
flutter:
sdk: flutter
flutter_persistent_value_notifier: any
copied to clipboard
(2) Import the package in your Flutter project:
import 'package:flutter_persistent_value_notifier/'
'flutter_persistent_value_notifier.dart';
copied to clipboard
(3) In your async main method, initialize WidgetsFlutterBinding, then initialize the persistent_value_notifier library by calling await initPersistentValueNotifier(), which starts SharedPreferences and loads any persisted values from the SharedPreferences backing store.
void main() async {
// Both of the following lines are needed, in this order
WidgetsFlutterBinding.ensureInitialized();
await initPersistentValueNotifier(prefix: 'com.myapp.'); // A unique SharedPreferences prefix for your app

runApp(MainPage());
}
copied to clipboard
(4) Use PersistentValueNotifier in place of ValueNotifier in your code, as shown below.
final counter = PersistentValueNotifier<int>(
sharedPreferencesKey: 'counter',
initialValue: 0,
);
copied to clipboard
counter.value will be set to the initial value of 0 if it has never been set before, but if it has been set before in a previous run of the app, the previous value will be recovered from SharedPreferences instead, using the shared preferences key 'counter'.
Whenever counter.value is set in future, not only is the underlying ValueNotifier's value updated, but the new value is asynchronously written through to SharedPreferences, using the same key.
Variants #
You can also use PersistentValueNotifierEnum to persistently store enum values:
enum Fruit { apple, pair, banana };

final fruit = PersistentValueNotifierEnum<Fruit>(
sharedPreferencesKey: 'fruit',
initialValue: Fruit.apple,
nameToValueMap: Fruit.values.asNameMap(),
);
copied to clipboard
Or you can use PersistentValueNotifierJsonEncoded to persistently store arbitrary JSON-serializable classes:
final fruit = PersistentValueNotifierJsonEncoded<UserProfile?>(
sharedPreferencesKey: 'user-profile',
initialValue: null,
toJson: (u) => jsonEncode(u?.toJson()),
fromJson: (jsonStr) => UserProfile.fromJson(jsonDecode(jsonStr)),
);
copied to clipboard
There is also a class PersistentValueNotifierMap which persists a Map<String, dynamic> to SharedPreferences as JSON.
Pro-tip #
See also my other library, flutter_reactive_value, as an easy way to add reactive state to your app!
Author #
flutter_persistent_value_notifier was written by Luke Hutchison, and is released under the MIT license.

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.