Flutter: GestureDetector λ™μž‘μ€ λ‚΄λΆ€ Container 속성에 따라 λ‹€λ¦…λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 01μ›” 23일  Β·  3μ½”λ©˜νŠΈ  Β·  좜처: flutter/flutter

λ²ˆμ‹ 단계

νŒ¨λ”©μ΄ μžˆλŠ” μ»¨ν…Œμ΄λ„ˆλ₯Ό ν¬ν•¨ν•˜λŠ” 두 개의 GestureDetectorκ°€ μžˆμŠ΅λ‹ˆλ‹€.
μœ μΌν•œ 차이점은 λ‚΄λΆ€ μ»¨ν…Œμ΄λ„ˆμ— 색상 속성이 μžˆλŠ”μ§€ μ—¬λΆ€μž…λ‹ˆλ‹€.

μ•„μ΄μ½˜ μ£Όλ³€μ˜ 곡간을 νƒ­ν•©λ‹ˆλ‹€. 즉, νŒ¨λ”© μ˜μ—­μ„ νƒ­ν•©λ‹ˆλ‹€.

  • μ»¨ν…Œμ΄λ„ˆμ— 색상이 있음: onTap이 호좜됨
  • μ»¨ν…Œμ΄λ„ˆμ— 색상이 μ—†μŠ΅λ‹ˆλ‹€. onTap이 ν˜ΈμΆœλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
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 μ°Έμ‘°

λͺ¨λ“  3 λŒ“κΈ€

이것은 μ˜λ„μ μž…λ‹ˆλ‹€. behavior 인수λ₯Ό μ‚¬μš©ν•˜μ—¬ λ™μž‘μ„ GestureDetector μ „ν™˜ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
https://docs.flutter.io/flutter/rendering/HitTestBehavior-class.html μ°Έμ‘°

감사 ν•΄μš”!

이것은 μ˜λ„λœ λ™μž‘μž„μ„ μ΄ν•΄ν•˜λ―€λ‘œ 이λ₯Ό λ‹«μŠ΅λ‹ˆλ‹€.

μ•ˆλ…• λ‹€μ‹œ,
κΆκΈˆν•œ 점이 μžˆμŠ΅λ‹ˆλ‹€. λ™μž‘μ΄ "deferToChild"일 λ•Œ νŒ¨λ”©μ˜ μ œμŠ€μ²˜κ°€ GestureDetector λ©”μ„œλ“œλ₯Ό νŠΈλ¦¬κ±°ν•˜μ§€ μ•ŠλŠ” νŠΉλ³„ν•œ μ΄μœ κ°€ μžˆμŠ΅λ‹ˆκΉŒ? λ‹€λ₯Έ λ™μž‘μ„ κ°–λŠ” 것이 μ™„μ „νžˆ μ˜λ―Έκ°€ μžˆμ§€λ§Œ "deferToChild"λŠ” λ‚΄ κ΄€μ μ—μ„œ GestureDetectors μžμ‹μ˜ νŒ¨λ”©λ„ ν™•μ‹€νžˆ 포함해야 ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