Flutter - 检测屏幕上充满其他小部件的点击

Nac*_*era 5 widget gesture dart flutter

我正在尝试检测屏幕上的点击。我尝试了使用 的多种变体,GestureDetector但这只会导致应用程序检测到子元素不是 screen 上的点击

这是代码:

class QQHome extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        primaryColor: Colors.blueGrey,
      ),
      home: Scaffold(
        appBar: AppBar(
          centerTitle: true,
          title: Text('QuoteQuota'),
        ),
        body: GestureDetector(
          onTap: () => print('Tapped'),
          child: QQBody(),
        ),
      ),
    );
  }
}

class QQBody extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Text(
        'Hello, World!'
      ),
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

输出:当我点击“Hello, World!”时打印“tapped”。

预期输出:当我单击屏幕上的任何位置且文本位于中心时打印“tapped”。

我该怎么做呢?

Dar*_*han 8

使用GestureDetector's behavior属性并传递HitTestBehavior.opaque给它,它可以识别整个屏幕并在您点击屏幕上的任何地方时检测点击。

body: GestureDetector(
          behavior: HitTestBehavior.opaque,
          onTap: () => print('Tapped'),
          child: QQBody(),
        ),
Run Code Online (Sandbox Code Playgroud)

希望这能回答你的问题。