diff --git a/packages/flutter/lib/src/widgets/sliver.dart b/packages/flutter/lib/src/widgets/sliver.dart index a033ed9cfc..d551a0986c 100644 --- a/packages/flutter/lib/src/widgets/sliver.dart +++ b/packages/flutter/lib/src/widgets/sliver.dart @@ -1291,8 +1291,8 @@ class KeepAlive extends ParentDataWidget { } } -// Return an ErrorWidget for the given Exception -ErrorWidget _createErrorWidget(dynamic exception, StackTrace stackTrace) { +// Return a Widget for the given Exception +Widget _createErrorWidget(dynamic exception, StackTrace stackTrace) { final FlutterErrorDetails details = FlutterErrorDetails( exception: exception, stack: stackTrace, diff --git a/packages/flutter/test/widgets/slivers_test.dart b/packages/flutter/test/widgets/slivers_test.dart index c25ee665b1..91b8041209 100644 --- a/packages/flutter/test/widgets/slivers_test.dart +++ b/packages/flutter/test/widgets/slivers_test.dart @@ -195,4 +195,19 @@ void main() { expect(find.text('B'), findsNothing); expect(find.text('BOTTOM'), findsOneWidget); }); + + testWidgets('Can override ErrorWidget.build', (WidgetTester tester) async { + const Text errorText = Text('error'); + final ErrorWidgetBuilder oldBuilder = ErrorWidget.builder; + ErrorWidget.builder = (FlutterErrorDetails details) => errorText; + final SliverChildBuilderDelegate builderThrowsDelegate = SliverChildBuilderDelegate( + (_, __) => throw 'builder', + addAutomaticKeepAlives: false, + addRepaintBoundaries: false, + addSemanticIndexes: false, + ); + expect(builderThrowsDelegate.build(null, 0), errorText); + expect(tester.takeException(), 'builder'); + ErrorWidget.builder = oldBuilder; + }); }