Dart 如何从树中删除小部件
我希望能够从树中删除小部件,或者删除小部件的子部件。我试图使用states将小部件更改为null,但它返回了一个错误。有解决办法吗? 这里是错误Dart 如何从树中删除小部件,dart,flutter,Dart,Flutter,我希望能够从树中删除小部件,或者删除小部件的子部件。我试图使用states将小部件更改为null,但它返回了一个错误。有解决办法吗? 这里是错误 我终于找到了一个隐藏/删除小部件的解决方案:我只是用一个空的小部件替换了它(可能是我会添加一个小动画),但我仍然在寻找一种更干净的方法来实现这一点。在Flatter中,你并不真的更新小部件的树,而是在每次需要更改时生成一个新的树。因此,您只需更改小部件build函数的返回值。如果您想要一个空的小部件,Container()是一个不错的选择。另一个替换
我终于找到了一个隐藏/删除小部件的解决方案:我只是用一个空的小部件替换了它(可能是我会添加一个小动画),但我仍然在寻找一种更干净的方法来实现这一点。在Flatter中,你并不真的更新小部件的树,而是在每次需要更改时生成一个新的树。因此,您只需更改小部件
build
函数的返回值。如果您想要一个空的小部件,Container()
是一个不错的选择。另一个替换树中小部件的好方法是给小部件一个键
(如果关键点更改,颤振将重建子树。)
因此,假设您有一个StreamBuilder,无论出于何种原因,每次都需要从头开始构建子小部件(可能是由于依赖项注入,其中一个依赖项发生变化),您可以这样做:
StreamBuilder(
stream: bloc.myDependencyChanged, // A hypothetical bloc which notifies when a relevant dependency has changed.
builder: (_, snap) {
final dep = MyChangingDependency();
// MyWidget will NOT get reused by flutter if the key changes.
return MyWidget(dep, key: ValueKey(dep.getId()));
},
);
“它返回了一个错误”不是很多信息;-)请显示允许重现问题的代码以及您得到的确切错误消息。不在build()
中添加它怎么样?我在上一篇文章中添加了它,但我认为它拒绝创建将null作为其子项的小部件是正常的。const SizedBox.shrink()
据说更好。