diff --git a/dev/bots/check_code_samples.dart b/dev/bots/check_code_samples.dart index 708e8d1f8e..11ed6cab32 100644 --- a/dev/bots/check_code_samples.dart +++ b/dev/bots/check_code_samples.dart @@ -317,7 +317,6 @@ final Set _knownMissingTests = { 'examples/api/test/widgets/navigator/restorable_route_future.0_test.dart', 'examples/api/test/widgets/navigator/navigator_state.restorable_push.0_test.dart', 'examples/api/test/widgets/focus_manager/focus_node.unfocus.0_test.dart', - 'examples/api/test/widgets/framework/build_owner.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', diff --git a/examples/api/lib/widgets/framework/build_owner.0.dart b/examples/api/lib/widgets/framework/build_owner.0.dart index ab173907c3..a3a6002267 100644 --- a/examples/api/lib/widgets/framework/build_owner.0.dart +++ b/examples/api/lib/widgets/framework/build_owner.0.dart @@ -8,12 +8,33 @@ import 'package:flutter/rendering.dart'; /// Flutter code sample for [BuildOwner]. void main() { - WidgetsFlutterBinding.ensureInitialized(); - final Size size = measureWidget(const SizedBox(width: 640, height: 480)); - - // Just displays the size calculated above. runApp( - WidgetsApp( + const BuildOwnerExample(), + ); +} + +class BuildOwnerExample extends StatefulWidget { + const BuildOwnerExample({ + super.key, + }); + + @override + State createState() => _BuildOwnerExampleState(); +} + +class _BuildOwnerExampleState extends State { + late final Size size; + + @override + void initState() { + super.initState(); + size = measureWidget(const SizedBox(width: 640, height: 480)); + } + + @override + Widget build(BuildContext context) { + // Just displays the size calculated above. + return WidgetsApp( title: 'BuildOwner Sample', color: const Color(0xff000000), builder: (BuildContext context, Widget? child) { @@ -23,8 +44,8 @@ void main() { ), ); }, - ), - ); + ); + } } Size measureWidget(Widget widget) { diff --git a/examples/api/test/widgets/framework/build_owner.0_test.dart b/examples/api/test/widgets/framework/build_owner.0_test.dart new file mode 100644 index 0000000000..80f7c59542 --- /dev/null +++ b/examples/api/test/widgets/framework/build_owner.0_test.dart @@ -0,0 +1,22 @@ +// 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/material.dart'; +import 'package:flutter_api_samples/widgets/framework/build_owner.0.dart' as example; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('BuildOwnerExample displays the measured size', (WidgetTester tester) async { + await tester.pumpWidget(const example.BuildOwnerExample()); + + expect(find.text('Size(640.0, 480.0)'), findsOne); + }); + + test('The size of the widget is measured', () { + expect( + example.measureWidget(const SizedBox(width: 234, height: 567)), + const Size(234, 567), + ); + }); +}