dart Flutter“不要跨异步间隙使用BuildContexts”

yks3o0rb  于 2023-01-15  发布在  Flutter
关注(0)|答案(1)|浏览(201)

基本上,当用户在对话框中按下Logout时,我希望返回到LoginView。

onSelected: (value) async {
              switch (value) {
                case MenuAction.logout:
                  final shouldLogout = await showLogOutDialog(context);
                  final navigator = Navigator.of(context);
                  if (shouldLogout) {
                    await FirebaseAuth.instance.signOut();
                    navigator.pushNamedAndRemoveUntil(
                      '/login',
                      (route) => false,
                    );
                  }
              }
            },

showLogoutDialog函数:

Future<bool> showLogOutDialog(BuildContext context) {
  return showDialog<bool>(
    context: context,
    builder: (context) {
      return AlertDialog(
        title: const Text('Sign out'),
        content: const Text('Are you sure you want to sign out?'),
        actions: [
          TextButton(
            onPressed: () {
              Navigator.of(context).pop(false);
            },
            child: const Text('Cancel'),
          ),
          TextButton(
            onPressed: () {
              Navigator.of(context).pop(true);
            },
            child: const Text('Logout'),
          ),
        ],
      );
    },
  ).then((value) => value ?? false);

我得到这个错误:"不要跨异步间隙使用BuildContexts。".

有人能帮我吗?
先谢了!

toe95027

toe950271#

这是不安全的,请尝试检查小工具是否未按Flutter YouTube Channel上所示安装。

if (!mounted) return
Navigator.of(context);

相关问题