dart Flutter,如何禁用TextFormField内部的水平滑动?

y53ybaqx  于 2023-03-10  发布在  Flutter
关注(0)|答案(1)|浏览(150)

我有一个返回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页面。

r1wp621o

r1wp621o1#

您是否尝试过在TextFormField的focusNode参数中传递一个FocusNode对象?这是否解决了您的问题?

TextFormField(
    focusNode: FocusNode(canRequestFocus: false),
),

来自Flutter文件canRequestFocus property
默认值为true。如果希望在调用requestFocus时此节点不执行任何操作,请设置为false。如果在FocusScopeNode上设置为false,将导致作用域节点的所有子级都不可聚焦。

相关问题