해결된 질문
작성
·
177
답변 1
0
안녕하세요!
onDestinationSelected: controller.onChangeNavBar 를 직관적으로 풀어서 작성해볼게요 :)
직관적인 표현
onDestinationSelected: (int idx) {
controller.onChangeNavBar(idx);
}
원래 형태는 위와 같습니다.
onDestinationSelected 에는 int 값에 대한 파라미터가 1개 존재해요.
(int idx) {} 부분이 Function 이기 때문에,
같은 형태의 Function 인 onChangeNavBar(idx) 를
마치 변수처럼 onChangeNavBar 로 넣어주게 되면
메소드의 파라미터가 그대로 대입되어 사용할 수 있게 됩니다.
간단한 표현
onDestinationSelected: controller.onChangeNavBar
그래서 1번과 2번은 완전히 동일하게 작동할 수 있어요.
마찬가지로 더 많은 파라미터를 가진 메소드를 이용할 때도 같은 원리로 사용할 수 있어요.
아래 추가 예시에서도 ExamWidget 을 표현한 2가지 방식 모두 완전히 동일하게 실행되게 됩니다.
추가 예시
void onExam(int p1, bool p2, String p3) {
print('$p1, $p2, $p3');
}
ExamWidget(
onExamEvent: onExam
)
// 또는
ExamWidget(
onExamEvent: (int p1, bool p2, String p3) {
onExam(p1, p2, p3);
}
)
또 다른 질문이 있으면 다시 남겨주세요 😀
감사합니다!