Press ESC to close

Flutter App : Enhanced state management of Bloc

Cubix

A enhanced state management of Bloc

Features

  1. State dependencies
  2. Auto sync state
  3. Async state handling
  4. State updating cancellation

Usages

Simple Cubix

// create a cubix class CounterCubix extends Cubix<int> { CounterCubix(): super(0); void increment() => emit(state + 1); void decrement() => emit(state - 1); } void main() => runApp(App()); class App extends StatelessWidget { @override build(context) { return CubixProvider( // build widget from CounterCubix // the builder receives BuildContext and Cubix objects child: CounterCubix.new.build((context, cubix) { return Column( children: [ // getting state of cubix Text(cubix.state.toString()), ElevatedButton( // incoking cubix method onPressed: cubix.increment, child: const Text('Increment'), ), ElevatedButton( onPressed: cubix.decrement, child: const Text('Decrement'), ) ] ); }) ); } }

Auto Sync

class CounterCubix extends Cubix<int> { CounterCubix(): super(0); void increment() => emit(state + 1); void decrement() => emit(state - 1); } class DoubleCounterCubix extends Cubix<int> { late final CounterCubix counterCubix; DoubleCounterCubix(): super(0); @override onCreate(context) { super.onResolve(context); // call enableSync to allow this cubix updates whenever its dependency cubixes are updated // if you want to debouce an update, just call enableSync(debounce: Duration(seconds: 1)) context.enableSync(); counterCubix = context.fromCreator(CounterCubix.new); } @override onInit() { super.onInit(); emit(counterCubix.state * 2); } }

GitHub

View Github

Footer Example