observer_tester.dart 1.33 KB
Newer Older
Ian Hickson's avatar
Ian Hickson committed
1
// Copyright 2014 The Flutter Authors. All rights reserved.
2 3 4 5 6
// 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';

7
typedef OnObservation = void Function(Route<dynamic>? route, Route<dynamic>? previousRoute);
8 9 10

/// A trivial observer for testing the navigator.
class TestObserver extends NavigatorObserver {
11 12 13 14 15
  OnObservation? onPushed;
  OnObservation? onPopped;
  OnObservation? onRemoved;
  OnObservation? onReplaced;
  OnObservation? onStartUserGesture;
16 17

  @override
18
  void didPush(Route<dynamic> route, Route<dynamic>? previousRoute) {
19
    if (onPushed != null) {
20
      onPushed!(route, previousRoute);
21 22 23 24
    }
  }

  @override
25
  void didPop(Route<dynamic> route, Route<dynamic>? previousRoute) {
26
    if (onPopped != null) {
27
      onPopped!(route, previousRoute);
28 29 30 31
    }
  }

  @override
32
  void didRemove(Route<dynamic> route, Route<dynamic>? previousRoute) {
33
    if (onRemoved != null)
34
      onRemoved!(route, previousRoute);
35 36 37
  }

  @override
38
  void didReplace({ Route<dynamic>? oldRoute, Route<dynamic>? newRoute }) {
39
    if (onReplaced != null)
40
      onReplaced!(newRoute, oldRoute);
41 42 43
  }

  @override
44
  void didStartUserGesture(Route<dynamic> route, Route<dynamic>? previousRoute) {
45
    if (onStartUserGesture != null)
46
      onStartUserGesture!(route, previousRoute);
47 48
  }
}