Flutter 颤振:无状态小部件能否从其构建方法返回StatefulWidget?
我想知道如果我定义了一个无状态的小部件,但从它的构建方法返回了一个有状态的小部件,会发生什么?我试过了,一切似乎都正常,但我只想知道幕后发生了什么,这样我就可以确保在我把它投入生产时不会有任何东西损坏。具体而言: 1) 我想知道父无状态小部件的每次重建是否都会触发它返回的StatefulWidget的重建?如果是这样,是不是说我实际上返回了一个无状态小部件 2) 我想知道,如果父无状态小部件仅仅是一个包装器,并且没有任何要呈现的可视元素,那么它是否仍然在小部件树中Flutter 颤振:无状态小部件能否从其构建方法返回StatefulWidget?,flutter,dart,Flutter,Dart,我想知道如果我定义了一个无状态的小部件,但从它的构建方法返回了一个有状态的小部件,会发生什么?我试过了,一切似乎都正常,但我只想知道幕后发生了什么,这样我就可以确保在我把它投入生产时不会有任何东西损坏。具体而言: 1) 我想知道父无状态小部件的每次重建是否都会触发它返回的StatefulWidget的重建?如果是这样,是不是说我实际上返回了一个无状态小部件 2) 我想知道,如果父无状态小部件仅仅是一个包装器,并且没有任何要呈现的可视元素,那么它是否仍然在小部件树中 3) 如果我想给子Statef
3) 如果我想给子StatefulWidget一个键,我应该给父StatefulWidget一个相同的键吗?或者,我应该把键放在父无状态小部件上吗?混合无状态和有状态是一个非常非常常见的用例 答案相对简单:没有什么特别的事情发生 无状态+有状态与无状态*2或有状态*2相同。没有行为改变,也不需要额外的代码 我想知道父无状态小部件的每次重建是否都会触发它返回的StatefulWidget的重建?如果是这样,是不是说我实际上返回了一个无状态小部件 不是。每个小部件都是独立的,可以在不强制其他小部件重建的情况下重建 子级重建不会使父级重建。类似地,父级重建也不一定强制子级重建 我想知道,如果父无状态小部件仅仅是一个包装器,并且没有任何要呈现的可视元素,那么它是否仍然在小部件树中 是的,树中仍然有一个无状态小部件 不,它不仅仅是一个包装器。无状态小部件可以使用继承的小部件并覆盖
=
这些可以导致小部件独立于其他小部件重建。因此,这个小部件必须在树中显示
它甚至有一个setState
等价物;这不是公开的
如果我想给子StatefulWidget一个键,我应该给父StatefulWidget一个相同的键吗?或者,我应该把密钥放在父控件上吗
不,不需要
如果键位于小部件上,这将影响其整个子树。所以没有必要把它也加在后代身上
事实上,你不能,这取决于钥匙。例如,GlobalKey要求是唯一的