Flutter: изменить параметр, передаваемый в StatefulWidget - PullRequest
1 голос
/ 21 мая 2019

У меня есть StatefulWidget с именем BounceContainer.Этот класс содержит параметр child как типичный виджет Flutter.По сути, он отскакивает child всякий раз, когда пользователь нажимает на него.На данный момент я передаю параметр child следующим образом:

class BounceContainer extends StatefulWidget {
    final Widget child;                 // Declaring "child"
    BounceContainer({this.child});      // Initializing "child"

    // Passing "child" to State

    @override
    _BounceContainerState createState() => _BounceContainerState(this.child);
}

class _BounceContainerState extends State<BounceContainer> {
    Widget child;
    _BounceContainerState(this.child);  // Receiving "child"

    @override 
    Widget build(BuildContext context) {
        ...
    }
}

Проблема в этом случае заключается в том, что даже если параметр child изменится, child сам не обновляется.

Например, если у меня есть кнопка, цвет которой меняется с серого на любой случайный цвет, основанный на AnimationController, и я передаю эту кнопку как параметр child параметру BounceContainer class, кнопка по-прежнему остается серой, и вызов setState() (из основной программы или BounceContainer class) также не вызывает принудительного обновления виджета child .

Что правильноспособ (а также эффективный способ) обойти эту проблему?

1 Ответ

2 голосов
/ 22 мая 2019

Вам не нужно передавать все свои параметры в класс State.Вы можете получить к ним доступ с помощью widget.child

...