在这里,当你在async内部调用snackbar时,你通常会注意到警告或错误,说不要在异步间隙中使用BuildContexts。如何在类对象中避免这种情况,而不是在窗口小部件树中
如果条件为,则在context.mounted
内包装snackBar代码
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
首先我创建了一个showSnack bar方法,然后我在async中使用future.delay来调用snackbar。我希望这个解决方案能帮助将来遇到这种情况的人。下面是我的showSnack bar 函数
void showsnackbar(BuildContext context, String text) {
final snackBar = SnackBar(
content: Text(text),
duration: Duration(seconds: 5),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
}
下面是我的异步函数,我在这里调用showsnackbar函数,例如。如果你想在状态码上显示snackbar,那么你可以执行以下方法
class sample{
Future<void> sample(BuildContext context) async {
switch (res.statusCode) {
case 201:
Future.delayed(Duration.zero)
.then((value) => showsnackbar(context, "sample text"));
}
}
}