포스트

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 라이센스를 따릅니다.