Home > Software engineering >  Pop a screen in between in Flutter
Pop a screen in between in Flutter

Time:04-22

I pushed three screens: ScreenOne > ScreenTwo(1) > ScreenTwo(2)

I'm at the second instance of ScreenTwo now, but I want to remove the first instance of ScreenTwo from the stack, so it should be ScreenOne > ScreenTwo(2).

When launching ScreenTwo(2) I know I shouldn't remove ScreenTwo(1) from the stack yet, so I can't just call Navigator.replace(). I really need to have ScreenOne > ScreenTwo(1) > ScreenTwo(2) for some time, and then remove the first instance of ScreenTwo(1).

How I can handle it? Navigator.pop() and similars only take into account the screen or screens on top of the stack.

If someone needs more context, this is for a phone app. Not an app for phones, but an app that mimics the behavior of a phone. So in reality, we have HomeScreen > CallScreen(Caller1) > CallScreen(Caller2). As the app can handle different calls at a time the first approach has been to map every call to a CallScreen and let every screen handle their own call events, so the first call can finish while the user is talking in the second one.

CodePudding user response:

As discussed in this post: How can I pop to specific screen in flutter

I quote:

If you didn't define any route in the MaterialApp then you need to define at the time of push.

Navigator.of(context).push(
    MaterialPageRoute(builder: (_) {
      return SecondPage();
    },
      settings: RouteSettings(name: 'SecondPage',),
    ));

You need to define the same route name

Navigator.of(context).popUntil((route){
  return route.settings.name == 'SecondPage';
})

;

Or as an alternative if you did define the routes you can use that:

pushNamedAndRemoveUntil(
            '/BottomNavigation', (Route<dynamic> route) => false);

CodePudding user response:

In this case it is most suitable that you go from screen1 > Screen2 > replace previous with Screen3

Use this navigation from screen 2 to screen 3. Navigator.pushReplacementNamed(context,"Third Screen");

  • Related