A reactive key-value store for Flutter that extends shared_preferences with Streams for listening to value changes.
streaming_shared_preferences is a Flutter package that adds reactive streaming capabilities to the standard shared_preferences key-value store. It allows developers to listen to changes in persisted settings and automatically update the UI, solving the problem of manually synchronizing stored data with widget state.
Flutter developers building mobile apps that need persistent, reactive settings or user preferences, especially those already using shared_preferences who want to reduce state management boilerplate.
Developers choose this package because it extends a familiar API with real-time updates, integrates seamlessly with Flutter widgets via PreferenceBuilder, and supports custom data types without requiring major architectural changes.
A reactive key-value store for Flutter projects. Like shared_preferences, but with Streams.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Enables real-time UI updates by exposing preferences as Dart streams, allowing widgets to automatically reflect changes in persisted data without manual state handling, as shown with the PreferenceBuilder widget.
Mirrors the standard shared_preferences API with methods like getInt and setValue, making it easy for existing users to adopt without rewriting code, as noted in the getting started guide.
Supports complex objects via JsonAdapter with built-in serialization/deserialization, including integration with frameworks like built_value, allowing flexible data persistence beyond primitive types.
Provides getValue() on Preference objects for instant retrieval of current values, balancing reactive updates with performance needs in scenarios like button presses.
Change detection works only in Dart, so modifications via the standard SharedPreferences API (e.g., from native code) won't trigger stream updates, requiring careful integration in hybrid apps.
Relies on shared_preferences, which uses platform-specific storage and is unsuitable for sensitive data or large datasets, limiting scalability and security options.
Requires asynchronous setup with WidgetsFlutterBinding.ensureInitialized() and awaiting instance, adding complexity to app startup compared to synchronous state solutions.