Shared Preference Signals

A Flutter package that provides reactive SharedPreferences integration using signals.

Features

  • Reactive SharedPreferences integration using signals
  • Support for various data types:
    • String
    • int
    • double
    • bool
    • Map
    • DateTime
    • ThemeMode
    • List
    • Matrix4
  • JSON serialization support
  • Enum support
  • Error handling and logging
  • Type-safe API

Installation

Add the package to your pubspec.yaml:

dependencies:
  shared_preference_signals: ^1.0.0

Usage

JSON Serialization

final userSignal = jsonSharedPreferenceSignal<User>(
  key: 'user',
  value: null,
  fromJson: User.fromJson,
  toJson: (user) => user.toJson(),
);

// Use the signal
userSignal.value = User(name: 'John');
final currentUser = userSignal.value;

Enum Support

final themeSignal = enumSharedPreferenceSignal<ThemeMode>(
  key: 'theme',
  value: ThemeMode.system,
  fromString: ThemeMode.values.byName,
);

// Use the signal
themeSignal.value = ThemeMode.dark;
final currentTheme = themeSignal.value;

Direct SharedPreferences Access

// Save a value
await saveToSharedPreferences('counter', 42);

// Read a value
final counter = await readFromSharedPreferences<int>('counter');

// Delete a value
await deleteFromSharedPreferences('counter');

Error Handling

The package includes comprehensive error handling:

  • All operations are wrapped in try-catch blocks
  • Failed operations are logged using debugPrint
  • Default values are returned when operations fail
  • Unsupported types throw UnsupportedError

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

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