无法按下具有 Navigator.push 功能的 Flutter Button (GestureDetector)

Posted

技术标签:

【中文标题】无法按下具有 Navigator.push 功能的 Flutter Button (GestureDetector)【英文标题】:Flutter Button (GestureDetector) with Navigator.push function cannot be pressed 【发布时间】:2021-01-16 00:35:49 【问题描述】:

我正在尝试使用 SizedBox 和 GestureDetector 作为父级将页面导航到注册屏幕。 这是以 Transform.translate Widget 开头的代码:

              offset: Offset(117.0, 455.17),
              child: GestureDetector(
                onTap: () 
                  Navigator.push(
                    context,
                    MaterialPageRoute(builder: (context) => SignUp()),
                  );
                ,
                child: SizedBox(
                    width: 150.0,
                      child: Text(
                        'Sign Up',
                        style: GoogleFonts.poppins(
                          fontSize: 26,
                          color: const Color(0xff202020),
                          fontWeight: FontWeight.w600,
                          height: 0.9615384615384616,
                        ),
                        textAlign: TextAlign.center,
                      ),
                ),
              )
          ),

我是 Flutter 的新手,所以如果需要更多代码或信息,请告诉我 :)

【问题讨论】:

您是否希望检测到GestureDetector onTap 而不是FlatButtononPressed 糟糕,一个小错误。我试图删除一个并留下另一个,但两次都不起作用 您的样本不包含任何会导致此问题的内容(我可以看到)。这可以通过在小部件树的上方设置另一个 GestureDetector 来解释。你能包括更多吗?另外,尝试查看是否曾经调用过 onTap(一些简单的东西,例如断点或打印语句) @David 没有其他 GestureDetector。顺便说一句,它已经工作过一次,但突然停止工作。这是整个 main.dart 文件的代码:pastebin.com/cp8PqxXV 我认为link 与您的问题类似。 【参考方案1】:

正如 cmets 中所述,这是因为您的变换小部件。但是,查看您的代码,在我看来它不是您想要的小部件(如果我错了,请纠正我)。

您似乎想要做的是将您的子小部件放置在Stack 中。您不应该为此使用翻译小部件,而应该使用 AlignPositioned 小部件。小部件在父小部件中的位置,由于您的父小部件是一个堆栈,这将允许您将小部件放在彼此的顶部。

Transform.translate 小部件用于其他情况,例如动画组件或移动视觉元素(例如,在它存在之前,我已经使用它来实现 InteractiveViewer),但是,它不应该是默认选择并且有额外的并发症。

【讨论】:

非常感谢!我会尽快尝试并(希望)确认您的答案!

以上是关于无法按下具有 Navigator.push 功能的 Flutter Button (GestureDetector)的主要内容,如果未能解决你的问题,请参考以下文章

每次Navigator.push到下一页时都会调用的回调

Navigator.push 没有动画 - Flutter

在 Flutter 中使用 Navigator.push() 时出现黑屏

Dart / Flutter:在没有上下文的页面之间导航(使用 Navigator)(所以没有 Navigator.push?)

FLUTTER:-我需要从Navigator.push()方法之后的方法返回小部件

InheritedWidget - 在 navigator.push 之后在 null 上调用 getter