Flutter:将传递的参数更改为 "StatefulWidget"
Flutter: Change the parameter passed to a "StatefulWidget"
我有一个名为 BounceContainer
的 StatefulWidget
。这个 class 包含一个参数 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 小部件。
解决此问题的正确方法(也是有效方法)是什么?
您不需要将所有参数都传递给 State class。您可以使用 widget.child
访问它们
我有一个名为 BounceContainer
的 StatefulWidget
。这个 class 包含一个参数 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 小部件。
解决此问题的正确方法(也是有效方法)是什么?
您不需要将所有参数都传递给 State class。您可以使用 widget.child