абстрактный метод then< R>
Регистрирует обратные вызовы, которые будут вызваны после завершения этого будущего.
Когда это будущее завершается со значением, обратный вызов onValue будет вызван с этим значением. Если это будущее уже завершено, обратный вызов не будет вызван немедленно, а будет запланирован на более позднюю микрозадачу.
Если указан onError и это будущее завершается с ошибкой, обратный вызов onError вызывается с этой ошибкой и её трассировкой стека. Обратный вызов onError должен принимать один или два аргумента, причём вторым аргументом является StackTrace. Если onError принимает два аргумента, он вызывается с ошибкой и трассировкой стека, в противном случае — только с объектом ошибки. Обратный вызов onError должен возвращать значение или будущее, которое можно использовать для завершения возвращаемого будущего, поэтому его тип должен быть совместим с FutureOr<R>.
Возвращает новое Future, которое завершается результатом вызова onValue (если это будущее завершается со значением) или onError (если это будущее завершается с ошибкой).
Если вызванный обратный вызов выбрасывает исключение, возвращаемое будущее завершается выброшенной ошибкой и её трассировкой стека. В случае onError, если выброшенное исключение identical аргументу-ошибке для onError, выброс считается повторным выбросом, и вместо этого используется исходная трассировка стека.
Если обратный вызов возвращает Future, будущее, возвращённое then, будет завершено с тем же результатом, что и будущее, возвращённое обратным вызовом.
Если onError не задан и это будущее завершается с ошибкой, ошибка напрямую передаётся возвращаемому будущему.
В большинстве случаев код более читаем, если использовать отдельно catchError, возможно, с параметром test, вместо обработки значения и ошибки в одном вызове then.
Обратите внимание: будущие объекты не откладывают сообщение об ошибках до добавления обработчиков. Если первый вызов then или catchError происходит после того, как это будущее завершилось с ошибкой, ошибка сообщается как необработанная. См. описание Future.
Реализация
Future<R> then<R>(FutureOr<R> onValue(T value), {Function? onError});
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.19.6/dart-async/Future/then.html