blob: 6426b5c037563f0633fa383d51cfd10816f14cb3 [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_api_samples/widgets/draggable_scrollable_sheet/draggable_scrollable_sheet.0.dart' as example;
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('Test DraggableScrollableSheet initial state', (WidgetTester tester) async {
await tester.pumpWidget(
const example.DraggableScrollableSheetExampleApp(),
);
final Finder sheetFinder = find.byType(DraggableScrollableSheet);
// Verify that DraggableScrollableSheet is initially present
expect(sheetFinder, findsOneWidget);
// Verify that DraggableScrollableSheet is shown initially at 50% height
final DraggableScrollableSheet draggableSheet = tester.widget(sheetFinder);
expect(draggableSheet.initialChildSize, 0.5);
});
testWidgets('Test DraggableScrollableSheet drag behavior on mobile platforms', (WidgetTester tester) async {
await tester.pumpWidget(
const example.DraggableScrollableSheetExampleApp(),
);
// Verify that ListView is visible
final Finder listViewFinder = find.byType(ListView);
expect(listViewFinder, findsOneWidget);
// Get the initial size of the ListView
final Size listViewInitialSize = tester.getSize(listViewFinder);
// Drag the sheet from anywhere inside the sheet to change the sheet position
await tester.drag(listViewFinder, const Offset(0.0, -100.0));
await tester.pump();
// Verify that the ListView is expanded
final Size listViewCurrentSize = tester.getSize(listViewFinder);
expect(listViewCurrentSize.height, greaterThan(listViewInitialSize.height));
}, variant: TargetPlatformVariant.mobile());
testWidgets('Test DraggableScrollableSheet drag behavior on desktop platforms', (WidgetTester tester) async {
await tester.pumpWidget(
const example.DraggableScrollableSheetExampleApp(),
);
// Verify that Grabber is visible
final Finder grabberFinder = find.byType(example.Grabber);
expect(grabberFinder, findsOneWidget);
// Drag the Grabber to change the sheet position
await tester.drag(grabberFinder, const Offset(0.0, -100.0));
await tester.pump();
// Verify that the DraggableScrollableSheet's initialChildSize is updated
final DraggableScrollableSheet draggableSheet = tester.widget(find.byType(DraggableScrollableSheet));
expect(draggableSheet.initialChildSize, isNot(0.5));
}, variant: TargetPlatformVariant.desktop());
}