diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 4cb6c92ed3..c97b72e3e6 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -310,7 +310,6 @@ class SampleChecker { // See https://github.com/flutter/flutter/issues/130459 final Set _knownMissingTests = { 'examples/api/test/material/color_scheme/dynamic_content_color.0_test.dart', - 'examples/api/test/widgets/nested_scroll_view/nested_scroll_view_state.0_test.dart', 'examples/api/test/widgets/scroll_position/scroll_metrics_notification.0_test.dart', 'examples/api/test/widgets/media_query/media_query_data.system_gesture_insets.0_test.dart', 'examples/api/test/widgets/image/image.frame_builder.0_test.dart', diff --git a/examples/api/lib/widgets/nested_scroll_view/nested_scroll_view_state.0.dart b/examples/api/lib/widgets/nested_scroll_view/nested_scroll_view_state.0.dart index 6de7899b7b..2111364097 100644 --- a/examples/api/lib/widgets/nested_scroll_view/nested_scroll_view_state.0.dart +++ b/examples/api/lib/widgets/nested_scroll_view/nested_scroll_view_state.0.dart @@ -24,7 +24,6 @@ final GlobalKey globalKey = GlobalKey(); class NestedScrollViewStateExample extends StatelessWidget { const NestedScrollViewStateExample({super.key}); - @override @override Widget build(BuildContext context) { return NestedScrollView( @@ -42,6 +41,10 @@ class NestedScrollViewStateExample extends StatelessWidget { ); } + ScrollController get outerController { + return globalKey.currentState!.outerController; + } + ScrollController get innerController { return globalKey.currentState!.innerController; } diff --git a/examples/api/test/widgets/nested_scroll_view/nested_scroll_view_state.0_test.dart b/examples/api/test/widgets/nested_scroll_view/nested_scroll_view_state.0_test.dart new file mode 100644 index 0000000000..ea3c324a6a --- /dev/null +++ b/examples/api/test/widgets/nested_scroll_view/nested_scroll_view_state.0_test.dart @@ -0,0 +1,38 @@ +// Copyright 2014 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_api_samples/widgets/nested_scroll_view/nested_scroll_view_state.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Access the outer and inner controllers', (WidgetTester tester) async { + await tester.pumpWidget( + const example.NestedScrollViewStateExampleApp(), + ); + + expect(find.byType(NestedScrollView), findsOne); + expect(find.widgetWithText(SliverAppBar, 'NestedScrollViewState Demo!'), findsOne); + expect(find.byType(CustomScrollView), findsOne); + + final example.NestedScrollViewStateExample widget = tester.widget( + find.byType(example.NestedScrollViewStateExample), + ); + + final ScrollController outerController = widget.outerController; + final ScrollController innerController = widget.innerController; + + expect(outerController.offset, 0); + expect(innerController.offset, 0); + + await tester.sendEventToBinding(const PointerScrollEvent(scrollDelta: Offset(0.0, 10.0))); + await tester.pump(); + + await tester.pumpAndSettle(); + + expect(outerController.offset, 10); + expect(innerController.offset, 0); + }); +}