// 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/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'multi_view_testing.dart'; void main() { testWidgets('can find nodes in an view when no view is specified', (WidgetTester tester) async { final List views = [ for (int i = 0; i < 3; i++) FakeView(tester.view, viewId: i + 100) ]; await pumpViews(tester: tester, views: views); expect(find.semantics.byLabel('View0Child0'), findsOne); expect(find.semantics.byLabel('View1Child1'), findsOne); expect(find.semantics.byLabel('View2Child2'), findsOne); }); testWidgets('can find nodes only in specified view', (WidgetTester tester) async { final List views = [ for (int i = 0; i < 3; i++) FakeView(tester.view, viewId: i + 100) ]; await pumpViews(tester: tester, views: views); expect(find.semantics.byLabel('View0Child0', view: views[0]), findsOne); expect(find.semantics.byLabel('View0Child0', view: views[1]), findsNothing); expect(find.semantics.byLabel('View0Child0', view: views[2]), findsNothing); expect(find.semantics.byLabel('View1Child1', view: views[0]), findsNothing); expect(find.semantics.byLabel('View1Child1', view: views[1]), findsOne); expect(find.semantics.byLabel('View1Child1', view: views[2]), findsNothing); expect(find.semantics.byLabel('View2Child2', view: views[0]), findsNothing); expect(find.semantics.byLabel('View2Child2', view: views[1]), findsNothing); expect(find.semantics.byLabel('View2Child2', view: views[2]), findsOne); }); } Future pumpViews({required WidgetTester tester, required List views}) { final List viewWidgets = [ for (int i = 0; i < 3; i++) View( view: views[i], child: Center( child: Column( children: [ for (int c = 0; c < 5; c++) Semantics(container: true, child: Text('View${i}Child$c')), ], ), ), ), ]; return tester.pumpWidget( wrapWithView: false, Directionality( textDirection: TextDirection.ltr, child: ViewCollection( views: viewWidgets, ), ), ); }