app_navigator_key_test.dart 1.29 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

5
import 'package:flutter/widgets.dart';
6
import 'package:flutter_test/flutter_test.dart';
7
import 'package:leak_tracker_flutter_testing/leak_tracker_flutter_testing.dart';
8

9
Route<void> generateRoute(RouteSettings settings) => PageRouteBuilder<void>(
10 11 12 13 14 15 16
  settings: settings,
  pageBuilder: (BuildContext context, Animation<double> animation1, Animation<double> animation2) {
    return const Placeholder();
  },
);

void main() {
17
  testWidgetsWithLeakTracking('WidgetsApp.navigatorKey', (WidgetTester tester) async {
18 19
    final GlobalKey<NavigatorState> key = GlobalKey<NavigatorState>();
    await tester.pumpWidget(WidgetsApp(
20 21 22 23
      navigatorKey: key,
      color: const Color(0xFF112233),
      onGenerateRoute: generateRoute,
    ));
Dan Field's avatar
Dan Field committed
24
    expect(key.currentState, isA<NavigatorState>());
25
    await tester.pumpWidget(WidgetsApp(
26 27 28 29
      color: const Color(0xFF112233),
      onGenerateRoute: generateRoute,
    ));
    expect(key.currentState, isNull);
30
    await tester.pumpWidget(WidgetsApp(
31 32 33 34
      navigatorKey: key,
      color: const Color(0xFF112233),
      onGenerateRoute: generateRoute,
    ));
Dan Field's avatar
Dan Field committed
35
    expect(key.currentState, isA<NavigatorState>());
36 37
  });
}