Я пытаюсь реализовать метод Navigator 2.0. Единственное, чего я не могу заставить работать, так это нажатия кнопки возврата. Когда я нажимаю кнопку «Назад», приложение просто закрывается и не переходит на предыдущую страницу. Я попробовал виджет WillPopPage, но кнопка «Назад» обошла его.
вот пример кода, который не работает при обратном нажатии.
import 'package:flutter/material.dart';
main(List<String> args) {
runApp(TestApp());
}
class TestApp extends StatefulWidget {
@override
_TestAppState createState() => _TestAppState();
}
class _TestAppState extends State<TestApp> {
bool go = false;
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Navigator(
pages: [
// page 1
MaterialPage(
child: W1(onTapped: () {
setState(() => go = true);
}),
),
// page 2
if (go) MaterialPage(child: W2()),
],
onPopPage: (route, result) {
if (!route.didPop(result)) return false;
go = false;
return true;
},
),
);
}
}
class W1 extends StatelessWidget {
final void Function() onTapped;
const W1({Key key, this.onTapped}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FlatButton(
onPressed: onTapped,
child: Text("Go to second"),
),
),
);
}
}
class W2 extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Text("pressing the back button is exiting the app.."),
),
);
}
}
Я уже написал много кода с этим подходом, поэтому я больше не могу вернуться к императивной навигации. Как выполнять жим со спины при таком подходе?