| // 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 'dart:ui'; |
| |
| import 'package:flutter/widgets.dart'; |
| import 'package:flutter_test/flutter_test.dart'; |
| |
| void main() { |
| testWidgets('Widgets running with runApp can find View', (WidgetTester tester) async { |
| FlutterView? viewOf; |
| FlutterView? viewMaybeOf; |
| |
| runApp( |
| Builder( |
| builder: (BuildContext context) { |
| viewOf = View.of(context); |
| viewMaybeOf = View.maybeOf(context); |
| return Container(); |
| }, |
| ), |
| ); |
| |
| expect(viewOf, isNotNull); |
| expect(viewOf, isA<FlutterView>()); |
| expect(viewMaybeOf, isNotNull); |
| expect(viewMaybeOf, isA<FlutterView>()); |
| }); |
| |
| testWidgets('Widgets running with pumpWidget can find View', (WidgetTester tester) async { |
| FlutterView? view; |
| FlutterView? viewMaybeOf; |
| |
| await tester.pumpWidget( |
| Builder( |
| builder: (BuildContext context) { |
| view = View.of(context); |
| viewMaybeOf = View.maybeOf(context); |
| return Container(); |
| }, |
| ), |
| ); |
| |
| expect(view, isNotNull); |
| expect(view, isA<FlutterView>()); |
| expect(viewMaybeOf, isNotNull); |
| expect(viewMaybeOf, isA<FlutterView>()); |
| }); |
| |
| testWidgets('cannot find View behind a LookupBoundary', (WidgetTester tester) async { |
| await tester.pumpWidget( |
| LookupBoundary( |
| child: Container(), |
| ), |
| ); |
| |
| final BuildContext context = tester.element(find.byType(Container)); |
| |
| expect(View.maybeOf(context), isNull); |
| expect( |
| () => View.of(context), |
| throwsA(isA<FlutterError>().having( |
| (FlutterError error) => error.message, |
| 'message', |
| contains('The context provided to View.of() does have a View widget ancestor, but it is hidden by a LookupBoundary.'), |
| )), |
| ); |
| }); |
| } |