Flutter 颤振导航器v2.0如何弹出子嵌套路线

Flutter 颤振导航器v2.0如何弹出子嵌套路线,flutter,flutter-navigation,flutter-bottomnavigation,Flutter,Flutter Navigation,Flutter Bottomnavigation,我一直在尝试Flatter new declarative Navigator v2.0,接下来,我决定更改BookDetails屏幕中的FlatButton弹出() class BookDetailsScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( body: Padding( children: [

我一直在尝试Flatter new declarative Navigator v2.0,接下来,我决定更改BookDetails屏幕中的FlatButton弹出()

class BookDetailsScreen extends StatelessWidget {
  @override
 Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
       children: [
            FlatButton(
              onPressed: () {
               Navigator.of(context).pop();
              },
              child: Text('Back'),
              ),
          ],
}
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,
      ),
\u AppShellState中的父路由器AppBar()

class BookDetailsScreen extends StatelessWidget {
  @override
 Widget build(BuildContext context) {
    return Scaffold(
      body: Padding(
       children: [
            FlatButton(
              onPressed: () {
               Navigator.of(context).pop();
              },
              child: Text('Back'),
              ),
          ],
}
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,
      ),
class\u AppShellState扩展状态

我的问题是,我正在使用\u routerDelegate.popRoute()它正在工作,但我不确定这是否是正确的方法


PS:如果有人有一个使用Navigator v2.0的更复杂的示例,我是一个新手,需要知道如何分离和组织代码的最佳实践,如何添加更多路由,例如编辑和登录屏幕?处理更多的对象,如用户、书籍、作者等。

当出现BookDetailsScreen时,我有一个调整来显示back按钮,这有点自然

  • \u AppShellState
    类中

  • 希望这是有意义的。

    当出现BookDetailsScreen时,我有一个很自然的调整来显示back按钮

  • \u AppShellState
    类中

  • 希望这是有意义的。

    谢谢Kai,这是一个更清洁的解决方案!!!谢谢Kai,更多更清洁的解决方案!!!