首页 > 解决方案 > Flutter:将传递的参数更改为“StatefulWidget”

问题描述

我有一个StatefulWidget名为BounceContainer. 此类包含一个参数child,类似于典型的 Flutter 小部件。基本上,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参数发生变化,孩子本身也不会更新。

例如,如果我有一个按钮,其颜色从灰色变为任何随机颜色,AnimationController并且我将此按钮作为child参数传递给BounceContainer类,则按钮仍然保持灰色并且调用setState() (从主程序或BounceContainer类)也不会强制更新子部件。

解决此问题的正确方法(也是有效方法)是什么?

标签: parametersdartflutterstatefulwidget

解决方案


您不需要将所有参数传递给 State 类。您可以通过以下方式访问它们widget.child


推荐阅读