VxState Widgets

VxBuilder

A helper widget built on top of StreamBuilder to rebuild a small part of the screen after execution of given mutations.

@override
Widget build(BuildContext context) {
AppStore store = VxState.store;
return VxBuilder(
mutations: {Increment},
builder: (_,status) => Text("${store.count}"),
);
}

VxNotifier

A helper widget to get callbacks after execution of mutations. Useful for handling actions connected to context such as showing SnackBar or navigating to a route etc.

class CallmeBack extends VxMutation<AppStore> {
String message;
perform() {
message = "Hello from callback";
}
}
...
@override
Widget build(BuildContext context) {
return Scaffold(
body: VxNotifier(
mutations: {
CallmeBack: (ctx, mut) {
final message = (mut as CallmeBack).message;
Scaffold.of(ctx).showSnackBar(
SnackBar(content: Text(message)),
);
}
},
child: ...,
),
);
}

VxConsumer

A helper widget which is nothing but a combination of VxBuilder and VxNotifier if you need both of them together. The only difference is that VxNotifier mutations are here notifications.

@override
Widget build(BuildContext context) {
AppStore store = VxState.store;
return VxConsumer(
mutations: {Increment},
notifications: {
CallmeBack: (ctx, mut) {
final message = (mut as CallmeBack).message;
Scaffold.of(ctx).showSnackBar(
SnackBar(content: Text(message)),
);
}
},
builder: (_,status) => Text("${store.count}"),
);
}
important

VxStatus is mostly useful with VxEffects otherwise you can ignore it.