Skip to content

A wrapper around shared_preferences to streamline persistable data.

License

Notifications You must be signed in to change notification settings

tytydraco/shared_objects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shared_objects

A wrapper around shared_preferences to streamline persistable data.

Concept

Creating a persistable value usually requires some boilerplate code. For example:

import 'package:shared_preferences/shared_preferences.dart';

String? _value;

Future<void> setValue(String newValue) async {
  final sharedPrefs = await SharedPreferences.getInstance();
  await sharedPrefs.setString('name', newValue);
}

Future<String?> getValue() async {
  final sharedPrefs = await SharedPreferences.getInstance();
  return sharedPrefs.getString('name');
}

The shared_objects package aims to reduce that boilerplate code into a more concise implementation. For example:

import 'package:shared_objects/shared_objects.dart';

final value = SharedString('name');
await value.set('newValue');
await value.get();

Getting started

Add the dependency to your project using the following command: flutter pub add shared_objects.

Usage

The base class that defines a persistable object is the explicitly-typed SharedObjectBase class. All persistable objects are defined with the following components:

  • id: A unique String key associated with this object.
  • set(T?): Asynchronously set the new value of this object. If the new value is null, the objects contents are deleted, and the id is removed from the SharedPreferences map.
  • get(): Asynchronously get the current value of this object.
  • mutate(T? Function(T?)): Asynchronously modify the value of this object by passing a function. The function is given the initial value of the object via get(), and must return an updated value. If the initial value equals the updated value, no change is made, which skips a call to set(T?).

The package already includes several extensions of the base class for convenience. This includes the following classes:

  • SharedBool: A persistable bool.
  • SharedDouble: A persistable double with some arithmetic extensions (add, sub, mul, div, pow).
  • SharedInt: A persistable int with some arithmetic extensions (add, sub, mul, div, pow).
  • SharedString: A persistable String with an append extension.
  • SharedStringList: A persistable List<String> with some list extensions (add, addAll, remove).

About

A wrapper around shared_preferences to streamline persistable data.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published