【问题标题】:Unhandled Exception: 'package:flutter/src/widgets/navigator.dart': Failed assertion: '!navigator._debugLocked': is not true未处理的异常:'package:flutter/src/widgets/navigator.dart':断言失败:'!navigator._debugLocked':不正确
【发布时间】:2021-11-05 13:18:39
【问题描述】:

点击时我试图导航到帖子详细信息屏幕,但屏幕上也出现此错误

 Unhandled Exception: 'package:flutter/src/widgets/navigator.dart': Failed assertion: line 3018 pos 18: '!navigator._debugLocked': is not true.

这是我的代码

class UserPosts extends StatelessWidget {
 // GlobalKey scaffoldKey = GlobalKey();
  @override
  Widget build(BuildContext context) {
    return BlocConsumer<UserCubit, UserStates>(
      listener: (context, state) {},
      builder: (context, state) {
        var cubit = UserCubit.get(context);
        if (state is UserGetPostByIdLoadingState) {
          return CircularIndicator();
        }
        if (state is UserGetPostByIdSuccessState) {
          Navigator.push(
              context, MaterialPageRoute(builder: (context) => PostDetails()));
        }
        return Scaffold(
         // key: scaffoldKey,
          body: GridView.builder(
              itemCount: cubit.userPosts.length,
              gridDelegate:
                  SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3),
              itemBuilder: (context, index) {
                return Stack(
                  alignment: AlignmentDirectional.bottomEnd,
                  children: [
                    InkWell(
                      onTap: () async {
                        try {
                          await cubit
                              .getPostById(cubit.userPosts[index].postId!);
                        } catch (error) {
                          print('$error');
                        }
                      },
                      child: Container(
                        decoration: BoxDecoration(
                            border: Border.all(
                                color: Colors.grey.withOpacity(0.2))),
                        child: Image(
                            image: NetworkImage(
                                '${cubit.userPosts[index].media.first}')),
                      ),
                    ),
                    cubit.userPosts[index].media.length > 1
                        ? Icon(
                            Icons.auto_awesome_motion,
                          )
                        : const SizedBox()
                  ],
                );
              }),
        );
      },
    );
  }
}

之后,它导航到帖子详细信息屏幕,但是当我从该页面弹出时出现异常,应用程序崩溃

我该如何解决这个问题?

【问题讨论】:

标签: firebase flutter dart


【解决方案1】:

您不应从 builder 导航,因为它希望您返回一个小部件。

您可以为此使用listener

BlocConsumer<BlocA, BlocAState>(
  listener: (context, state) {
    if (state is UserGetPostByIdSuccessState) {
      Navigator.push(
        context, MaterialPageRoute(builder: (context) => PostDetails()));
    }
  },
  builder: (context, state) {
    ...
  }
)

【讨论】:

    猜你喜欢
    • 2021-01-16
    • 2020-01-21
    • 2021-02-27
    • 2022-06-27
    • 1970-01-01
    • 2022-01-14
    • 2021-04-12
    • 2021-02-05
    • 2023-02-05
    相关资源
    最近更新 更多