LCOV - code coverage report
Current view: top level - src - transition_delegates.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 28 34 82.4 %
Date: 2021-06-08 01:09:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/widgets.dart';
       2             : 
       3             : class NoAnimationTransitionDelegate extends TransitionDelegate<void> {
       4           2 :   const NoAnimationTransitionDelegate() : super();
       5             : 
       6           1 :   @override
       7             :   Iterable<RouteTransitionRecord> resolve({
       8             :     required List<RouteTransitionRecord> newPageRouteHistory,
       9             :     required Map<RouteTransitionRecord?, RouteTransitionRecord>
      10             :         locationToExitingPageRoute,
      11             :     required Map<RouteTransitionRecord?, List<RouteTransitionRecord>>
      12             :         pageRouteToPagelessRoutes,
      13             :   }) {
      14           1 :     final List<RouteTransitionRecord> results = <RouteTransitionRecord>[];
      15             : 
      16           2 :     for (final RouteTransitionRecord pageRoute in newPageRouteHistory) {
      17           1 :       if (pageRoute.isWaitingForEnteringDecision) {
      18           1 :         pageRoute.markForAdd();
      19             :       }
      20           1 :       results.add(pageRoute);
      21             :     }
      22             :     for (final RouteTransitionRecord exitingPageRoute
      23           2 :         in locationToExitingPageRoute.values) {
      24           1 :       if (exitingPageRoute.isWaitingForExitingDecision) {
      25           1 :         exitingPageRoute.markForRemove();
      26             :         final List<RouteTransitionRecord>? pagelessRoutes =
      27           1 :             pageRouteToPagelessRoutes[exitingPageRoute];
      28             :         if (pagelessRoutes != null) {
      29           0 :           for (final RouteTransitionRecord pagelessRoute in pagelessRoutes) {
      30           0 :             pagelessRoute.markForRemove();
      31             :           }
      32             :         }
      33             :       }
      34           1 :       results.add(exitingPageRoute);
      35             :     }
      36             :     return results;
      37             :   }
      38             : }
      39             : 
      40             : class ReverseTransitionDelegate extends TransitionDelegate<void> {
      41           9 :   const ReverseTransitionDelegate() : super();
      42             : 
      43           4 :   @override
      44             :   Iterable<RouteTransitionRecord> resolve({
      45             :     required List<RouteTransitionRecord> newPageRouteHistory,
      46             :     required Map<RouteTransitionRecord?, RouteTransitionRecord>
      47             :         locationToExitingPageRoute,
      48             :     required Map<RouteTransitionRecord?, List<RouteTransitionRecord>>
      49             :         pageRouteToPagelessRoutes,
      50             :   }) {
      51           4 :     final List<RouteTransitionRecord> results = <RouteTransitionRecord>[];
      52             : 
      53           4 :     void handleExitingRoute(RouteTransitionRecord? location) {
      54             :       final RouteTransitionRecord? exitingPageRoute =
      55           4 :           locationToExitingPageRoute[location];
      56             :       if (exitingPageRoute == null) return;
      57           4 :       if (exitingPageRoute.isWaitingForExitingDecision) {
      58             :         final bool hasPagelessRoute =
      59           3 :             pageRouteToPagelessRoutes.containsKey(exitingPageRoute);
      60           9 :         exitingPageRoute.markForPop(exitingPageRoute.route.currentResult);
      61             :         if (hasPagelessRoute) {
      62             :           final List<RouteTransitionRecord> pagelessRoutes =
      63           0 :               pageRouteToPagelessRoutes[exitingPageRoute]!;
      64           0 :           for (final RouteTransitionRecord pagelessRoute in pagelessRoutes) {
      65           0 :             if (pagelessRoute.isWaitingForExitingDecision) {
      66           0 :               pagelessRoute.markForPop(pagelessRoute.route.currentResult);
      67             :             }
      68             :           }
      69             :         }
      70             :       }
      71           4 :       results.add(exitingPageRoute);
      72             : 
      73           4 :       handleExitingRoute(exitingPageRoute);
      74             :     }
      75             : 
      76           8 :     for (final RouteTransitionRecord pageRoute in newPageRouteHistory) {
      77           4 :       if (pageRoute.isWaitingForEnteringDecision) {
      78           4 :         pageRoute.markForAdd();
      79             :       }
      80           4 :       results.add(pageRoute);
      81           4 :       handleExitingRoute(pageRoute);
      82             :     }
      83             : 
      84           4 :     handleExitingRoute(null);
      85             : 
      86             :     return results;
      87             :   }
      88             : }

Generated by: LCOV version 1.14