Another exception was thrown: 'package:flutter/src/widgets/navigator.dart': Failed assertion: line 3803 pos 12: '_history.isNotEmpty': is not true

Viewed 6812

i used persistent_bottom_nav_bar library in my app. When i use Navigator to display a new screen then error show.

InkWell(
    onTap: () {
      Navigator.of(context).popUntil(ModalRoute.withName("previousjob"));
      Navigator.of(context).pushAndRemoveUntil(
        CupertinoPageRoute(
          builder: (BuildContext context) {
            return SettingMenu();
          },
        ),
        (_) => true,
      );
    },
5 Answers

I solved the issue in my code. My issue is that I was called navigator pop twice in a particular situation which caused the error.

This is my 1st answer so might not be very clear. But from what I understood while having this same problem is, you need to use push first before you can actually use pop.

You are using pop first so there is nothing into your history.

Try:

    InkWell(
        onTap: () {
          Navigator.of(context).pushNameed(ModalRoute.withName("previousjob"));
          Navigator.of(context).pushAndRemoveUntil(
            CupertinoPageRoute(
              builder: (BuildContext context) {
                return SettingMenu();
              },
            ),
            (_) => true,
          );
        },

In my case, it was because I tried to call pop after I have called pushAndRemoveUntil. After I remove the above-mentioned pop it worked fine.

Resolved! In my case, I was using this:

Navigator.of(context).pushReplacement(MaterialPageRoute())

I changed to this:

Navigator.push(context, MaterialPageRoute())

This happen when your route stack is empty. just befor call pop(), check it that capPop() or maybePop() return true.

Related