هناك نوعان من أجهزة الكشف عن الإيماءات يشتملان على حاوية بها حشوة ،
الاختلاف الوحيد هو ما إذا كانت الحاوية الداخلية لها خاصية اللون أم لا.
انقر فوق مساحة حول الرموز ، أي انقر فوق منطقة المساحة المتروكة:
import 'package:flutter/foundation.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/material.dart';
void main() {
final GlobalKey<ScaffoldState> _key = new GlobalKey<ScaffoldState>();
runApp(new MaterialApp(
title: 'GestureDetector Test',
home: new Builder(builder: (BuildContext context) {
return new Scaffold(
key: _key,
appBar: new AppBar(title: new Text("GestureDetector Test")),
body: new Column(
children: <Widget>[
new Container(
child: new GestureDetector(
onTap: () {
_key.currentState.showSnackBar(new SnackBar(content: new Text("Foo!")));
},
child: new Container(
color: Colors.blue,
padding: const EdgeInsets.all(16.0),
child: const Icon(Icons.star, size: 32.0),
),
)
),
new Container(
child: new GestureDetector(
onTap: () {
_key.currentState.showSnackBar(new SnackBar(content: new Text("Bar!")));
},
child: new Container(
//color: Colors.blue, // no color
padding: const EdgeInsets.all(16.0),
child: const Icon(Icons.star, size: 32.0),
),
)
),
],
),
);
}),
));
}
اضغط على الأيقونة نفسها ، سيتم استدعاء كل من onTap.
ألفا 0.0.20
[✓] Flutter (on Mac OS X 10.12.6 16G1114, locale ja-JP, channel alpha)
• Flutter at /Applications/flutter
• Framework revision 8f65fec5f5 (6 weeks ago), 2017-12-12 09:50:14 -0800
• Engine revision edaecdc8b8
• Tools Dart version 1.25.0-dev.11.0
• Engine Dart version 2.0.0-edge.d8ae797298c3a6cf8dc9f4558707bd2672224d3e
[✓] Android toolchain - develop for Android devices (Android SDK 27.0.3)
• Android SDK at /Users/najeira/Library/Android/sdk
• Android NDK at /Users/najeira/Library/Android/sdk/ndk-bundle
• Platform android-27, build-tools 27.0.3
• ANDROID_HOME = /Users/najeira/Library/Android/sdk
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
[✓] iOS toolchain - develop for iOS devices (Xcode 9.2)
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 9.2, Build version 9C40b
• ios-deploy 1.9.2
• CocoaPods version 1.2.1
[✓] Android Studio (version 3.0)
• Android Studio at /Applications/Android Studio.app/Contents
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-915-b08)
[✓] IntelliJ IDEA Ultimate Edition (version 2017.3.1)
• Flutter plugin version 20.0.3
• Dart plugin version 173.3942.31
هذا متعمد. يمكنك تبديل السلوك باستخدام الوسيطة behavior
إلى GestureDetector
.
راجع https://docs.flutter.io/flutter/rendering/HitTestBehavior-class.html
شكرا!
أفهم أن هذا سلوك مقصود ، لذا أغلق هذا.
أهلا مرة أخرى،
أتساءل فقط: هل هناك أي سبب محدد لعدم تشغيل الإيماءات على الحشو أساليب GestureDetector عندما يكون السلوك "deferToChild"؟ في حين أنه من المنطقي تمامًا أن يكون لديك سلوكيات مختلفة ، يجب أن تتضمن "deferToChild" بالتأكيد أيضًا حشوة طفل GestureDetectors ، من وجهة نظري.
التعليق الأكثر فائدة
هذا متعمد. يمكنك تبديل السلوك باستخدام الوسيطة
behavior
إلىGestureDetector
.راجع https://docs.flutter.io/flutter/rendering/HitTestBehavior-class.html