【问题标题】:Navigator.pop() canceles InkWell animation on a DrawerNavigator.pop() 取消 Drawer 上的 InkWell 动画
【发布时间】:2019-08-16 20:11:49
【问题描述】:

这是我的印象,还是当我们在Drawer 上调用Navigator.pop 时,从InkWell 水龙头内,InkWell 启动画面根本不显示?这是预期的行为吗?有什么办法吗?

当用户单击我的Drawer 的标题时,我想关闭我的Drawer 并打开一个新的Route。代码工作正常,但用户点击没有反馈,因为我的标题周围的 InkWell 根本没有动画。如果我删除Navigator.pop(),它会按预期显示墨水飞溅,但当然,它不会关闭Drawer

这是我正在做的事情的 sn-p:

 Widget build(BuildContext context) {
    return Drawer(
      child: ListView(
        children: <Widget>[
          InkWell(
            onTap: () {
              Navigator.pop(context);
              Navigator.popAndPushNamed(context, '/myRoute');
            },
            child: DrawerHeader(
...

【问题讨论】:

    标签: flutter flutter-layout flutter-animation


    【解决方案1】:

    我做了一个快速测试,运行正常(iOS 模拟器)。

    也许有点傻,但请确保将 Material() 作为父级,并检查您用于启动的颜色。

    您还可以应用一点延迟来验证它是否正常工作。

    child: Material(
        child: InkWell(
            onTap: () async {
                await Future.delayed(Duration(milliseconds: 500));
                Navigator.pop(context);
            },
            ...
    

    【讨论】:

    • 我正在 Android 上测试并删除 pop 我可以看到墨水飞溅的动画,但我会尝试你的代码,看看会发生什么。
    • 哦,只是一件事,尝试pop而不是pushNamed另一条路线,这就是问题所在。
    • 我觉得有popAndPushNamed()方法不行吗?
    • 是的,我忘记了,但它并没有改变行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2021-01-18
    • 1970-01-01
    • 2010-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多