【发布时间】:2019-04-11 04:43:23
【问题描述】:
我在StreamBuilder 中有一个TextField,它监听BehaviorSubject 流。当快照有错误时,errorText 会显示它。
问题是当TextField 滚动出可见区域并在StreamBuilder 重建中滚动回来但错误文本消失了,因为这次snapshot.hasError 是假的。
如何维护错误?
【问题讨论】:
我在StreamBuilder 中有一个TextField,它监听BehaviorSubject 流。当快照有错误时,errorText 会显示它。
问题是当TextField 滚动出可见区域并在StreamBuilder 重建中滚动回来但错误文本消失了,因为这次snapshot.hasError 是假的。
如何维护错误?
【问题讨论】:
您可能希望将错误存储在您的StatefulWidget 的String 变量中。
一旦您准备好清除错误(例如用户按下清除按钮),您只需将此变量设置为 null。
String errorMsg;
StreamBuilder(
stream: myStream,
builder: (BuildContext context, snapshot) {
if (snapshot.hasError) {
errorMsg = snapshot.error.toString();
}
if (errorMsg != null) {
return Text(errorMsg);
}
return new Text(
snapshot.data.toString(),
);
},
)
【讨论】:
errorMsg