flutter_onlooker
A state management library which provides simple solution for updating state and navigation.
- Stars
- 2
- Forks
- 0
- Last push (UTC)
- Apr 11, 2024
- Project status
- Active
Original README
English project snapshot. Visit GitHub for the latest content.
Onlooker
A state management library that provides a simple solution for updating state and navigation.
Usage
Lets take a look at how to use flutter_onlooker. The library provides: StateNotifier, StateObserver and StateNotifierProvider classes.
StateNotifieris responsible for registering and notifying states. Also it can emit navigation events. The main methods of this class:
observable<S>registers observable state ofStype.initial<S>returns initial value for state ofStype.latest<S>returns the latest value for state ofStype.contains<S>checks whether a state ofStype was registered before.notify<S>notifies a new state ofStype.navigate<T extends Object?>notifies a new navigation event.
class IncrementStateNotifier extends StateNotifier {
IncrementStateNotifier() {
observable<int>(initial: _counter);
}
var _counter = 0;
void useCase() {
final initialState = initial<int>();
final latestState = latest<int>();
final containsState = contains<int>();
notify<int>(++_counter);
navigate<void>('/route', arguments: _counter);
}
}
StateObserverhandles building a widget in response to newstates. It takes 3 parameters:
- required
builderfunction that takes theBuildContextandstate, this function is responsible for returning a widget that is to be rendered. - An optional
notifierthat can be passed directly or with usingStateNotifierProvider. - An optional
buildWhencan be implemented for more granular control over how oftenStateObserverrebuilds.
StateObserver<IncrementStateNotifier, int>(
builder: (_, state) {
return Text(
'$state',
style: Theme.of(context).textTheme.headlineMedium,
);
},
)
StateNotifierProvidertakes acreatefunction that is responsible for creating theStateNotifier,childwidget that will have access to theStateNotifierinstance viaProvider.of<StateNotifier>(context)orcontext.read<StateNotifier>()and optionalrouterfunction that will receive navigation events.
StateNotifierProvider<IncrementStateNotifier>(
create: (_) => IncrementStateNotifier(),
child: const MyHomePage(title: 'Onlooker Demo'),
router: (context, routeName, arguments) {
return showDialog<void>(
context: context,
builder: (_) => AlertDialog(
title: Text("Route is '$routeName'"),
content: Text("You've clicked $arguments times!"),
),
);
},
)
LanguagesDartSwiftKotlinObjective-C
Dependencies used
Dependency list 3 items
- flutter
{"sdk":"flutter"} - flutter_testDevelopment
{"sdk":"flutter"} - very_good_analysisDevelopment
^5.1.0
How do I choose a repository?
Start with your use case, compare repository activity, and check the original project before adopting it.
- Search by repository name, owner or description, then narrow the results by topic.
- Compare stars, forks and recent pushes. Stars show community interest, not a guarantee of quality.
- Read the README, license and issues on GitHub before using a project.
Sources and maintenance
“A repository is the most basic element of GitHub.”
GitHub Docs — About repositories ↗
- ihorbokov/flutter_onlooker · GitHub ↗
- GitHub Docs — Saving repositories with stars ↗
- Directory maintained by Ducafecat ↗