Интерфейс Dart — Pass в качестве параметра

#flutter #dart

#flutter #dart

Вопрос:

Я ищу аналогичное решение для передачи интерфейса в качестве paremeter в функции, подобной Kotlin:

 test(object: Handler {
    override fun onComplete() {

    }
})
 

Единственное, что я нахожу для Dart, — это использование implements в классе, что хорошо, но не то, что мне нужно.

До сих пор мой подход заключался в создании абстрактного класса:

 abstract class AuthListener{
  void onChange(AuthState authState);
}
 

Запуск прослушивателя:

 isSignedInListener(AuthListener authListener){
    FirebaseAuth.instance
        .authStateChanges()
        .listen((User user) {
      if (user == null) {
        return authListener.onChange(AuthState.SIGNED_OUT);
      } else {
        return authListener.onChange(AuthState.SIGNED_IN);
      }
    });
  }
 

И теперь мне нужно прослушать ответ, в котором мне нужна помощь:
введите описание изображения здесь

Ответ №1:

Вы можете создать функцию и использовать ее в качестве обратного вызова (передать методам и т. Д.).

Функция может быть помещена в переменную:

   Function(AuthState authState) callback;
 

или в качестве аргумента:

 void isSignedInListener(Function(AuthState authState) callback) {}

auth.isSignedInListener((authState) {
  // do something here
});