Callback, VoidCallback, Function, ValueChanged 비교
다음은 Flutter와 Dart에서 자주 사용하는 Callback, VoidCallback, Function, ValueChanged의 차이를 비교한 표입니다:
코드 예시 1. Callback void Function() 타입으로 함수를 전달받아 호출합니다.
1
2
3
4
5
6
7
8
void executeCallback(void Function() callback) {
callback();
}
executeCallback(() {
print("Callback 호출");
});
2. **VoidCallback** VoidCallback은 void Function()을 typedef로 선언한 것으로, 반환값 없이 실행되는 함수임을 명확히 표현합니다.
1
2
3
4
5
6
7
8
9
10
typedef VoidCallback = void Function();
void executeVoidCallback(VoidCallback callback) {
callback();
}
executeVoidCallback(() {
print("VoidCallback 호출");
});
3. **Function** Function은 매개변수와 반환값의 타입 정보를 제공하지 않으며, 다양한 함수 형태를 받을 수 있습니다.
1
2
3
4
5
6
7
8
void executeFunction(Function callback) {
callback("Hello");
}
executeFunction((value) {
print("Function 호출, 값: $value");
});
4. **ValueChanged** ValueChanged는 단일 값을 전달받아 처리할 때 적합하며, 타입이 명확합니다.
1
2
3
4
5
6
7
8
9
10
typedef ValueChanged = void Function(T);
void executeValueChanged(ValueChanged callback) {
callback("Hello");
}
executeValueChanged((value) {
print("ValueChanged 호출, 값: $value");
});
- Callback: 간단히 함수 호출을 전달받아 실행할 때. 타입 정보가 필요 없는 경우.
- VoidCallback: 반환값이 없는 함수 호출을 전달받아 실행할 때. Flutter의 기본 콜백 스타일을 따를 때.
- Function: 다양한 함수 형태를 전달받아야 할 때. (타입 안전성이 낮음)
- ValueChanged: 단일 값을 전달받아 처리하는 함수가 필요할 때. (타입 안전성이 높음)
- Callback과 **VoidCallback**은 비슷하지만, **VoidCallback**은 반환값 없이 실행되는 함수임을 명확히 전달합니다.
- Function은 타입과 형태에 제한 없이 유연하게 사용할 수 있지만, 타입 안정성과 명확성이 부족합니다.
- ValueChanged는 단일 값을 전달받는 경우에 가장 적합하며, 타입 안정성을 보장합니다. Flutter의 표준 이벤트 처리 방식입니다.
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
