gpt4 book ai didi

android - Flutter 显示 SnackBar 并在 StreamBuilder 中返回空容器抛出错误

转载 作者:IT王子 更新时间:2023-10-29 06:40:23 24 4
gpt4 key购买 nike

你好,如果现在网络响应返回错误,我正在尝试显示 Snackbar 我的构建函数如下所示:

  @override
Widget build(BuildContext context) {
NewsBloc bloc = NewsBloc();
return Scaffold(
key: scaffoldKey,
body: Container(
color: Colors.white,
child: StreamBuilder<List<BaseModel>>(
stream: bloc.newsStream,
builder: (BuildContext context, AsyncSnapshot<List<BaseModel>> snap) {
if (snap.hasError) {
scaffoldKey.currentState.showSnackBar(SnackBar(
content: Container(
height: 100,
),
));
return Center(child: Text(snap.error));
} else if (!snap.hasData) {
return Center(child: CircularProgressIndicator());
} else {
return _newsList(snap.data);
}
},
),
),
);
}

它显示了 Snackbar 但也抛出了一个错误:

This Scaffold widget cannot be marked as needing to build
because the framework is already in the procces

最佳答案

那是因为当您的 Widget 正在重建过程中时,您不应该显示 Snackbar,您可以使用的解决方法是:

          _displaySnackBar(BuildContext context) async {
await Future.delayed(Duration(milliseconds: 400));
scaffoldKey.currentState.showSnackBar(SnackBar(
content: Container(
height: 100,
),
));
}

   if (snap.hasError) {
_displaySnackBar(context);
return Center(child: Text(snap.error));
}

关于android - Flutter 显示 SnackBar 并在 StreamBuilder 中返回空容器抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53927976/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com