无法按下具有 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
而不是FlatButton
的onPressed
?
糟糕,一个小错误。我试图删除一个并留下另一个,但两次都不起作用
您的样本不包含任何会导致此问题的内容(我可以看到)。这可以通过在小部件树的上方设置另一个 GestureDetector 来解释。你能包括更多吗?另外,尝试查看是否曾经调用过 onTap(一些简单的东西,例如断点或打印语句)
@David 没有其他 GestureDetector。顺便说一句,它已经工作过一次,但突然停止工作。这是整个 main.dart 文件的代码:pastebin.com/cp8PqxXV
我认为link 与您的问题类似。
【参考方案1】:
正如 cmets 中所述,这是因为您的变换小部件。但是,查看您的代码,在我看来它不是您想要的小部件(如果我错了,请纠正我)。
您似乎想要做的是将您的子小部件放置在Stack
中。您不应该为此使用翻译小部件,而应该使用 Align
和 Positioned
小部件。小部件在父小部件中的位置,由于您的父小部件是一个堆栈,这将允许您将小部件放在彼此的顶部。
Transform.translate
小部件用于其他情况,例如动画组件或移动视觉元素(例如,在它存在之前,我已经使用它来实现 InteractiveViewer
),但是,它不应该是默认选择并且有额外的并发症。
【讨论】:
非常感谢!我会尽快尝试并(希望)确认您的答案!以上是关于无法按下具有 Navigator.push 功能的 Flutter Button (GestureDetector)的主要内容,如果未能解决你的问题,请参考以下文章
在 Flutter 中使用 Navigator.push() 时出现黑屏
Dart / Flutter:在没有上下文的页面之间导航(使用 Navigator)(所以没有 Navigator.push?)