我一直在尝试更新新的声明式 Navigator v2.0,按照这个 johnpryan 示例,我决定在 BookDetailsScreen 中更改FlatButton pop () :
class BookDetailsScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: Padding(
children: [
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text('Back'),
),
],
}
到_AppShellState中的父路由器AppBar():
class _AppShellState extends State<AppShell> {
InnerRouterDelegate _routerDelegate;
ChildBackButtonDispatcher _backButtonDispatcher;
@override
Widget build(BuildContext context) {
var appState = widget.appState;
_backButtonDispatcher.takePriority();
return Scaffold(
appBar: appState.selectedBook != null
? AppBar(
leading: IconButton(
icon: Icon(Icons.arrow_back),
onPressed: () => _routerDelegate.popRoute(),
),
actions: [
IconButton(
icon: Icon(Icons.more_vert),
onPressed: () => null,
)
],
)
: AppBar(),
body: Router(
routerDelegate: _routerDelegate,
backButtonDispatcher: _backButtonDispatcher,
),
我的问题是,我正在使用_routerDelegate.popRoute()它正在工作,但我不确定这是否是正确的方法?
PS:如果有人使用 Navigator v2.0 有一个更复杂的示例,我是 Flutter 的新手,需要了解如何分离和组织我的代码的最佳实践,如何添加更多路由,例如编辑和登录屏幕?使用更多对象,如用户、书籍、作者等...