Flutter:将传递的参数更改为“StatefulWidget”
Posted
技术标签:
【中文标题】Flutter:将传递的参数更改为“StatefulWidget”【英文标题】:Flutter: Change the parameter passed to a "StatefulWidget" 【发布时间】: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
【参考方案1】:
您不需要将所有参数传递给 State 类。您可以通过widget.child
访问它们
【讨论】:
以上是关于Flutter:将传递的参数更改为“StatefulWidget”的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 响应式设计:如果屏幕更大,动态将 Column 更改为 Row
如何将 api_token 参数更改为一些自定义参数,如 api_key 或 key