boost_page_route_test.dart 1.52 KB
Newer Older
yangwu.jia's avatar
yangwu.jia committed
1 2 3
import 'package:flutter_boost/container/boost_page_route.dart';
import 'package:flutter_test/flutter_test.dart';

yangwu.jia's avatar
yangwu.jia committed
4 5 6 7
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';

yangwu.jia's avatar
yangwu.jia committed
8
void main() {
yangwu.jia's avatar
yangwu.jia committed
9
  TestWidgetsFlutterBinding.ensureInitialized();
yangwu.jia's avatar
yangwu.jia committed
10

yangwu.jia's avatar
yangwu.jia committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
  testWidgets('test iOS edge swipe then drop back at starting point works',
      (WidgetTester tester) async {
    await tester.pumpWidget(
      MaterialApp(
        theme: ThemeData(platform: TargetPlatform.iOS),
        onGenerateRoute: (RouteSettings settings) {
          return BoostPageRoute<void>(
            settings: settings,
            builder: (BuildContext context) {
              final String pageNumber = settings.name == '/' ? '1' : '2';
              return Center(child: Text('Page $pageNumber'));
            },
          );
        },
      ),
    );
yangwu.jia's avatar
yangwu.jia committed
27

yangwu.jia's avatar
yangwu.jia committed
28 29 30 31
    tester.state<NavigatorState>(find.byType(Navigator)).pushNamed('/next');

    await tester.pump();
    await tester.pump(const Duration(seconds: 1));
yangwu.jia's avatar
yangwu.jia committed
32

yangwu.jia's avatar
yangwu.jia committed
33 34
    expect(find.text('Page 1'), findsNothing);
    expect(find.text('Page 2'), isOnstage);
yangwu.jia's avatar
yangwu.jia committed
35

yangwu.jia's avatar
yangwu.jia committed
36 37 38 39 40 41 42 43 44 45 46 47
    final TestGesture gesture = await tester.startGesture(const Offset(5, 200));
    await gesture.moveBy(const Offset(300, 0));
    await tester.pump();
    // Bring it exactly back such that there's nothing to animate when releasing.
    await gesture.moveBy(const Offset(-300, 0));
    await gesture.up();
    await tester.pump();

    expect(find.text('Page 1'), findsNothing);
    expect(find.text('Page 2'), isOnstage);
  });
}