// 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/rendering.dart'; import 'package:flutter_api_samples/widgets/sliver/sliver_cross_axis_group.0.dart' as example; import 'package:flutter_test/flutter_test.dart'; void main() { testWidgets('SliverCrossAxisGroup example', (WidgetTester tester) async { await tester.pumpWidget(const example.SliverCrossAxisGroupExampleApp()); final RenderSliverCrossAxisGroup renderSliverGroup = tester.renderObject( find.byType(SliverCrossAxisGroup), ); expect(renderSliverGroup, isNotNull); final double crossAxisExtent = renderSliverGroup.constraints.crossAxisExtent; final List renderSliverLists = tester .renderObjectList(find.byType(SliverList)) .toList(); final RenderSliverList firstList = renderSliverLists[0]; final RenderSliverList secondList = renderSliverLists[1]; final RenderSliverList thirdList = renderSliverLists[2]; final double expectedFirstExtent = (crossAxisExtent - 200) / 3; const double expectedSecondExtent = 200; final double expectedThirdExtent = 2 * (crossAxisExtent - 200) / 3; expect(firstList.constraints.crossAxisExtent, equals(expectedFirstExtent)); expect( secondList.constraints.crossAxisExtent, equals(expectedSecondExtent), ); expect(thirdList.constraints.crossAxisExtent, equals(expectedThirdExtent)); // Also check that the paint offsets are correct. final RenderSliverConstrainedCrossAxis renderConstrained = tester .renderObject( find.byType(SliverConstrainedCrossAxis), ); expect( (firstList.parentData! as SliverPhysicalParentData).paintOffset.dx, equals(0), ); expect( (renderConstrained.parentData! as SliverPhysicalParentData) .paintOffset .dx, equals(expectedFirstExtent), ); expect( (thirdList.parentData! as SliverPhysicalParentData).paintOffset.dx, equals(expectedFirstExtent + expectedSecondExtent), ); }); }