如何在async方法内部调用snackbar



在这里,当你在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"));
}
}
}