inflearn logo
강의

Course

Instructor

[Code Factory] [Beginner] Flutter 3.0 App Development - Escape Beginner Status Today with 10 Projects!

Finalizing the BottomSheet design

198강 BottomSheet 디자인 강좌 이해 돕기

12

pansci5528

2 asked

0

한 시간 쳐다 보니 이해 됩니다. 자식이름은 원래 언드바를 붙여서 내부에서만 사용하는 위젯임을 나타내야 하는데, 보안상 언드라인은 자동제거됩니다. 위젯이름 앞에 언드바 가 있는 것으로 읽으면 좋겠습니다.

먼저 Categories()의 부모에서 자식의 onTap 속성에 배정해 준 함수가 (String color){ setState(() { selectedColor = color; }); } 입니다만 이는 절대 자동실행되지 않습니다. 그냥 이런 동작을 하겠다고만 지정되었을 뿐입니다. 실제 동작은 자식인 Categories내에서 일어납니다.

Categories 안에 에 GestureDetector위젯이 있고, 그것의 기본 속성 onTap:에, 즉 컬러 동그라미에 탭을 했을 때, 일어나는 일을 저정합니다. 이 때 핵심은 부모로부터 _Categories의 인스턴스를 생성할 때 받은 함수(위에서 적은 함수)가 Categories의 멤버변수 onTap이라는 변수에 저장되어 있다는 것입니다. 그래서 누군가 탭하면 즉시 (){ onTap(e);}가 실행됩니다. 여기서 onTap(e)은 onTap이라는 변수에 저장된 부모로부터 받은 함수입니다. 부모로부터 받을 때 String하나를 받도록 받았으므로 String인 e를 매개변수로 사용하였습니다. 즉 부모는 실행할 동작의 모양만 지정하고 결코 실행하지 않습니다. 자식은 생성될 때 부모로부터 그 동작을 받아 onTap변수에 저장합니다. 누군가 탭하였을 때, 부모로부터 받은 그 함수를 실행합니다. onTap 변수에 저장되어 있으므로 onTap()으로 실행하며, String color를 반드시 갖고 와야 실행하므로 e 가 들어갑니다.

flutter 클론코딩

Answer 1

0

communityai8509

안녕하세요, 인프런 AI 인턴입니다. 바닷돌님께서 작성하신 내용은 Flutter에서의 부모 자식 간 함수 호출과 GestureDetector의 동작에 대한 이해를 돕는 좋은 설명으로 보입니다.

Flutter에서 GestureDetector 위젯은 사용자의 터치 이벤트를 감지하여 특정 동작을 수행할 수 있게 해줍니다. 부모 위젯에서 자식 위젯으로 함수를 전달할 때, 자식 위젯은 부모로부터 받은 함수에 특정 파라미터를 통해 동작을 정의할 수 있습니다. 예를 들어, onTap 속성은 사용자의 탭 이벤트를 감지하게 되며, 실제 동작은 탭이 일어났을 때 정의된 함수가 호출됩니다.

기존 강의와 유사한 질문과 답변을 본다면, 다음의 URL을 참고 가능할 것 같습니다. 다양한 예제 코드와, 해당 코드가 어떻게 동작하는지에 대한 설명을 통해 이해를 확장해 볼 수 있을 것입니다.

  1. GestureDetector 부분 onTap 함수 VoidCallBack 함수로 감싸는 이유?: 이 질문에서는 GestureDetectoronTap 이벤트와 관련된 설명이 있습니다.

질문에 대한 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

video_call 플러그인 설치후 에러 발생

0

45

1

SDK 안드로이드 설치 질문!

0

59

1

코드팩토리 디스코드 링크 다시 부탁드려요~

0

92

1

Webview를 이용해서 URL 상의 페이지 출력 불가

0

69

1

홈스크린 함수를 함축해서 main.dart에 옮기는 문제

0

55

1

플레이스토어

0

59

1

아고라 엔진 init 함수의 반환타입이 Future<void> 이것의 의미는 무엇인가요?

0

55

1

가이드라인 질문

0

57

0

emulator 에러 환경설정 뭐가 문제 일까요??

0

76

1

emulator 실행 오류

0

93

3

Column을 가로방향 최대 사이즈를 차지하도록 하는 방법에 관련

0

71

1

pubspec.yaml에서 font를 추가하면서 weight 값을 지정하는 것이 의미가 있는 것인지 문의

0

43

1

setState()를 호출하지 않으면 build가 실행 안되는 건가요?

0

53

1

video_call 플러그인 설치시 에러문제

0

63

1

children 안의 if 문에서 { } 못쓰는 이유?

0

48

1

이렇게 오류가 떠요

0

63

1

AppBar 사용했는데

0

61

2

[문제해결] '오늘도 출첵!' 의 171번 강의에서 중요한 문제를 발견했습니다

0

56

1

StatefulWidget 실습 에러가 발생합니다.[해결완료]

0

63

1

Video Player 프로젝트에 대한 추가 질문

0

53

0

Row위젯이나 column위젯의 위치는 누가 정하나요??

0

42

1

geolocator 오류때문에 개발진행이 불가능입니다

0

62

1

API 관련 이슈

0

85

2

VoidCallback 뒤에 null 연산자 표기에 관한 질문

0

45

1