Флаттер: как реализовать обратный вызов - PullRequest
1 голос
/ 22 декабря 2019

Как реализовать обратный вызов и вернуть сообщение об ошибке?

Функция входа из класса AuthService:

static void login(String email, String password) async {
    try {
      await FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password);
    } catch (e) {
      print(e);
    }
  }

Отправить функцию из класса входа в систему:

_submit() {
   // If fail to login then return the error message
   AuthService.login(_email, _password);
}

Ответы [ 2 ]

0 голосов
/ 23 декабря 2019
  // wrapping the firebase calls
  Future<FirebaseUser> loginUser({String email, String password}) {
    return FirebaseAuth.instance
        .signInWithEmailAndPassword(email: email, password: password);
  }

информация о пользователе возвращается, вы не уверены, для чего нужен обратный вызов?

 userInfo = await AuthService().loginUser(email: _email, password: _password);
0 голосов
/ 23 декабря 2019

Попробуйте следующее:

Future<AuthResult> login(String email, String password) async {
    try {
    Future<AuthResult> result = await FirebaseAuth.instance.signInWithEmailAndPassword(email: email, password: password);
    return result;
    } catch (e) {
      print(e);
    }
  }

Затем вы можете вызвать метод следующим образом:

_submit() {
   // If fail to login then return the error message
   login(_email, _password).then((result) => {
      print(result);
  });
}

Метод signInWithEmailAndPassword возвращает Future<AuthResult>, поэтому присвойте его этому типу, ключевое слово await будет ждать, пока метод завершит выполнение, а затем вернет значение типа Future<AuthResult>.

Будущее представляет результат асинхронной операции и может иметь два состояния: не завершено или завершено.

Когда вы вызываете метод login(), вы можете добавить метод then(), который регистрирует обратные вызовы, которые будут вызваны после завершения этого будущего.

Когда это будущее завершается со значением, обратный вызов onValue будет вызываться с этим значением.

https://api.dartlang.org/stable/2.7.0/dart-async/Future/then.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...