Это работает ...
Navigator.removeRoute(context, MaterialPageRoute(builder: (context) => ThePage()));
Вы должны указать Route
, которое вы хотите удалить, а не имя
Пример
var page2Route = MaterialPageRoute(builder: (context) => Page2());
var page3Route = MaterialPageRoute(builder: (context) => Page3());
class Page1 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Page 1"),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.navigate_next),
onPressed: () {
Navigator.push(
context, page2Route);
},
),
);
}
}
class Page2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Page 2"),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.navigate_next),
onPressed: () {
Navigator.push(
context, page3Route);
},
),
);
}
}
class Page3 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Page 3"),
),
floatingActionButton: FloatingActionButton.extended(
icon: Icon(Icons.delete),
label: Text("Remove Page 2"),
onPressed: () {
Navigator.removeRoute(
context, page2Route);
},
),
);
}
}
Вывод:
![enter image description here](https://i.stack.imgur.com/cZdNi.gif)