我有一个返回GestureDetector
的类,在里面我控制水平滑动。如果向左滑动,我会移动到另一个屏幕,如果向右滑动,我会移动到另一个屏幕。我正在移动的页面是这个类的孩子。问题是,这些页面里面有TextFormField
,当我在字段中键入内容并试图选择文本时,手势检测器正在检测它作为一个滑动和滑动到另一个屏幕,而不是选择文本。我想要的是保持TextFormField
的检测器。我的主页代码是:
class _MainPageState extends State<MainPage> {
SwipeController swipeController = Get.put(SwipeController());
@override
Widget build(BuildContext context) {
return Obx(() {
return GestureDetector(
onPanUpdate: (details) {
if (details.delta.dx > 0) {
setState(() {
swipeController.index.value = 0;
});
} else if (details.delta.dx < 0) {
setState(() {
swipeController.index.value = 1;
});
}
},
child: swipeController.index.value == 0 ? AuthorPage() : DesignerPage(),
);
});
}
}
**AuthorPage()和DesignerPage()**是具有TextFormField
的页面。当滑动发生时,屏幕移动到它们。这些页面是典型的返回Scaffold
页面。
1条答案
按热度按时间r1wp621o1#
您是否尝试过在TextFormField的focusNode参数中传递一个FocusNode对象?这是否解决了您的问题?
来自Flutter文件canRequestFocus property:
默认值为true。如果希望在调用requestFocus时此节点不执行任何操作,请设置为false。如果在FocusScopeNode上设置为false,将导致作用域节点的所有子级都不可聚焦。