page_widget_test.dart 4.59 KB
Newer Older
yangwu.jia's avatar
yangwu.jia committed
1 2 3
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:flutter_boost/flutter_boost.dart';
4
import 'package:flutter_boost/container/container_coordinator.dart';
yangwu.jia's avatar
yangwu.jia committed
5
import 'package:flutter_test/flutter_test.dart';
6

yangwu.jia's avatar
yangwu.jia committed
7 8 9 10 11 12 13 14 15 16 17 18
import 'page_widgets.dart';

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();

19 20 21 22 23 24 25 26 27 28 29 30 31
    FlutterBoost.singleton.registerPageBuilders(<String, PageBuilder>{
      'embeded': (String pageName, Map<String, dynamic> params, _) =>
          EmbededFirstRouteWidget(),
      'first': (String pageName, Map<String, dynamic> params, _) =>
          FirstRouteWidget(),
      'second': (String pageName, Map<String, dynamic> params, _) =>
          SecondRouteWidget(),
      'tab': (String pageName, Map<String, dynamic> params, _) =>
          TabRouteWidget(),
      'flutterFragment': (String pageName, Map<String, dynamic> params, _) =>
          FragmentRouteWidget(params),
      'flutterPage': (String pageName, Map<String, dynamic> params, _) {
        print('flutterPage params:$params');
yangwu.jia's avatar
yangwu.jia committed
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

        return FlutterRouteWidget(params: params);
      },
    });
    FlutterBoost.singleton
        .addBoostNavigatorObserver(TestBoostNavigatorObserver());
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        title: 'Flutter Boost example',
        builder: FlutterBoost.init(postPush: _onRoutePushed),
        home: Container());
  }

  void _onRoutePushed(
49 50 51 52 53 54
    String pageName,
    String uniqueId,
    Map<String, dynamic> params,
    Route<dynamic> route,
    Future<dynamic> _,
  ) {}
yangwu.jia's avatar
yangwu.jia committed
55 56 57
}

class TestBoostNavigatorObserver extends NavigatorObserver {
58
  @override
yangwu.jia's avatar
yangwu.jia committed
59
  void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
60
    print('flutterboost#didPush');
yangwu.jia's avatar
yangwu.jia committed
61 62
  }

63
  @override
yangwu.jia's avatar
yangwu.jia committed
64
  void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
65
    print('flutterboost#didPop');
yangwu.jia's avatar
yangwu.jia committed
66 67
  }

68
  @override
yangwu.jia's avatar
yangwu.jia committed
69
  void didRemove(Route<dynamic> route, Route<dynamic> previousRoute) {
70
    print('flutterboost#didRemove');
yangwu.jia's avatar
yangwu.jia committed
71 72
  }

73
  @override
yangwu.jia's avatar
yangwu.jia committed
74
  void didReplace({Route<dynamic> newRoute, Route<dynamic> oldRoute}) {
75
    print('flutterboost#didReplace');
yangwu.jia's avatar
yangwu.jia committed
76 77 78 79 80 81 82 83 84 85 86 87 88 89
  }
}

void main() {
  TestWidgetsFlutterBinding.ensureInitialized();

  testWidgets('test iOS edge swipe then drop back at starting point works',
      (WidgetTester tester) async {
    //push app
    await tester.pumpWidget(
      MyApp(),
    );
    //open firt page
    ContainerCoordinator.singleton
90
        .nativeContainerDidShow('first', <String, dynamic>{}, '1000000');
yangwu.jia's avatar
yangwu.jia committed
91 92 93 94 95 96 97

    await tester.pump(const Duration(seconds: 1));

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

    //open second page  firt(1000000)->second(2000000)
    ContainerCoordinator.singleton
98
        .nativeContainerDidShow('second', <String, dynamic>{}, '2000000');
yangwu.jia's avatar
yangwu.jia committed
99 100 101 102 103 104 105 106

    await tester.pump(const Duration(seconds: 1));

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

    await tester.pump(const Duration(seconds: 1));

    //close sencod page  firt(1000000)
107
    FlutterBoost.containerManager?.remove('2000000');
yangwu.jia's avatar
yangwu.jia committed
108 109 110 111 112 113 114

    await tester.pump(const Duration(seconds: 1));

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

    // second page ,but pageId is 2000001    firt(1000000)->second(2000001)
    ContainerCoordinator.singleton
115
        .nativeContainerDidShow('second', <String, dynamic>{}, '2000001');
yangwu.jia's avatar
yangwu.jia committed
116 117 118 119 120 121 122 123 124

    await tester.pump(const Duration(seconds: 1));

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

    await tester.pump(const Duration(seconds: 1));

    //reopen firt page   second(2000001)->firt(1000000)
    ContainerCoordinator.singleton
125
        .nativeContainerDidShow('first', <String, dynamic>{}, '1000000');
yangwu.jia's avatar
yangwu.jia committed
126 127 128 129 130 131 132 133 134

    await tester.pump(const Duration(seconds: 1));

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

    //reopen firt page   second(2000001)->firt(1000000)

    // reopen second page and  pageId is 2000001    firt(1000000)->second(2000001)
    ContainerCoordinator.singleton
135
        .nativeContainerDidShow('second', <String, dynamic>{}, '2000001');
yangwu.jia's avatar
yangwu.jia committed
136 137 138 139 140 141 142 143

    await tester.pump(const Duration(seconds: 1));

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

    await tester.pump(const Duration(seconds: 1));

    //close firt(1000000) page  second(2000001)
144
    FlutterBoost.containerManager?.remove('1000000');
yangwu.jia's avatar
yangwu.jia committed
145 146 147 148 149 150 151

    await tester.pump(const Duration(seconds: 1));

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

    // open  second(2000003)
    ContainerCoordinator.singleton
152
        .nativeContainerDidShow('second', <String, dynamic>{}, '2000003');
yangwu.jia's avatar
yangwu.jia committed
153 154 155 156 157 158

    await tester.idle();

    expect(find.text('Second'), findsOneWidget);
  });
}