pages.dart 1.18 KB
Newer Older
1 2 3 4 5 6
// 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 'dart:async';

7
import 'basic.dart';
8 9 10 11 12 13 14 15
import 'navigator.dart';
import 'overlay.dart';
import 'routes.dart';

/// A modal route that replaces the entire screen.
abstract class PageRoute<T> extends ModalRoute<T> {
  PageRoute({
    Completer<T> completer,
16
    RouteSettings settings: const RouteSettings()
17 18 19
  }) : super(completer: completer, settings: settings);
  bool get opaque => true;
  bool get barrierDismissable => false;
20 21
  bool canTransitionTo(TransitionRoute<dynamic> nextRoute) => nextRoute is PageRoute<dynamic>;
  bool canTransitionFrom(TransitionRoute<dynamic> nextRoute) => nextRoute is PageRoute<dynamic>;
22

23 24
  AnimationController createAnimationController() {
    AnimationController controller = super.createAnimationController();
25
    if (settings.isInitialRoute)
26 27
      controller.value = 1.0;
    return controller;
28 29
  }

30
  /// Subclasses can override this method to customize how heroes are inserted.
31 32 33
  void insertHeroOverlayEntry(OverlayEntry entry, Object tag, OverlayState overlay) {
    overlay.insert(entry);
  }
34
}