LCOV - code coverage report
Current view: top level - src - pal_navigator_observer.dart (source / functions) Hit Total Coverage
Test: lcov.info Lines: 17 23 73.9 %
Date: 2020-12-04 18:41:24 Functions: 0 0 -

          Line data    Source code
       1             : import 'package:flutter/material.dart';
       2             : import 'package:rxdart/rxdart.dart';
       3             : 
       4             : class PalRouteObserver {
       5             : 
       6           0 :   Stream<RouteSettings> get routeSettings => throw "not implemented yet";
       7             : }
       8             : 
       9             : 
      10             : class PalNavigatorObserver extends RouteObserver<PageRoute<dynamic>> implements PalRouteObserver {
      11             : 
      12             :   static PalNavigatorObserver _instance;
      13             : 
      14             :   Subject<RouteSettings> _routeSettingsSubject = BehaviorSubject();
      15             :   
      16             :   Subject<PageRoute> _routeSubject = BehaviorSubject();
      17             : 
      18           7 :   PalNavigatorObserver._();
      19             : 
      20           7 :   factory PalNavigatorObserver.instance() {
      21             :     if(_instance == null) {
      22           7 :       _instance = PalNavigatorObserver._();
      23             :     }
      24             :     return _instance;
      25             :   }
      26             : 
      27          21 :   _notify(RouteSettings route) => _routeSettingsSubject.add(route);
      28             : 
      29          21 :   _notifyRoute(PageRoute route) => _routeSubject.add(route);
      30             : 
      31           7 :   @override
      32             :   void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
      33           7 :     super.didPush(route, previousRoute);
      34           7 :     if (route is PageRoute) {
      35          14 :       _notify(route.settings);
      36           7 :       _notifyRoute(route);
      37             :     }
      38             :   }
      39             : 
      40           0 :   @override
      41             :   void didReplace({Route<dynamic> newRoute, Route<dynamic> oldRoute}) {
      42           0 :     super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
      43           0 :     if (newRoute is PageRoute) {
      44           0 :       _notify(newRoute.settings);
      45           0 :       _notifyRoute(newRoute);
      46             :     }
      47             :   }
      48             : 
      49           1 :   @override
      50             :   void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
      51           1 :     super.didPop(route, previousRoute);
      52           2 :     if (previousRoute is PageRoute && route is PageRoute) {
      53           2 :       _notify(previousRoute.settings);
      54           1 :       _notifyRoute(previousRoute);
      55             :     }
      56             :   }
      57             : 
      58           9 :   Stream<RouteSettings> get routeSettings => _routeSettingsSubject.asBroadcastStream();
      59             :   
      60           6 :   Stream<PageRoute> get route => _routeSubject.asBroadcastStream();
      61             : }

Generated by: LCOV version 1.14