Dart 如何从树中删除小部件

Dart 如何从树中删除小部件,dart,flutter,Dart,Flutter,我希望能够从树中删除小部件,或者删除小部件的子部件。我试图使用states将小部件更改为null,但它返回了一个错误。有解决办法吗? 这里是错误 我终于找到了一个隐藏/删除小部件的解决方案:我只是用一个空的小部件替换了它(可能是我会添加一个小动画),但我仍然在寻找一种更干净的方法来实现这一点。在Flatter中,你并不真的更新小部件的树,而是在每次需要更改时生成一个新的树。因此,您只需更改小部件build函数的返回值。如果您想要一个空的小部件,Container()是一个不错的选择。另一个替换

我希望能够从树中删除小部件,或者删除小部件的子部件。我试图使用states将小部件更改为null,但它返回了一个错误。有解决办法吗? 这里是错误


我终于找到了一个隐藏/删除小部件的解决方案:我只是用一个空的小部件替换了它(可能是我会添加一个小动画),但我仍然在寻找一种更干净的方法来实现这一点。

在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()
据说更好。