shared_preferences_listener 0.1.0 copy "shared_preferences_listener: ^0.1.0" to clipboard
shared_preferences_listener: ^0.1.0 copied to clipboard

A powerful Flutter plugin that extends SharedPreferences with reactive capabilities, allowing you to listen for changes in preference values across your app. Perfect for state management, settings syn [...]

Shared Preferences Listener #

A powerful Flutter plugin that extends SharedPreferences with reactive capabilities, allowing you to listen for changes in preference values across your app. Perfect for state management, settings synchronization, and real-time preference updates.

Features #

  • Listen to changes in SharedPreferences values
  • Type-safe preference access
  • Automatic value change notifications
  • All standard SharedPreferences functionality
  • Custom object support via JSON serialization
  • Efficient memory management
  • Batch operations support

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  shared_preferences_listener: ^0.0.1

Usage #

Basic Usage: #

import 'package:shared_preferences_listener/shared_preferences_listener.dart';

// Initialize the listener
final prefs = SharedPreferencesListener();

// Listen to changes
final subscription = prefs.addListener('counter', (value) {
  print('Counter changed to: $value');
});

// Update value
await prefs.setInt('counter', 42);

// Later, when done listening
subscription.cancel();

Type-safe Preferences: #

// Define type-safe preference keys
final counterPref = IntPreference('counter', defaultValue: 0);
final themePref = StringPreference('theme', defaultValue: 'light');

// Use with type safety
await prefs.setValue(counterPref, 10);
await prefs.setValue(themePref, 'dark');

// Get values with correct types
final count = prefs.getValue(counterPref); // Returns int
final theme = prefs.getValue(themePref); // Returns String

Custom Objects: #

class User {
  final String name;
  final int age;
  
  User(this.name, this.age);
  
  factory User.fromJson(Map<String, dynamic> json) => User(
    json['name'] as String,
    json['age'] as int,
  );
  
  Map<String, dynamic> toJson() => {
    'name': name,
    'age': age,
  };
}

// Store custom objects
final user = User('John', 30);
await prefs.setObject('user', user);

// Listen to object changes
prefs.addObjectListener<User>('user', (User? user) {
  print('User updated: ${user?.name}');
});

Batch Operations: #

await prefs.batch((batch) {
  batch.setString('name', 'John');
  batch.setInt('age', 30);
  batch.setBool('isAdmin', true);
});

Multiple Listeners: #

// Add multiple listeners
final sub1 = prefs.addListener('theme', (value) => print('Theme: $value'));
final sub2 = prefs.addListener('theme', (value) => print('Also theme: $value'));

// Remove specific listener
sub1.cancel();

// Or remove all listeners for a key
prefs.removeAllListeners('theme');

Advanced Usage #

Preference Groups: #

// Group related preferences
class UserPreferences {
  static final name = StringPreference('user.name', defaultValue: '');
  static final age = IntPreference('user.age', defaultValue: 0);
  static final isAdmin = BoolPreference('user.isAdmin', defaultValue: false);
}

// Use grouped preferences
await prefs.setValue(UserPreferences.name, 'John');
await prefs.setValue(UserPreferences.age, 30);

Error Handling: #

try {
  await prefs.setInt('counter', 42);
} on SharedPreferencesException catch (e) {
  print('Failed to save preference: ${e.message}');
}

Requirements #

  • Flutter >= 3.3.0
  • Dart SDK >= 3.7.0

Additional Information #

Contributing #

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

0
likes
120
points
6
downloads

Publisher

verified publisherisunday.app

Weekly Downloads

A powerful Flutter plugin that extends SharedPreferences with reactive capabilities, allowing you to listen for changes in preference values across your app. Perfect for state management, settings synchronization, and real-time preference updates.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface, shared_preferences, sunday_core

More

Packages that depend on shared_preferences_listener

Packages that implement shared_preferences_listener