Core concepts

Store

The following is an exploration of what a Store is conceptually and how they are used in Flutter Forge.


Concept

A Store can be thought of as a State Store. It is responsible for facilitating observing and managing state change.

In Practice

The Store is pretty simple and is only interacted with in a few ways.

Constructing a Store

Constructing a Store instance is pretty easy. We simply have to pass it the initialState State, the reducer Reducer, and the environment Environment.

Store(
	initialState: const CounterWidgetState(count: 0),
	reducer: counterReducer.debug(name: "counter"),
	environment: CounterWidgetEnvironment()));

Passing a Store to a Widget

The other place you will interact with a Store is when you pass it to a Widget. This is needed so that the Widget knows what its associated State is, such that it can be properly managed.

CounterWidget(store: counterStore);

Sending an Action to a Store

To send an action to the Store from inside a Widget we simply call the send() method on the viewStore that is exposed within the Widget build method. The following is an example of this.

OutlinedButton(
	onPressed: () => viewStore.send(CounterWidgetIncrementButtonTapped()),
	child: const Text("increment"))

Scoping a Store

Another way you will interact with a Store is when you are composing Components together into larger more complex components. In this world you will call one of a handfull of methods on the Store that facilitate you scoping a parents Store down to a Store that is fitting for a child component.

More details can be found in Composing Components.

Previous
Component