mar*_*mar 0 flutter flutter-dependencies flutter-layout
如果我有设置宽度/高度手势检测器的空容器不起作用,但如果我添加类似颜色的东西,它就会开始工作。
测试应用:
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,
),
),
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
预期的行为是手势检测器在我设置它的子约束时起作用。这是所有小部件和其他检测器都可能发生的事情。
简单的用例示例 - 我想拖动一些容器,可以说宽度/高度为 4.0,但它太小了,所以我可以将它嵌入到宽度/高度为 16.0 且居中对齐的更大的 emptyContainer 中,然后可以拖动那个容器。
解决方法:添加透明颜色。
日志
Doctor summary(查看所有详细信息,运行 flutter doctor -v):[?] Flutter(Channel master,v0.4.1-pre.25,在 Mac OS X 10.13.4 17E202,locale en-US)[?] Android 工具链- 为 Android 设备开发 (Android SDK 27.0.3) [?] iOS 工具链 - 为 iOS 设备开发 (Xcode 9.3) [?] Android Studio(3.1 版)[!] IntelliJ IDEA Ultimate Edition(2018.1.2 版)?未安装 Flutter 插件;这增加了 Flutter 特定的功能。? 未安装 Dart 插件;这增加了 Dart 特定的功能。[?] 连接的设备(2 个可用)
!医生在 1 个类别中发现了问题。
没有子元素的有边界(高度和宽度)的容器只是一个占位符。因此,如果您使用 包装它GestureDetector,它将忽略点击或触摸,因为根据GestureDetector类的官方文档,By default a GestureDetector with an invisible child ignores touches;. 这就是原因,容器不会响应触摸/点击。
如果你仍然想将空盒响应触摸,你可以使用behavior: HitTestBehavior.opaque的特性GestureDetector。
希望这能回答你的问题。
| 归档时间: |
|
| 查看次数: |
1148 次 |
| 最近记录: |