// Copyright 2015 The Chromium 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_test/flutter_test.dart'; import 'package:flutter/widgets.dart'; final List<Widget> children = <Widget>[ Container(width: 200.0, height: 150.0), Container(width: 200.0, height: 150.0), Container(width: 200.0, height: 150.0), Container(width: 200.0, height: 150.0), ]; void expectRects(WidgetTester tester, List<Rect> expected) { final Finder finder = find.byType(Container); finder.precache(); final List<Rect> actual = <Rect>[]; for (int i = 0; i < expected.length; ++i) { final Finder current = finder.at(i); expect(current, findsOneWidget); actual.add(tester.getRect(finder.at(i))); } expect(() => finder.at(expected.length), throwsRangeError); expect(actual, equals(expected)); } void main() { testWidgets('ListBody down', (WidgetTester tester) async { await tester.pumpWidget(Flex( direction: Axis.vertical, children: <Widget>[ ListBody(children: children) ], )); expectRects( tester, <Rect>[ const Rect.fromLTWH(0.0, 0.0, 800.0, 150.0), const Rect.fromLTWH(0.0, 150.0, 800.0, 150.0), const Rect.fromLTWH(0.0, 300.0, 800.0, 150.0), const Rect.fromLTWH(0.0, 450.0, 800.0, 150.0), ], ); }); testWidgets('ListBody up', (WidgetTester tester) async { await tester.pumpWidget(Flex( direction: Axis.vertical, children: <Widget>[ ListBody(reverse: true, children: children) ], )); expectRects( tester, <Rect>[ const Rect.fromLTWH(0.0, 450.0, 800.0, 150.0), const Rect.fromLTWH(0.0, 300.0, 800.0, 150.0), const Rect.fromLTWH(0.0, 150.0, 800.0, 150.0), const Rect.fromLTWH(0.0, 0.0, 800.0, 150.0), ], ); }); testWidgets('ListBody right', (WidgetTester tester) async { await tester.pumpWidget(Flex( textDirection: TextDirection.ltr, direction: Axis.horizontal, children: <Widget>[ Directionality( textDirection: TextDirection.ltr, child: ListBody(mainAxis: Axis.horizontal, children: children), ), ], )); expectRects( tester, <Rect>[ const Rect.fromLTWH(0.0, 0.0, 200.0, 600.0), const Rect.fromLTWH(200.0, 0.0, 200.0, 600.0), const Rect.fromLTWH(400.0, 0.0, 200.0, 600.0), const Rect.fromLTWH(600.0, 0.0, 200.0, 600.0), ], ); }); testWidgets('ListBody left', (WidgetTester tester) async { await tester.pumpWidget(Flex( textDirection: TextDirection.ltr, direction: Axis.horizontal, children: <Widget>[ Directionality( textDirection: TextDirection.rtl, child: ListBody(mainAxis: Axis.horizontal, children: children), ), ], )); expectRects( tester, <Rect>[ const Rect.fromLTWH(600.0, 0.0, 200.0, 600.0), const Rect.fromLTWH(400.0, 0.0, 200.0, 600.0), const Rect.fromLTWH(200.0, 0.0, 200.0, 600.0), const Rect.fromLTWH(0.0, 0.0, 200.0, 600.0), ], ); }); }