gpt4 book ai didi

Flutter:StatelessWidget 可以从其构建方法返回 StatefulWidget 吗?

转载 作者:IT王子 更新时间:2023-10-29 07:15:22 25 4
gpt4 key购买 nike

我想知道如果我定义一个 StatelessWidget 但从它的构建方法返回一个有状态的 Widget 会发生什么?我试过了,一切似乎都正常,但我只想知道幕后发生了什么,这样我就可以确保在将它投入生产时不会出现任何问题。具体来说:

1) 我想知道父级 StatelessWidget 的每次重建是否都会触发它返回的 StatefulWidget 的重建?如果是这样,是否表示我正在有效地返回一个 StatelessWidget?

2) 我想知道父 StatelessWidget 是否仍然在小部件树中,因为它只是一个包装器并且没有任何要呈现的视觉元素?

3)如果我想给子StatefulWidget一个Key,我应该给父StatelessWidget同样的key吗?或者,我应该将 key 放在父级 StatelessWidget 上吗?

最佳答案

混合无状态和有状态是一个非常、非常、非常的常见用例。

答案相对简单:没有什么特别的事情发生。

Stateless+Stateful与Stateless*2或Stateful*2是一样的。没有行为改变,也不需要额外的代码。

I am wondering if every rebuild of the parent StatelessWidget will trigger a rebuild of the StatefulWidget it returns? If so, is it saying I am effectively returning a StatelessWidget?

没有。每个小部件都是独立的,可以在不强制其他小部件重建的情况下重建。

子级重建不会使父级重建。同样, parent 重建并不一定会强制 child 重建。

I am wondering if the parent StatelessWidget will still be in the widget tree, given it is merely a wrapper and does not have any visual element to be rendered?

是的,StatelessWidget 仍在树中。

不,它不是“只是一个包装器”。 StatelessWidget 可以使用 InheritedWidgets 并覆盖 ==

这些会导致小部件独立于其他小部件进行重建。因此,这个小部件必须在树中说。

它甚至有一个 setState 等价物;它只是不公开。

If I want to give the child StatefulWidget a Key, should I give the parent StatelessWidget the same key? Or, should I just put the key on the parent StatelessWidget?

没有。不需要。

如果键在一个小部件上,这将影响它的整个子树。所以没有必要把它也放在后代身上。

事实上,你不能,这取决于Key。例如,GlobalKey 要求是唯一的。

关于Flutter:StatelessWidget 可以从其构建方法返回 StatefulWidget 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57542951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com