在这里,当你在async内部调用snackbar时,你可能会注意到警告或错误,说不要在async间隙中使用BuildContexts。如何在类对象而不是小部件树中避免这种情况
m1m5dgzv1#
首先,我创建了一个showSnack bar方法,之后我使用了异步的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")); } } }
vktxenjb2#
将snackBar代码 Package 在context.mounted if条件中
context.mounted
if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar(snackBar); }
2条答案
按热度按时间m1m5dgzv1#
首先,我创建了一个showSnack bar方法,之后我使用了异步的future.delay来调用snackbar,我希望这个解决方案可以帮助将来遇到这种情况的人,下面是我为showSnack bar创建的函数
下面是我的异步函数,我调用showsnackbar函数,例如..如果你想在状态码上显示snackbar,那么你可以做下面的方法
vktxenjb2#
将snackBar代码 Package 在
context.mounted
if条件中