如果我的容器没有设置宽度/高度手势检测器,则无法使用,但是如果添加了类似颜色的东西,它将开始起作用。
测试应用:
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Flutter Demo Home Page'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
click(){
_counter++;
print('Clicked times: $_counter');
}
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text(widget.title),
),
body: new Center(
child: new GestureDetector(
onTap: click,
child: new Container(
width: 50.0,
height: 50.0,
//color: Colors.transparent,
),
),
)
);
}
}
预期的行为是当我将手势检测器设置为 子约束。这是所有可能发生的事情 小部件和其他检测器。
简单用例示例-我想拖动一些让 比如说width / height 4.0,但是太小了,所以我可以将其嵌入 较大的emptyContainer,宽度/高度为16.0,中心对齐 并可以将其拖动。
解决方法:添加透明颜色。
日志
医生摘要(要查看所有详细信息,请运行flutter doctor -v):[✓] Flutter(在Mac OS X 10.13.4 17E202上为Channel master,v0.4.1-pre.25, 语言环境(美国)[✓] Android工具链-为Android设备开发 (Android SDK 27.0.3)[✓] iOS工具链-为iOS设备开发 (Xcode 9.3)[✓] Android Studio(版本3.1)[!] IntelliJ IDEA 终极版(2018.1.2版) tter未安装Flutter插件;这增加了Flutter的特定功能。 art未安装Dart插件;这增加了Dart特定的功能。 [✓]已连接的设备(2个可用)
!医生发现了1类问题。
答案 0 :(得分:0)
一个带有边界(高度和宽度)且没有子代的容器只是一个占位符。因此,如果用GestureDetector
包装它,它将忽略轻按或触摸,因为根据GestureDetector
类的官方文档By default a GestureDetector with an invisible child ignores touches;
。这就是原因,容器无法响应触摸/点击。
如果您仍然希望空容器响应触摸,则可以使用behavior: HitTestBehavior.opaque
的{{1}}属性。
希望这能回答您的问题。