Необходимо перестроить с помощью приставки с помощью функции обратного вызова с флаттером - PullRequest
0 голосов
/ 30 января 2019

Я создаю виджет, который имеет 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);
            },
          )
        ],
      );
    },
  );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...