【问题标题】:Flutter: smooth drawer transition for closing while navigating to another pageFlutter:导航到另一个页面时关闭的平滑抽屉过渡
【发布时间】:2021-01-26 22:59:58
【问题描述】:

使用 Flutter v.1.22.5,我将导航抽屉集成到我的应用程序中(需要添加到应该包含它的每个页面,对吗?)。点击 ListTiles 后,我在 ontap() 处理程序中调用 Navigator.pushReplacementNamed() 以导航到我的应用程序中的另一个页面。

            ListTile(
              title: Text('FooPage'),
              onTap: () {
                Navigator.pushReplacementNamed(context, '/foo'); //navigates to page and closes the drawer INSTANTLY
              },
            ),

然后应用程序会立即导航到相关页面,但会突然关闭导航抽屉 - 它会立即消失,没有任何平滑的关闭过渡。这是 Flutter 导航抽屉的正常行为还是我在这里犯了一些愚蠢的错误?有没有办法让应用程序在后台导航到所需的页面,同时顺利关闭抽屉?!

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    您可以弹出导航关闭抽屉,然后使用pushReplacementNamed。如果您想稍等片刻,也可以添加延迟。

    ListTile(
        title: Text('FooPage'),
        onTap: () {
            Navigator.pop(); // pop the drawer
            Navigator.pushReplacementNamed(context, '/foo');
        },
    ),
    

    有延迟:

    ListTile(
        title: Text('FooPage'),
        onTap: () async { // add async
            Navigator.pop();
            await Future.delayed(Duration(milliseconds: 150)); // wait some time
            Navigator.pushReplacementNamed(context, '/foo');
        },
    ),
    

    【讨论】:

    • 感谢您的建议。第一个解决方案不起作用,因为在抽屉关闭时执行 pushReplacementNamed()。必须通过延迟来完成(您的第二个解决方案)。谢谢你,但我仍然认为这是一个错误,因为我们正在谈论一个明显不符合预期的原生功能。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2020-07-28
    • 1970-01-01
    • 2022-08-16
    相关资源
    最近更新 更多