본문 바로가기
Flutter/Flutter FAQ

Flutter VoidCallback에 매개변수가 있는 함수를 전달하세요., Pass a function with parameters to a VoidCallback

by 베타코드 2023. 6. 14.
반응형

질문


Function에 매개 변수를 전달하여 VoidCallback을 전달하는 것이 가능한가요?

예를 들어 다음과 같은 것이 있을까요:

class MyClass {
  void doSomething(int i){

  }

  MyOtherClass myOtherClass = new MyOtherClass(doSomething);
}


class MyOtherClass {
  final VoidCallback callback(int);

  MyOtherClass(this.callback);

  callback(5);
}

답변


VoidCallback의 선언은 다음과 같습니다.

typedef void VoidCallback();

이는 인자가 없고 유용한 값을 반환하지 않는 함수의 타입입니다. 이것이 원하는 것은 아닌 것 같습니다. 프로그램이 구문적으로 유효하지 않기 때문에 정확히 무엇을 원하는지는 분명하지 않지만, 다음이 도움이 될 수 있습니다:

class MyClass { 
  static doSomething(int i) { /* ... */ }
  MyOtherClass myOtherClass = new MyOtherClass(doSomething);
}
class MyOtherClass {
  final void Function(int) callback;
  MyOtherClass(this.callback);
  void callCallaback() { callback(5); }
}

여기서 callback 필드의 타입을 하나의 정수 인자로 호출할 수 있고 유용한 값을 반환하지 않는 함수의 타입으로 정의합니다. doSomething 메소드는 그 타입을 가지므로 callback에 할당할 수 있습니다.

함수의 이름을 지정하기 위해 typedef를 사용할 수도 있습니다:

typedef Int2VoidFunc = void Function(int);
// 또는: typedef void Int2VoidFunc(int arg);
class MyOtherClass {
  final Int2VoidFunc callback;
  MyOtherClass(this.callback);
  void callCallaback() { callback(5); }
}

효과는 정확히 동일하지만 함수 타입에 더 짧은 이름을 사용할 수 있도록 하지만, 그것은 많이 사용할 경우에만 의미가 있습니다.

반응형

댓글