【发布时间】:2019-10-08 06:38:48
【问题描述】:
我有一个名为BounceContainer 的StatefulWidget。这个类包含一个参数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 类,则该按钮仍保持灰色并调用@987654330 @
(来自主程序或BounceContainer 类)也不会强制更新 child 小部件。
解决此问题的正确方法(也是有效方法)是什么?
【问题讨论】:
-
您不需要将所有参数传递给 State 类。您可以通过
widget.child访问。 -
@siega 谢谢这对我有用! ✌
-
@siega 是好习惯吗?我经常使用它,但不知道它的副作用
-
我觉得这里最大的好处就是减少了代码。否则,如果您有 10 个参数,则需要在 State 中创建 10 个属性,并通过构造函数传递所有这些值。 @dubace
标签: parameters dart flutter statefulwidget