sliver_cross_axis_group.0_test.dart 2.08 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
// 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<RenderSliverList> renderSliverLists = tester.renderObjectList<RenderSliverList>(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<RenderSliverConstrainedCrossAxis>(
      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));
  });
}