feat/update-app-template #10
@ -17,7 +17,7 @@
 | 
				
			|||||||
name: wyatt_app_template
 | 
					name: wyatt_app_template
 | 
				
			||||||
description: New app template for Wyatt Studio projects.
 | 
					description: New app template for Wyatt Studio projects.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version: 0.2.1
 | 
					version: 0.2.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vars:
 | 
					vars:
 | 
				
			||||||
  display_name:
 | 
					  display_name:
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
enum PageProtection {
 | 
					 | 
				
			||||||
  /// The page can be accessed without authentication.
 | 
					 | 
				
			||||||
  public,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The page can only be accessed with authentication.
 | 
					 | 
				
			||||||
  protected,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The page protection is unknown, and the default one should be used.
 | 
					 | 
				
			||||||
  none,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,37 +0,0 @@
 | 
				
			|||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/core/enums/page_protection.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Defines if a GoRoute is public or not.
 | 
					 | 
				
			||||||
///
 | 
					 | 
				
			||||||
/// By default, all routes are in the [PageProtection.none] state.
 | 
					 | 
				
			||||||
extension GoRouteGuard on GoRoute {
 | 
					 | 
				
			||||||
  static final _guard = Expando<PageProtection>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns `true` if the route is public.
 | 
					 | 
				
			||||||
  bool get isPublic => _guard[this] == PageProtection.public;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns `true` if the route is protected.
 | 
					 | 
				
			||||||
  bool get isProtected => _guard[this] == PageProtection.protected;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns `true` if the route is neither public nor protected.
 | 
					 | 
				
			||||||
  /// This is the default state.
 | 
					 | 
				
			||||||
  bool get isNone => _guard[this] == PageProtection.none;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Sets the route to be public.
 | 
					 | 
				
			||||||
  /// This is useful for routes that should be accessible
 | 
					 | 
				
			||||||
  /// without authentication.
 | 
					 | 
				
			||||||
  /// ```dart
 | 
					 | 
				
			||||||
  /// GoRoute(
 | 
					 | 
				
			||||||
  ///  path: '/sign_in',
 | 
					 | 
				
			||||||
  ///  ...
 | 
					 | 
				
			||||||
  /// )..setPublic(),
 | 
					 | 
				
			||||||
  /// ```
 | 
					 | 
				
			||||||
  void setPublic() => _guard[this] = PageProtection.public;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Sets the route to be protected.
 | 
					 | 
				
			||||||
  /// This is useful for routes that should only be accessible
 | 
					 | 
				
			||||||
  /// with authentication.
 | 
					 | 
				
