persistent_bottom_sheet_test.dart 2.08 KB
Newer Older
1 2 3 4 5 6 7 8
// 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/material.dart';

void main() {
9
  testWidgets('Verify that a BottomSheet can be rebuilt with ScaffoldFeatureController.setState()', (WidgetTester tester) async {
10 11 12
    final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();
    PersistentBottomSheetController<Null> bottomSheet;
    int buildCount = 0;
13

14
    await tester.pumpWidget(new MaterialApp(
15 16
      home: new Scaffold(
        key: scaffoldKey,
17
        body: const Center(child: const Text('body'))
18 19
      )
    ));
20

21
    bottomSheet = scaffoldKey.currentState.showBottomSheet<Null>((_) {
22 23 24 25 26 27 28
      return new Builder(
        builder: (BuildContext context) {
          buildCount += 1;
          return new Container(height: 200.0);
        }
      );
    });
29

30
    await tester.pump();
31
    expect(buildCount, equals(1));
32

33
    bottomSheet.setState((){ });
34
    await tester.pump();
35
    expect(buildCount, equals(2));
36 37
  });

38 39 40 41 42 43
  testWidgets('Verify that a scrollable BottomSheet can be dismissed', (WidgetTester tester) async {
    final GlobalKey<ScaffoldState> scaffoldKey = new GlobalKey<ScaffoldState>();

    await tester.pumpWidget(new MaterialApp(
      home: new Scaffold(
        key: scaffoldKey,
44
        body: const Center(child: const Text('body'))
45 46 47 48 49 50
      )
    ));

    scaffoldKey.currentState.showBottomSheet<Null>((BuildContext context) {
      return new ListView(
        shrinkWrap: true,
51
        primary: false,
52
        children: <Widget>[
53 54 55
          new Container(height: 100.0, child: const Text('One')),
          new Container(height: 100.0, child: const Text('Two')),
          new Container(height: 100.0, child: const Text('Three')),
56 57 58 59
        ],
      );
    });

60
    await tester.pumpAndSettle();
61 62 63

    expect(find.text('Two'), findsOneWidget);

64 65
    await tester.drag(find.text('Two'), const Offset(0.0, 400.0));
    await tester.pumpAndSettle();
66 67 68 69

    expect(find.text('Two'), findsNothing);
  });

70
}