blob: 56565b69ebb5d296755893345caef51e2beed3bd [file] [log] [blame]
// 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_test/flutter_test.dart';
void main() {
testWidgets('precedingScrollExtent is reported as infinity for Sliver of unknown size', (WidgetTester tester) async {
await tester.pumpWidget(
MaterialApp(
home: CustomScrollView(
slivers: <Widget>[
const SliverToBoxAdapter(child: SizedBox(width: double.infinity, height: 150.0)),
const SliverToBoxAdapter(child: SizedBox(width: double.infinity, height: 150.0)),
SliverList(
delegate: SliverChildBuilderDelegate((BuildContext context, int index) {
if (index < 100) {
return const SizedBox(width: double.infinity, height: 150.0);
} else {
return null;
}
}),
),
const SliverToBoxAdapter(
key: Key('final_sliver'),
child: SizedBox(width: double.infinity, height: 150.0),
),
],
),
),
);
// The last Sliver comes after a SliverList that has many more items than
// can fit in the viewport, and the SliverList doesn't report a child count,
// so the SliverList leads to an infinite precedingScrollExtent.
final RenderViewport renderViewport = tester.renderObject(find.byType(Viewport));
final RenderSliver lastRenderSliver = renderViewport.lastChild!;
expect(lastRenderSliver.constraints.precedingScrollExtent, double.infinity);
});
}