			||||||
  void setProtected() => _guard[this] = PageProtection.protected;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  PageProtection get guard => _guard[this] ?? PageProtection.none;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/core/extensions/go_route_guard.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extension GoRouteListExtension on Iterable<GoRoute> {
 | 
					 | 
				
			||||||
  /// Returns a list of public routes.
 | 
					 | 
				
			||||||
  List<GoRoute> get publicRoutes =>
 | 
					 | 
				
			||||||
      where((route) => route.isPublic).toList(growable: false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns a list of protected routes.
 | 
					 | 
				
			||||||
  List<GoRoute> get protectedRoutes =>
 | 
					 | 
				
			||||||
      where((route) => route.isProtected).toList(growable: false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns a list of routes that are neither public nor protected.
 | 
					 | 
				
			||||||
  List<GoRoute> get noneRoutes =>
 | 
					 | 
				
			||||||
      where((route) => route.isNone).toList(growable: false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GoRoute fromName(String name) => firstWhere((route) => route.name == name);
 | 
					 | 
				
			||||||
  GoRoute fromPath(String path) => firstWhere((route) => route.path == path);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GoRoute operator [](String name) => fromName(name);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Flatten the [GoRoute] tree.
 | 
					 | 
				
			||||||
extension RouteBaseExtension on RouteBase {
 | 
					 | 
				
			||||||
  List<GoRoute> flatten() {
 | 
					 | 
				
			||||||
    final List<GoRoute> routes = [];
 | 
					 | 
				
			||||||
    if (this is GoRoute) {
 | 
					 | 
				
			||||||
      routes.add(this as GoRoute);
 | 
					 | 
				
			||||||
    } else if (this is ShellRoute) {
 | 
					 | 
				
			||||||
      routes.addAll(
 | 
					 | 
				
			||||||
        (this as ShellRoute)
 | 
					 | 
				
			||||||
            .routes
 | 
					 | 
				
			||||||
            .map((route) => route.flatten())
 | 
					 | 
				
			||||||
            .expand((routeList) => routeList),
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return routes;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,10 +1,6 @@
 | 
				
			|||||||
import 'package:flutter/cupertino.dart';
 | 
					import 'package:flutter/cupertino.dart';
 | 
				
			||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/core/enums/page_protection.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/core/extensions/go_route_guard.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/core/extensions/route_base_extension.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/core/routes/go_router_refresh_stream.dart';
 | 
					 | 
				
			||||||
import 'package:starting_template/presentation/features/home/home.dart';
 | 
					import 'package:starting_template/presentation/features/home/home.dart';
 | 
				
			||||||
 | 
					import 'package:wyatt_go_router/wyatt_go_router.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
abstract class AppRouter {
 | 
					abstract class AppRouter {
 | 
				
			||||||
  /// Default transition for all pages
 | 
					  /// Default transition for all pages
 | 
				
			||||||
@ -52,34 +48,15 @@ abstract class AppRouter {
 | 
				
			|||||||
          /// Define the default guard
 | 
					          /// Define the default guard
 | 
				
			||||||
          /// This is the guard that will be used if the route
 | 
					          /// This is the guard that will be used if the route
 | 
				
			||||||
          /// does not have a guard set. (It is set to [PageProtection.none])
 | 
					          /// does not have a guard set. (It is set to [PageProtection.none])
 | 
				
			||||||
          const defaultGuard = PageProtection.protected;
 | 
					          const defaultProtection = PageProtection.protected;
 | 
				
			||||||
 | 
					 | 
				
			||||||
          /// Recursively get all routes and subroutes in a one-dimensional list
 | 
					 | 
				
			||||||
          /// This will work for any level of nesting
 | 
					 | 
				
			||||||
          final routes =
 | 
					 | 
				
			||||||
              AppRouter.routes.map((route) => route.flatten()).expand(
 | 
					 | 
				
			||||||
                    (routeList) => routeList,
 | 
					 | 
				
			||||||
                  );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          /// Matches is a list of all routes that match the current uri
 | 
					 | 
				
			||||||
          final matches = _router?.configuration
 | 
					 | 
				
			||||||
                  .findMatch(
 | 
					 | 
				
			||||||
                    state.uri.toString(),
 | 
					 | 
				
			||||||
                  )
 | 
					 | 
				
			||||||
                  .routes
 | 
					 | 
				
			||||||
                  .map((route) => route.flatten())
 | 
					 | 
				
			||||||
                  .expand(
 | 
					 | 
				
			||||||
                    (routeList) => routeList,
 | 
					 | 
				
			||||||
                  ) ??
 | 
					 | 
				
			||||||
              routes;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          /// Get the current route
 | 
					          /// Get the current route
 | 
				
			||||||
          final currentRoute = matches.last;
 | 
					          final currentRoute = context.currentRoute;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          /// Get the guard of the current route
 | 
					          /// Get the guard of the current route
 | 
				
			||||||
          final guard = (currentRoute.guard == PageProtection.none)
 | 
					          final _ = (currentRoute.protection == PageProtection.none)
 | 
				
			||||||
              ? defaultGuard
 | 
					              ? defaultProtection
 | 
				
			||||||
              : currentRoute.guard;
 | 
					              : currentRoute.protection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          return null;
 | 
					          return null;
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
				
			|||||||
@ -1,24 +0,0 @@
 | 
				
			|||||||
import 'dart:async';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import 'package:flutter/foundation.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// {@template go_router_refresh_stream}
 | 
					 | 
				
			||||||
/// A [ChangeNotifier] that notifies its listeners when a stream emits a value.
 | 
					 | 
				
			||||||
/// {@endtemplate}
 | 
					 | 
				
			||||||
class GoRouterRefreshStream extends ChangeNotifier {
 | 
					 | 
				
			||||||
  /// {@macro go_router_refresh_stream}
 | 
					 | 
				
			||||||
  GoRouterRefreshStream(Stream<dynamic> stream) {
 | 
					 | 
				
			||||||
    notifyListeners();
 | 
					 | 
				
			||||||
    _subscription = stream.asBroadcastStream().listen(
 | 
					 | 
				
			||||||
          (dynamic _) => notifyListeners(),
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  late final StreamSubscription<dynamic> _subscription;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  void dispose() {
 | 
					 | 
				
			||||||
    _subscription.cancel();
 | 
					 | 
				
			||||||
    super.dispose();
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -15,9 +15,9 @@ dependencies:
 | 
				
			|||||||
  freezed_annotation: ^2.4.1
 | 
					  freezed_annotation: ^2.4.1
 | 
				
			||||||
  gap: ^3.0.1
 | 
					  gap: ^3.0.1
 | 
				
			||||||
  get_it: ^7.6.4
 | 
					  get_it: ^7.6.4
 | 
				
			||||||
  go_router: ^10.1.2
 | 
					 | 
				
			||||||
  intl: ^0.18.1
 | 
					  intl: ^0.18.1
 | 
				
			||||||
  json_annotation: ^4.8.1
 | 
					  json_annotation: ^4.8.1
 | 
				
			||||||
 | 
					  logging: ^1.2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  flutter:
 | 
					  flutter:
 | 
				
			||||||
    sdk: flutter
 | 
					    sdk: flutter
 | 
				
			||||||
@ -41,7 +41,12 @@ dependencies:
 | 
				
			|||||||
    hosted:
 | 
					    hosted:
 | 
				
			||||||
      name: wyatt_type_utils
 | 
					      name: wyatt_type_utils
 | 
				
			||||||
      url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
 | 
					      url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
 | 
				
			||||||
  logging: ^1.2.0
 | 
					  
 | 
				
			||||||
 | 
					  wyatt_go_router:
 | 
				
			||||||
 | 
					    version: ^1.0.0
 | 
				
			||||||
 | 
					    hosted:
 | 
				
			||||||
 | 
					      name: wyatt_go_router
 | 
				
			||||||
 | 
					      url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dev_dependencies:
 | 
					dev_dependencies:
 | 
				
			||||||
  build_runner: ^2.4.6
 | 
					  build_runner: ^2.4.6
 | 
				
			||||||
 | 
				
			|||||||
@ -1,10 +0,0 @@
 | 
				
			|||||||
enum PageProtection {
 | 
					 | 
				
			||||||
  /// The page can be accessed without authentication.
 | 
					 | 
				
			||||||
  public,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The page can only be accessed with authentication.
 | 
					 | 
				
			||||||
  protected,
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// The page protection is unknown, and the default one should be used.
 | 
					 | 
				
			||||||
  none,
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,37 +0,0 @@
 | 
				
			|||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/page_protection.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Defines if a GoRoute is public or not.
 | 
					 | 
				
			||||||
///
 | 
					 | 
				
			||||||
/// By default, all routes are in the [PageProtection.none] state.
 | 
					 | 
				
			||||||
extension GoRouteGuard on GoRoute {
 | 
					 | 
				
			||||||
  static final _guard = Expando<PageProtection>();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns `true` if the route is public.
 | 
					 | 
				
			||||||
  bool get isPublic => _guard[this] == PageProtection.public;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns `true` if the route is protected.
 | 
					 | 
				
			||||||
  bool get isProtected => _guard[this] == PageProtection.protected;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns `true` if the route is neither public nor protected.
 | 
					 | 
				
			||||||
  /// This is the default state.
 | 
					 | 
				
			||||||
  bool get isNone => _guard[this] == PageProtection.none;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Sets the route to be public.
 | 
					 | 
				
			||||||
  /// This is useful for routes that should be accessible
 | 
					 | 
				
			||||||
  /// without authentication.
 | 
					 | 
				
			||||||
  /// ```dart
 | 
					 | 
				
			||||||
  /// GoRoute(
 | 
					 | 
				
			||||||
  ///  path: '/sign_in',
 | 
					 | 
				
			||||||
  ///  ...
 | 
					 | 
				
			||||||
  /// )..setPublic(),
 | 
					 | 
				
			||||||
  /// ```
 | 
					 | 
				
			||||||
  void setPublic() => _guard[this] = PageProtection.public;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Sets the route to be protected.
 | 
					 | 
				
			||||||
  /// This is useful for routes that should only be accessible
 | 
					 | 
				
			||||||
  /// with authentication.
 | 
					 | 
				
			||||||
  void setProtected() => _guard[this] = PageProtection.protected;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  PageProtection get guard => _guard[this] ?? PageProtection.none;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,21 +0,0 @@
 | 
				
			|||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/extensions/go_route_guard.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
extension GoRouteListExtension on Iterable<GoRoute> {
 | 
					 | 
				
			||||||
  /// Returns a list of public routes.
 | 
					 | 
				
			||||||
  List<GoRoute> get publicRoutes =>
 | 
					 | 
				
			||||||
      where((route) => route.isPublic).toList(growable: false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns a list of protected routes.
 | 
					 | 
				
			||||||
  List<GoRoute> get protectedRoutes =>
 | 
					 | 
				
			||||||
      where((route) => route.isProtected).toList(growable: false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  /// Returns a list of routes that are neither public nor protected.
 | 
					 | 
				
			||||||
  List<GoRoute> get noneRoutes =>
 | 
					 | 
				
			||||||
      where((route) => route.isNone).toList(growable: false);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GoRoute fromName(String name) => firstWhere((route) => route.name == name);
 | 
					 | 
				
			||||||
  GoRoute fromPath(String path) => firstWhere((route) => route.path == path);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  GoRoute operator [](String name) => fromName(name);
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,20 +0,0 @@
 | 
				
			|||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// Flatten the [GoRoute] tree.
 | 
					 | 
				
			||||||
extension RouteBaseExtension on RouteBase {
 | 
					 | 
				
			||||||
  List<GoRoute> flatten() {
 | 
					 | 
				
			||||||
    final List<GoRoute> routes = [];
 | 
					 | 
				
			||||||
    if (this is GoRoute) {
 | 
					 | 
				
			||||||
      routes.add(this as GoRoute);
 | 
					 | 
				
			||||||
    } else if (this is ShellRoute) {
 | 
					 | 
				
			||||||
      routes.addAll(
 | 
					 | 
				
			||||||
        (this as ShellRoute)
 | 
					 | 
				
			||||||
            .routes
 | 
					 | 
				
			||||||
            .map((route) => route.flatten())
 | 
					 | 
				
			||||||
            .expand((routeList) => routeList),
 | 
					 | 
				
			||||||
      );
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    return routes;
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -1,10 +1,6 @@
 | 
				
			|||||||
import 'package:flutter/cupertino.dart';
 | 
					import 'package:flutter/cupertino.dart';
 | 
				
			||||||
import 'package:go_router/go_router.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/enums/page_protection.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/extensions/go_route_guard.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/extensions/route_base_extension.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/core/routes/go_router_refresh_stream.dart';
 | 
					 | 
				
			||||||
import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/home/home.dart';
 | 
					import 'package:{{#snakeCase}}{{project_name}}{{/snakeCase}}/presentation/features/home/home.dart';
 | 
				
			||||||
 | 
					import 'package:wyatt_go_router/wyatt_go_router.dart';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
abstract class AppRouter {
 | 
					abstract class AppRouter {
 | 
				
			||||||
  /// Default transition for all pages
 | 
					  /// Default transition for all pages
 | 
				
			||||||
@ -52,34 +48,15 @@ abstract class AppRouter {
 | 
				
			|||||||
          /// Define the default guard
 | 
					          /// Define the default guard
 | 
				
			||||||
          /// This is the guard that will be used if the route
 | 
					          /// This is the guard that will be used if the route
 | 
				
			||||||
          /// does not have a guard set. (It is set to [PageProtection.none])
 | 
					          /// does not have a guard set. (It is set to [PageProtection.none])
 | 
				
			||||||
          const defaultGuard = PageProtection.protected;
 | 
					          const defaultProtection = PageProtection.protected;
 | 
				
			||||||
 | 
					 | 
				
			||||||
          /// Recursively get all routes and subroutes in a one-dimensional list
 | 
					 | 
				
			||||||
          /// This will work for any level of nesting
 | 
					 | 
				
			||||||
          final routes =
 | 
					 | 
				
			||||||
              AppRouter.routes.map((route) => route.flatten()).expand(
 | 
					 | 
				
			||||||
                    (routeList) => routeList,
 | 
					 | 
				
			||||||
                  );
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
          /// Matches is a list of all routes that match the current uri
 | 
					 | 
				
			||||||
          final matches = _router?.configuration
 | 
					 | 
				
			||||||
                  .findMatch(
 | 
					 | 
				
			||||||
                    state.uri.toString(),
 | 
					 | 
				
			||||||
                  )
 | 
					 | 
				
			||||||
                  .routes
 | 
					 | 
				
			||||||
                  .map((route) => route.flatten())
 | 
					 | 
				
			||||||
                  .expand(
 | 
					 | 
				
			||||||
                    (routeList) => routeList,
 | 
					 | 
				
			||||||
                  ) ??
 | 
					 | 
				
			||||||
              routes;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
          /// Get the current route
 | 
					          /// Get the current route
 | 
				
			||||||
          final currentRoute = matches.last;
 | 
					          final currentRoute = context.currentRoute;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          /// Get the guard of the current route
 | 
					          /// Get the guard of the current route
 | 
				
			||||||
          final guard = (currentRoute.guard == PageProtection.none)
 | 
					          final _ = (currentRoute.protection == PageProtection.none)
 | 
				
			||||||
              ? defaultGuard
 | 
					              ? defaultProtection
 | 
				
			||||||
              : currentRoute.guard;
 | 
					              : currentRoute.protection;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
          return null;
 | 
					          return null;
 | 
				
			||||||
        },
 | 
					        },
 | 
				
			||||||
 | 
				
			|||||||
@ -1,24 +0,0 @@
 | 
				
			|||||||
import 'dart:async';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
import 'package:flutter/foundation.dart';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
/// {@template go_router_refresh_stream}
 | 
					 | 
				
			||||||
/// A [ChangeNotifier] that notifies its listeners when a stream emits a value.
 | 
					 | 
				
			||||||
/// {@endtemplate}
 | 
					 | 
				
			||||||
class GoRouterRefreshStream extends ChangeNotifier {
 | 
					 | 
				
			||||||
  /// {@macro go_router_refresh_stream}
 | 
					 | 
				
			||||||
  GoRouterRefreshStream(Stream<dynamic> stream) {
 | 
					 | 
				
			||||||
    notifyListeners();
 | 
					 | 
				
			||||||
    _subscription = stream.asBroadcastStream().listen(
 | 
					 | 
				
			||||||
          (dynamic _) => notifyListeners(),
 | 
					 | 
				
			||||||
        );
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  late final StreamSubscription<dynamic> _subscription;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  @override
 | 
					 | 
				
			||||||
  void dispose() {
 | 
					 | 
				
			||||||
    _subscription.cancel();
 | 
					 | 
				
			||||||
    super.dispose();
 | 
					 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -15,9 +15,9 @@ dependencies:
 | 
				
			|||||||
  freezed_annotation: ^2.4.1
 | 
					  freezed_annotation: ^2.4.1
 | 
				
			||||||
  gap: ^3.0.1
 | 
					  gap: ^3.0.1
 | 
				
			||||||
  get_it: ^7.6.4
 | 
					  get_it: ^7.6.4
 | 
				
			||||||
  go_router: ^10.1.2
 | 
					 | 
				
			||||||
  intl: ^0.18.1
 | 
					  intl: ^0.18.1
 | 
				
			||||||
  json_annotation: ^4.8.1
 | 
					  json_annotation: ^4.8.1
 | 
				
			||||||
 | 
					  logging: ^1.2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  flutter:
 | 
					  flutter:
 | 
				
			||||||
    sdk: flutter
 | 
					    sdk: flutter
 | 
				
			||||||
@ -41,7 +41,12 @@ dependencies:
 | 
				
			|||||||
    hosted:
 | 
					    hosted:
 | 
				
			||||||
      name: wyatt_type_utils
 | 
					      name: wyatt_type_utils
 | 
				
			||||||
      url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
 | 
					      url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
 | 
				
			||||||
  logging: ^1.2.0
 | 
					  
 | 
				
			||||||
 | 
					  wyatt_go_router:
 | 
				
			||||||
 | 
					    version: ^1.0.0
 | 
				
			||||||
 | 
					    hosted:
 | 
				
			||||||
 | 
					      name: wyatt_go_router
 | 
				
			||||||
 | 
					      url: https://git.wyatt-studio.fr/api/packages/Wyatt-FOSS/pub/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dev_dependencies:
 | 
					dev_dependencies:
 | 
				
			||||||
  build_runner: ^2.4.6
 | 
					  build_runner: ^2.4.6
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
name: wyatt_app_template
 | 
					name: wyatt_app_template
 | 
				
			||||||
description: New app template for Wyatt Studio projects.
 | 
					description: New app template for Wyatt Studio projects.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
version: 0.2.1
 | 
					version: 0.2.2
 | 
				
			||||||
 | 
					
 | 
				
			||||||
vars:
 | 
					vars:
 | 
				
			||||||
  display_name:
 | 
					  display_name:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user