updateData<D2> method
void
updateData<D2>(
- D2 update(
- TransitionHandlerContext<
D2, C> ctx
- TransitionHandlerContext<
- StateKey? stateToUpdate,
- String? label,
Updates ancestor state data of type D2 when the transition occurs.
class MyStateData {
int value;
}
var state1 = StateKey('s1');
var state2 = StateKey('s2');
var builder = StateTreeBuilder(initialState: state1);
builder.dataState<MyStateData>(
state1,
InitialData(() => MyStateData()),
emptyState,
initialChild: InitialChild(state2)
});
builder.state(state2, (b) {
// Update state data in ancestor state
b.onEnter((b) => b.updateData<MyStateData>((ctx) => ctx.data..value += 1)));
}, parent: state1);
If more than one ancestor data state share the same state data type of D2, stateToUpdate
can be provided to specify which state data should be updated.
This action can be labeled when formatting a state tree by providing a label.
Implementation
void updateData<D2>(
D2 Function(TransitionHandlerContext<D2, C> ctx) update, {
StateKey? stateToUpdate,
String? label,
}) {
_descriptor = makeUpdateDataDescriptor(update, _makeContext, _forState, _log, label);
}