Flutter 重新创建小部件时颤振重置状态小部件状态

Flutter 重新创建小部件时颤振重置状态小部件状态,flutter,widget,statefulwidget,Flutter,Widget,Statefulwidget,在我的flatter小部件中,我有一个StreamBuilder,它检查snapshot.hasError,在这种特定情况下,它将返回我的ErrorRetryWidget() 不确定这是否是一个好的实践。传递一个唯一的键,让它创建一个新的小部件 if (snapshot.hasError) { return ErrorRetryWidget(key: UniqueKey()); } 正如您所说,我使用didUpdateWidget重置有状态小部件的状态。它在动画中也很有用 我要添加的唯

在我的flatter小部件中,我有一个
StreamBuilder
,它检查
snapshot.hasError
,在这种特定情况下,它将返回我的
ErrorRetryWidget()


不确定这是否是一个好的实践。

传递一个唯一的键,让它创建一个新的小部件

if (snapshot.hasError) {
    return ErrorRetryWidget(key: UniqueKey());
}

正如您所说,我使用didUpdateWidget重置有状态小部件的状态。它在动画中也很有用

我要添加的唯一注释是不要像您那样使用setState,因为当框架调用didUpdateWidget时,它会立即调用build。因此,您不必触发调用来在didUpdateWidget中构建。它最终调用build两次

@override
void didUpdateWidget(covariant oldWidget) {
    super.didUpdateWidget(oldWidget);
    retrying = false;
  }
if (snapshot.hasError) {
    return ErrorRetryWidget(key: UniqueKey());
}
@override
void didUpdateWidget(covariant oldWidget) {
    super.didUpdateWidget(oldWidget);
    retrying = false;
  }