작성
·
66
0
아래의 코드중에 온탭 생성자 부분에서 바로 onTap(e)를 사용하지 않고 보이드콜백 함수로 감싸줘야하는 이유가
child: GestureDetector(
onTap: () {
ontap(e);
},
해당 부분에서 onTap 메소드? 함수가 받는 형식은
제스처콜백 타입으로
typedef GestureTapCallback = void Function();
이지만 저희가 생성한 새로운 자료형은
void Function(String selectedColorName);
형태이기때문에 완전한 형식을 지켜주는 (){} 형태가 최 상단에 위치하고 그 아래에 저희가 사용하고자 하는 형태로 만들어진 함수를 다시 불러와줌으로서 논리적으로 작동하게 만들어주는게 맞나요?
생성한 onTap함수만 넣어서 에러를 읽어봤는데 제대로 이해가 안되서 질문 남깁니다.
답변 1
1
안녕하세요!
onTap에 입력돼야하는 타입은 이미 정해져있고 저희가 정의한 타입은 onTap의 타입과 일치하지 않기 때문에 onTap 내부에 함수를 실행합니다!
만약에 타입이 일치하더라도 onTap(e)가 아니라 onTap <- 괄호 없이 넣어줘서 정의만 전달해야 나중에 콜백으로 (탭한 후에) 함수 실행이 가능합니다. 왜냐면 탭했을때 onTap 괄호 없이 넣어준 함수를 실행해서 onTap() <- 이렇게 실행해주기 때문에 만약에 onTap()을 직접 제공한다면 onTap()()가 됩니다. 즉, 함수를 반환해야하는 상황이 되는거죠.
감사합니다!