shared_value 3.0.0 copy "shared_value: ^3.0.0" to clipboard
shared_value: ^3.0.0 copied to clipboard

A straightforward way to manage global state in flutter apps.

pub package

Shared Value #

A wrapper over InheritedModel, this module allows you to easily manage global state in flutter apps.

At a high level, SharedValue puts your variables in an intelligent "container" that is flutter-aware.

It can be viewed as a low-boilerplate generalization of the Provider state management solution.

Usage #

1. Initialize

IMPORTANT: Always declare SharedValue variables as final, so you don't accidentally over-write the SharedValue object (which you generally don't want to do.)

// This global SharedValue can be shared across the entire app
// IMPORTANT: Variable declared as final
final SharedValue<int> counter = SharedValue(
  // initial value
  value: 0,
);

void main() {
  runApp(
    // Don't forget this bit of initialization code!
    SharedValue.wrapApp(
      MyApp(),
    ),
  );
}

2. Use

Unlike other state management solutions, SharedValue works everywhere you'd expect dart code to work, even without a BuildContext.

void main() {
  // Read [counter]
  print(counter.$);

  // Update [counter]
  counter.$ += 1;
}

// Use [counter] in widgets, and let SharedValue do the rest.
Widget build(BuildContext context) {
  // The .of(context) bit makes this widget rebuild automatically
  int counterValue = counter.of(context);

  return Text("Counter: $counterValue");
}

3. Persist

// provide a shared_prefences key
final SharedValue<int> counter = SharedValue(
  // disk storage key for shared_preferences (optional)
  key: "counter",

  // autosave to shared prefs when value changes (optional)
  autosave: true,
);

void main() async {
  // Load [counter]'s value from shared preferences
  await counter.load();

  // Store [counter]'s value to shared preferences (enabling `autosave` does this automatically)
  await counter.store();
}

Efficiency #

Shared value is smart enough to only rebuild the widget that subscribes to updates using .of(context), no more, no less.

17
likes
150
pub points
93%
popularity

Publisher

unverified uploader

A straightforward way to manage global state in flutter apps.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, shared_preferences

More

Packages that depend on shared_value