typed_preferences 0.2.0 copy "typed_preferences: ^0.2.0" to clipboard
typed_preferences: ^0.2.0 copied to clipboard

An expressive and type-safe wrapper around Shared Preferences with additional features like Observers and DAOs.

example/typed_preferences_example.dart

// ignore_for_file: avoid_print

import 'package:shared_preferences/shared_preferences.dart';
import 'package:typed_preferences/typed_preferences.dart';

class LoggerPreferencesDriverObserver extends PreferencesDriverObserver {
  const LoggerPreferencesDriverObserver();

  void _log(void Function(StringBuffer b) logBuilder) {
    final buffer = StringBuffer('LoggerPreferencesDriverObserver | ');
    logBuilder(buffer);
    print(buffer.toString());
  }

  @override
  void beforeSet<T extends Object>(String path, T value) {
    super.beforeSet(path, value);
    _log(
      (b) => b
        ..write('Setting ')
        ..write(path)
        ..write(' of type ')
        ..write(T)
        ..write(' to ')
        ..write(value),
    );
  }

  @override
  void onSet<T extends Object>(String path, T value, bool isSuccess) {
    super.onSet(path, value, isSuccess);
    _log(
      (b) => b
        ..write('Set ')
        ..write(path)
        ..write(' to value ')
        ..write(value)
        ..write(' ')
        ..write(isSuccess ? 'successfully' : 'unsuccessfully'),
    );
  }
}

class SettingsDao extends TypedPreferencesDao {
  SettingsDao(PreferencesDriver driver) : super(driver);

  @override
  String get name => 'settings';

  PreferencesEntry<String> get userName => stringEntry('name');

  PreferencesEntry<int> get userAge => intEntry('age');
}

Future<void> main() async {
  final preferences = await SharedPreferences.getInstance();

  final driver = PreferencesDriver(
    sharedPreferences: preferences,
    observers: const [LoggerPreferencesDriverObserver()],
  );

  final settingsDao = SettingsDao(driver);

  await settingsDao.userName.setValue('Joe');
  await settingsDao.userAge.setValue(20);
  print(settingsDao.userName.value);
  print(settingsDao.userAge.value);
  await settingsDao.userName.setValue('Jeff');
  await settingsDao.userAge.setValue(30);
  print(settingsDao.userName.value);
  print(settingsDao.userAge.value);
}
13
likes
160
pub points
68%
popularity

Publisher

verified publisheryakov.codes

An expressive and type-safe wrapper around Shared Preferences with additional features like Observers and DAOs.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter, meta, shared_preferences

More

Packages that depend on typed_preferences