diff --git a/packages/flutter/lib/src/foundation/synchronous_future.dart b/packages/flutter/lib/src/foundation/synchronous_future.dart index e5c0abb5f7..a635e2b763 100644 --- a/packages/flutter/lib/src/foundation/synchronous_future.dart +++ b/packages/flutter/lib/src/foundation/synchronous_future.dart @@ -42,8 +42,17 @@ class SynchronousFuture implements Future { } @override - Future timeout(Duration timeLimit, { Future onTimeout() }) => new Completer().future; + Future timeout(Duration timeLimit, { dynamic onTimeout() }) => new Completer().future; @override - Future whenComplete(Future action()) => action(); + Future whenComplete(dynamic action()) { + try { + dynamic result = action(); + if (result is Future) + return result.then((_) => _value); + return this; + } catch (e, stack) { + return new Future.error(e, stack); + } + } } \ No newline at end of file