인프런 커뮤니티 질문&답변

SungWoo Jo님의 프로필 이미지

작성한 질문수

[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!

BottomSheet 디자인 마무리하기

GestureDetector 부분 onTap 함수 VoidCallBack 함수로 감싸는 이유?

24.08.21 08:14 작성

·

44

0

아래의 코드중에 온탭 생성자 부분에서 바로 onTap(e)를 사용하지 않고 보이드콜백 함수로 감싸줘야하는 이유가

child: GestureDetector(
                onTap: () {
                  ontap(e);
                },

해당 부분에서 onTap 메소드? 함수가 받는 형식은

제스처콜백 타입으로

typedef GestureTapCallback = void Function();

이지만 저희가 생성한 새로운 자료형은

void Function(String selectedColorName);

형태이기때문에 완전한 형식을 지켜주는 (){} 형태가 최 상단에 위치하고 그 아래에 저희가 사용하고자 하는 형태로 만들어진 함수를 다시 불러와줌으로서 논리적으로 작동하게 만들어주는게 맞나요?

생성한 onTap함수만 넣어서 에러를 읽어봤는데 제대로 이해가 안되서 질문 남깁니다.

답변 1

1

코드팩토리님의 프로필 이미지
코드팩토리
지식공유자

2024. 08. 21. 10:02

안녕하세요!

onTap에 입력돼야하는 타입은 이미 정해져있고 저희가 정의한 타입은 onTap의 타입과 일치하지 않기 때문에 onTap 내부에 함수를 실행합니다!

만약에 타입이 일치하더라도 onTap(e)가 아니라 onTap <- 괄호 없이 넣어줘서 정의만 전달해야 나중에 콜백으로 (탭한 후에) 함수 실행이 가능합니다. 왜냐면 탭했을때 onTap 괄호 없이 넣어준 함수를 실행해서 onTap() <- 이렇게 실행해주기 때문에 만약에 onTap()을 직접 제공한다면 onTap()()가 됩니다. 즉, 함수를 반환해야하는 상황이 되는거죠.

감사합니다!