then абстрактный метод
Future<S> then<S>(Регистрирует обратные вызовы, которые должны быть вызваны, когда это будущее завершено.
Когда это будущее завершается значением, обратный вызов onValue будет вызван с этим значением. Если это будущее уже завершено, обратный вызов не будет вызван немедленно, а будет запланирован на более позднюю микрозадачу.
Если onError предоставлен, и это будущее завершается с ошибкой, обратный вызов onError вызывается с этой ошибкой и её трассировкой стека. Обратный вызов onError должен принимать либо один аргумент, либо два аргумента. Если onError принимает два аргумента, он вызывается как с ошибкой, так и с трассировкой стека; в противном случае он вызывается только с объектом ошибки.
Возвращает новое Future, которое завершается результатом вызова onValue (если это будущее завершается значением) или вызова onError (если это будущее завершается с ошибкой).
Если вызванный обратный вызов выбрасывает исключение, возвращаемое будущее завершается выброшенной ошибкой и трассировкой стека ошибки. В случае onError, если выброшенное исключение является identical аргументом ошибки в onError, выброс считается повторным выбросом, и используется исходная трассировка стека.
Если обратный вызов возвращает Future, будущее, возвращённое then, завершится тем же результатом, что и будущее, возвращённое обратным вызовом.
Если onError не указан, и это будущее завершается с ошибкой, ошибка передаётся непосредственно возвращаемому будущему.
В большинстве случаев более читаемо использовать catchError отдельно, возможно, с параметром test, вместо обработки как значения, так и ошибки в одном вызове then.
Обратите внимание, что futures не откладывают сообщения об ошибках до добавления слушателей. Если первый вызов then или catchError происходит после того, как это будущее завершилось с ошибкой, ошибка сообщается как необработанная ошибка. Смотрите описание в Future.
Источник
Future<S> then<S>(FutureOr<S> onValue(T value), {Function onError});
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-async/Future/then.html