【发布时间】:2021-02-13 11:27:47
【问题描述】:
我正在尝试实现 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.."),
),
);
}
}
我已经用这种方法编写了很多代码,所以我不能再回到命令式导航了。这种方式如何处理后压?
【问题讨论】:
标签: flutter dart declarative flutter-navigation