Я создаю виджет, который имеет StoreConnect, он вызывает другой виджет, который похож на анимацию, но у него есть функция обратного вызова, когда при вызове функции обратного вызова состояние избыточного значения не применяется.Я имею в виду, что избыточное состояние изменено, виджет построен снова, но функция обратного вызова не изменилась.
Это мой виджет:
@override
Widget build(BuildContext context) {
return new StoreConnector<ReduxState, PlaceCardViewModel>(
converter: (store) {
return new PlaceCardViewModel(
currentUserPlace: store.state.currentUserPlace,
onUserPlaceRatingChanged: (isRatingPlace) =>
store.dispatch(new SetUserPlaceRating(isRatingPlace)),
onCurrentUserPlaceChanged: (currentUserPlace) =>
store.dispatch(new SetCurrentUserPlace(currentUserPlace)),
onCurrentPlaceProfileChanged: (currentPlaceProfile) => store
.dispatch(new SetCurrentPlaceProfile(currentPlaceProfile)));
},
builder: (context, vm) {
return HighLightAnimation(this._getCard(vm), onLongPressCallback: () {
if (vm.currentUserPlace != null) {
print('IT WORKS!!!');
}
this._onPlaceCardActions(vm, context);
});
},
);
}
Он работает таким образом, без обратного вызова:
@override
Widget build(BuildContext context) {
return new StoreConnector<ReduxState, PlaceCardViewModel>(
converter: (store) {
return new PlaceCardViewModel(
currentUserPlace: store.state.currentUserPlace,
onUserPlaceRatingChanged: (isRatingPlace) =>
store.dispatch(new SetUserPlaceRating(isRatingPlace)),
onCurrentUserPlaceChanged: (currentUserPlace) =>
store.dispatch(new SetCurrentUserPlace(currentUserPlace)),
onCurrentPlaceProfileChanged: (currentPlaceProfile) => store
.dispatch(new SetCurrentPlaceProfile(currentPlaceProfile)));
},
builder: (context, vm) {
Column(
children: <Widget>[
this._getCard(vm),
RaisedButton(
child: Text('Click me!'),
onPressed: () {
if (vm.currentUserPlace != null) {
print('ON PRESSED WORKS FINE');
}
this._onPlaceCardActions(vm, context);
},
)
],
);
},
);
}