From a858cc0eb75144dae80b55ad7c3adb064aac8cef Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Tue, 23 Jul 2024 14:00:56 +0200 Subject: [PATCH 01/10] Updated doc to be more clear --- package/lib/src/beam_stack.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/lib/src/beam_stack.dart b/package/lib/src/beam_stack.dart index aa322f3..a6eb0b7 100644 --- a/package/lib/src/beam_stack.dart +++ b/package/lib/src/beam_stack.dart @@ -360,6 +360,8 @@ abstract class BeamStack /// If this is false (default), then a path pattern '/some/path' will match /// '/' and '/some' and '/some/path'. /// If this is true, then it will match just '/some/path'. + /// + /// __This only applies if the pattern is of type STRING, not REGEXP__ bool get strictPathPatterns => false; /// Creates and returns the list of pages to be built by the [Navigator] From 42d0529966d222a4a421e2fc58454841f1a06d40 Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Tue, 23 Jul 2024 14:20:50 +0200 Subject: [PATCH 02/10] Fixed issue where regex would only check first pathPattern and then always return. If there are 4 path pattern's and all of them are regex, then there was a bug that only the first one was checked. if that one failed then all the other ones where skipped. this fixes that. --- package/lib/src/beam_guard.dart | 8 +++++++- package/lib/src/utils.dart | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/package/lib/src/beam_guard.dart b/package/lib/src/beam_guard.dart index e5798e3..bd01719 100644 --- a/package/lib/src/beam_guard.dart +++ b/package/lib/src/beam_guard.dart @@ -211,7 +211,13 @@ class BeamGuard { } } else { final regexp = Utils.tryCastToRegExp(pathPattern); - return regexp.hasMatch(path); + final result = regexp.hasMatch(path); + + if (result) { + return true; + } else { + continue; + } } } return false; diff --git a/package/lib/src/utils.dart b/package/lib/src/utils.dart index 7fbbf86..73a83a6 100644 --- a/package/lib/src/utils.dart +++ b/package/lib/src/utils.dart @@ -99,7 +99,13 @@ abstract class Utils { } } else { final regexp = tryCastToRegExp(pathPattern); - return regexp.hasMatch(uri.toString()); + final result = regexp.hasMatch(uri.toString()); + + if (result) { + return true; + } else { + continue; + } } } return false; From 1b09ef0f599b37309d05935dc36341d1e9391cf2 Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Sun, 4 Aug 2024 17:28:49 +0200 Subject: [PATCH 03/10] Fixed BeamPageType.noTransition transitionDuration and reverseTransitionDuration where not set to Duration.zero. And thus the default dustion of 300 milliseconds was used Add the option to pass transitionDuration, ans reverseTransitionDuration to beamPage. Fixed an issue where the duration of BeamPageType.noTransition was not zero. --- package/lib/src/beam_page.dart | 60 +++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/package/lib/src/beam_page.dart b/package/lib/src/beam_page.dart index 7199fb1..df2213a 100644 --- a/package/lib/src/beam_page.dart +++ b/package/lib/src/beam_page.dart @@ -54,6 +54,8 @@ class BeamPage extends Page { this.fullScreenDialog = false, this.opaque = true, this.keepQueryOnPop = false, + this.transitionDuration, + this.reverseTransitionDuration, }) : super(key: key, name: name); /// A [BeamPage] to be the default for [BeamerDelegate.notFoundPage]. @@ -83,15 +85,11 @@ class BeamPage extends Page { // Take the history element that is being popped and the one before // as they will be compared later on to fine-tune the pop experience. final poppedHistoryElement = delegate.removeLastHistoryElement()!; - final previousHistoryElement = delegate.beamingHistory.isNotEmpty - ? delegate.beamingHistory.last.history.last - : null; + final previousHistoryElement = delegate.beamingHistory.isNotEmpty ? delegate.beamingHistory.last.history.last : null; // Convert both to Uri as their path and query will be compared. final poppedUri = poppedHistoryElement.routeInformation.uri; - final previousUri = previousHistoryElement != null - ? previousHistoryElement.routeInformation.uri - : Uri.parse(delegate.initialPath); + final previousUri = previousHistoryElement != null ? previousHistoryElement.routeInformation.uri : Uri.parse(delegate.initialPath); final poppedPathSegments = poppedUri.pathSegments; final poppedQueryParameters = poppedUri.queryParameters; @@ -122,8 +120,7 @@ class BeamPage extends Page { // Otherwise, find the route information with popPath in history. RouteInformation? lastRouteInformation; if (popPath == previousUri.path) { - lastRouteInformation = - delegate.removeLastHistoryElement()?.routeInformation; + lastRouteInformation = delegate.removeLastHistoryElement()?.routeInformation; } else { // find the last var found = false; @@ -206,13 +203,26 @@ class BeamPage extends Page { /// See [BeamPageType] for available types. final BeamPageType type; + /// The transition duration for this [BeamPage]. + /// + /// Defaults to `Duration(milliseconds: 300)`. (use flutter's default) + /// + /// This is not used when [type] is [BeamPageType.cupertino] or [BeamPageType.material]. + final Duration? transitionDuration; + + /// The reverse transition duration for this [BeamPage]. + /// + /// Defaults to `Duration(milliseconds: 300)`. (use flutter's default) + /// + /// This is not used when [type] is [BeamPageType.cupertino] or [BeamPageType.material]. + final Duration? reverseTransitionDuration; + /// A builder for custom [Route] to use in [createRoute]. /// /// `context` is the build context. /// `child` is the child of this [BeamPage] /// `settings` will be passed to [PageRoute] constructor. - final Route Function( - BuildContext context, RouteSettings settings, Widget child)? routeBuilder; + final Route Function(BuildContext context, RouteSettings settings, Widget child)? routeBuilder; /// Whether to present current [BeamPage] as a fullscreen dialog /// @@ -249,6 +259,8 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (_, __, ___) => child, + transitionDuration: transitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => FadeTransition( opacity: animation, child: child, @@ -260,10 +272,10 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (_, __, ___) => child, + transitionDuration: transitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive( - Tween(begin: const Offset(0, 1), end: const Offset(0, 0)) - .chain(CurveTween(curve: Curves.ease))), + position: animation.drive(Tween(begin: const Offset(0, 1), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -273,10 +285,10 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (_, __, ___) => child, + transitionDuration: transitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive( - Tween(begin: const Offset(1, 0), end: const Offset(0, 0)) - .chain(CurveTween(curve: Curves.ease))), + position: animation.drive(Tween(begin: const Offset(1, 0), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -286,10 +298,10 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (_, __, ___) => child, + transitionDuration: transitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive( - Tween(begin: const Offset(-1, 0), end: const Offset(0, 0)) - .chain(CurveTween(curve: Curves.ease))), + position: animation.drive(Tween(begin: const Offset(-1, 0), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -299,10 +311,10 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (_, __, ___) => child, + transitionDuration: transitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive( - Tween(begin: const Offset(0, -1), end: const Offset(0, 0)) - .chain(CurveTween(curve: Curves.ease))), + position: animation.drive(Tween(begin: const Offset(0, -1), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -312,6 +324,8 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (_, __, ___) => child, + transitionDuration: transitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => ScaleTransition( scale: animation, child: child, @@ -322,6 +336,8 @@ class BeamPage extends Page { fullscreenDialog: fullScreenDialog, opaque: opaque, settings: this, + transitionDuration: transitionDuration ?? Duration.zero, + reverseTransitionDuration: reverseTransitionDuration ?? Duration.zero, pageBuilder: (context, animation, secondaryAnimation) => child, ); default: From 20df2b2da9eb6506e5b9a46e786a5d1cecae69db Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Sun, 4 Aug 2024 18:02:49 +0200 Subject: [PATCH 04/10] Added interceptors to beamer, and general improvements --- examples/interceptors/.gitignore | 46 ++++ examples/interceptors/.metadata | 30 +++ examples/interceptors/README.md | 8 + examples/interceptors/analysis_options.yaml | 28 +++ .../interceptors/example-interceptors.gif | Bin 0 -> 810613 bytes .../lib/app/beam_intercept_example_app.dart | 21 ++ examples/interceptors/lib/main.dart | 38 +++ .../lib/screens/allow_screen.dart | 40 ++++ .../lib/screens/block_screen.dart | 40 ++++ .../lib/stack/interceptor_stack_to_block.dart | 50 ++++ .../lib/stack/test_interceptor_stack.dart | 68 ++++++ examples/interceptors/pubspec.yaml | 22 ++ package/lib/beamer.dart | 12 +- package/lib/src/beam_guard.dart | 58 +---- package/lib/src/beam_interceptor.dart | 45 ++++ .../lib/src/beam_interceptor_pop_scope.dart | 70 ++++++ package/lib/src/beam_stack.dart | 134 +++++++++-- package/lib/src/beamer.dart | 27 ++- .../src/beamer_back_button_dispatcher.dart | 3 +- package/lib/src/beamer_delegate.dart | 114 +++++---- package/lib/src/beamer_provider.dart | 3 +- package/lib/src/utils.dart | 221 ++++++------------ package/test/beamer_delegate_test.dart | 66 ++---- package/test/beaming_history_test.dart | 24 +- package/test/utils_test.dart | 14 +- 25 files changed, 827 insertions(+), 355 deletions(-) create mode 100644 examples/interceptors/.gitignore create mode 100644 examples/interceptors/.metadata create mode 100644 examples/interceptors/README.md create mode 100644 examples/interceptors/analysis_options.yaml create mode 100644 examples/interceptors/example-interceptors.gif create mode 100644 examples/interceptors/lib/app/beam_intercept_example_app.dart create mode 100644 examples/interceptors/lib/main.dart create mode 100644 examples/interceptors/lib/screens/allow_screen.dart create mode 100644 examples/interceptors/lib/screens/block_screen.dart create mode 100644 examples/interceptors/lib/stack/interceptor_stack_to_block.dart create mode 100644 examples/interceptors/lib/stack/test_interceptor_stack.dart create mode 100644 examples/interceptors/pubspec.yaml create mode 100644 package/lib/src/beam_interceptor.dart create mode 100644 package/lib/src/beam_interceptor_pop_scope.dart diff --git a/examples/interceptors/.gitignore b/examples/interceptors/.gitignore new file mode 100644 index 0000000..0fa6b67 --- /dev/null +++ b/examples/interceptors/.gitignore @@ -0,0 +1,46 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +/build/ + +# Web related +lib/generated_plugin_registrant.dart + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/examples/interceptors/.metadata b/examples/interceptors/.metadata new file mode 100644 index 0000000..9cef17b --- /dev/null +++ b/examples/interceptors/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "b0850beeb25f6d5b10426284f506557f66181b36" + channel: "stable" + +project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + - platform: web + create_revision: b0850beeb25f6d5b10426284f506557f66181b36 + base_revision: b0850beeb25f6d5b10426284f506557f66181b36 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/examples/interceptors/README.md b/examples/interceptors/README.md new file mode 100644 index 0000000..9ffb2bf --- /dev/null +++ b/examples/interceptors/README.md @@ -0,0 +1,8 @@ +# Interceptors Example + +This example shows what you can achieve with BeamInterceptors. Interceptors are similar to BeamGuards, but interceptors can be dynamically added and removed from a BeamerDelegate. + +

+example-interceptors + +Run `flutter create .` to generate all necessary files, if needed. diff --git a/examples/interceptors/analysis_options.yaml b/examples/interceptors/analysis_options.yaml new file mode 100644 index 0000000..0d29021 --- /dev/null +++ b/examples/interceptors/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/examples/interceptors/example-interceptors.gif b/examples/interceptors/example-interceptors.gif new file mode 100644 index 0000000000000000000000000000000000000000..c3ec807d4af3adb1831fd915470737a7a33ec430 GIT binary patch literal 810613 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≀ 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

  • 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 Dlz_d_ literal 0 HcmV?d00001 diff --git a/examples/interceptors/lib/app/beam_intercept_example_app.dart b/examples/interceptors/lib/app/beam_intercept_example_app.dart new file mode 100644 index 0000000..a24c23d --- /dev/null +++ b/examples/interceptors/lib/app/beam_intercept_example_app.dart @@ -0,0 +1,21 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/material.dart'; +import 'package:interceptors/main.dart'; + +class BeamInterceptExampleApp extends StatelessWidget { + const BeamInterceptExampleApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialApp.router( + routerDelegate: beamerDelegate, + routeInformationParser: BeamerParser(), + backButtonDispatcher: BeamerBackButtonDispatcher(delegate: beamerDelegate), + debugShowCheckedModeBanner: false, + builder: (context, child) => Scaffold( + appBar: AppBar(), + body: child, + ), + ); + } +} diff --git a/examples/interceptors/lib/main.dart b/examples/interceptors/lib/main.dart new file mode 100644 index 0000000..f968431 --- /dev/null +++ b/examples/interceptors/lib/main.dart @@ -0,0 +1,38 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/material.dart'; +import 'package:interceptors/app/beam_intercept_example_app.dart'; +import 'package:interceptors/stack/interceptor_stack_to_block.dart'; +import 'package:interceptors/stack/test_interceptor_stack.dart'; + +final beamerDelegate = BeamerDelegate( + transitionDelegate: const NoAnimationTransitionDelegate(), + beamBackTransitionDelegate: const NoAnimationTransitionDelegate(), + stackBuilder: BeamerStackBuilder( + beamStacks: [ + TestInterceptorStack(), + IntercepterStackToBlock(), + ], + ), +); + +final BeamInterceptor allowNavigatingInterceptor = BeamInterceptor( + intercept: (context, delegate, currentPages, origin, target, deepLink) => false, + enabled: true, // this can be false too + name: 'allow', +); + +final BeamInterceptor blockNavigatingInterceptor = BeamInterceptor( + intercept: (context, delegate, currentPages, origin, target, deepLink) => target is IntercepterStackToBlock, + enabled: true, + name: 'block', +); + +void main() { + Beamer.setPathUrlStrategy(); + runApp( + BeamerProvider( + routerDelegate: beamerDelegate, + child: const BeamInterceptExampleApp(), + ), + ); +} diff --git a/examples/interceptors/lib/screens/allow_screen.dart b/examples/interceptors/lib/screens/allow_screen.dart new file mode 100644 index 0000000..70fa956 --- /dev/null +++ b/examples/interceptors/lib/screens/allow_screen.dart @@ -0,0 +1,40 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/material.dart'; +import 'package:interceptors/main.dart'; + +class AllowScreen extends StatelessWidget { + const AllowScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return BeamInterceptorPopScope( + interceptors: [allowNavigatingInterceptor], + beamerDelegate: beamerDelegate, + child: Scaffold( + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ElevatedButton( + onPressed: () { + context.beamToNamed('/block-this-route'); + + ScaffoldMessenger.of(beamerDelegate.navigator.context).removeCurrentSnackBar(); + ScaffoldMessenger.of(beamerDelegate.navigator.context).showSnackBar( + const SnackBar(content: Text('This route is NOT intercepted and thus NOT blocked.')), + ); + }, + child: const Text('Go to /block-this-route (not blocked)'), + ), + const SizedBox(height: 20), + ElevatedButton( + onPressed: () => Navigator.pop(context), + child: const Text('Go to back'), + ), + ], + ), + ), + ), + ); + } +} diff --git a/examples/interceptors/lib/screens/block_screen.dart b/examples/interceptors/lib/screens/block_screen.dart new file mode 100644 index 0000000..0f84951 --- /dev/null +++ b/examples/interceptors/lib/screens/block_screen.dart @@ -0,0 +1,40 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/material.dart'; +import 'package:interceptors/main.dart'; + +class BlockScreen extends StatelessWidget { + const BlockScreen({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return BeamInterceptorPopScope( + interceptors: [ + blockNavigatingInterceptor, + ], + beamerDelegate: beamerDelegate, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ElevatedButton( + onPressed: () { + context.beamToNamed('/block-this-route'); + + WidgetsBinding.instance.addPostFrameCallback((_) { + ScaffoldMessenger.of(beamerDelegate.navigator.context).removeCurrentSnackBar(); + ScaffoldMessenger.of(beamerDelegate.navigator.context).showSnackBar( + const SnackBar(content: Text('This route is intercepted and thus blocked.')), + ); + }); + }, + child: const Text('Go to blocked route'), + ), + const SizedBox(height: 20), + ElevatedButton( + onPressed: () => Navigator.pop(context), + child: const Text('Go to back'), + ), + ], + ), + ); + } +} diff --git a/examples/interceptors/lib/stack/interceptor_stack_to_block.dart b/examples/interceptors/lib/stack/interceptor_stack_to_block.dart new file mode 100644 index 0000000..19fa80c --- /dev/null +++ b/examples/interceptors/lib/stack/interceptor_stack_to_block.dart @@ -0,0 +1,50 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/material.dart'; + +class IntercepterStackToBlock extends BeamStack { + @override + List get pathPatterns => ['/block-this-route']; + + @override + List buildPages(BuildContext context, BeamState state) { + final pages = [ + BeamPage( + key: const ValueKey('block-this-route'), + title: 'block-this-route', + type: BeamPageType.noTransition, + child: UnconstrainedBox( + child: SizedBox( + width: 500, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text('Super secret page', style: Theme.of(context).textTheme.titleLarge), + Padding( + padding: const EdgeInsets.only(top: 16), + child: SizedBox( + height: 50, + width: double.infinity, + child: ElevatedButton( + onPressed: () { + if (context.canBeamBack) { + context.beamBack(); + } else if (Navigator.canPop(context)) { + Navigator.pop(context); + } else { + context.beamToNamed('/'); + } + }, + child: const Text('Go back'), + ), + ), + ), + ], + ), + ), + ), + ), + ]; + + return pages; + } +} diff --git a/examples/interceptors/lib/stack/test_interceptor_stack.dart b/examples/interceptors/lib/stack/test_interceptor_stack.dart new file mode 100644 index 0000000..910dc6a --- /dev/null +++ b/examples/interceptors/lib/stack/test_interceptor_stack.dart @@ -0,0 +1,68 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/material.dart'; +import 'package:interceptors/screens/allow_screen.dart'; +import 'package:interceptors/screens/block_screen.dart'; + +class TestInterceptorStack extends BeamStack { + @override + List get pathPatterns => ['/', '/allow', '/block']; + + @override + List buildPages(BuildContext context, BeamState state) { + final pages = [ + BeamPage( + key: const ValueKey('intercepter'), + title: 'Intercepter', + type: BeamPageType.noTransition, + child: UnconstrainedBox( + child: SizedBox( + width: 250, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: SizedBox( + height: 50, + width: double.infinity, + child: ElevatedButton( + onPressed: () => context.beamToNamed('/allow'), + child: const Text('Allow navigating to test'), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(bottom: 8.0), + child: SizedBox( + height: 50, + width: double.infinity, + child: ElevatedButton( + onPressed: () => context.beamToNamed('/block'), + child: const Text('Block navigating to test'), + ), + ), + ), + ], + ), + ), + ), + ), + if (state.uri.toString().contains('allow')) + const BeamPage( + key: ValueKey('allow'), + title: 'Allow', + type: BeamPageType.noTransition, + child: AllowScreen(), + ), + if (state.uri.toString().contains('block')) + const BeamPage( + key: ValueKey('block'), + title: 'Block', + type: BeamPageType.noTransition, + child: BlockScreen(), + ), + ]; + + return pages; + } +} diff --git a/examples/interceptors/pubspec.yaml b/examples/interceptors/pubspec.yaml new file mode 100644 index 0000000..8194024 --- /dev/null +++ b/examples/interceptors/pubspec.yaml @@ -0,0 +1,22 @@ +name: interceptors +description: Interceptors example app. + +publish_to: 'none' + +version: 1.0.0 + +environment: + sdk: '>=3.0.0 <4.0.0' + +dependencies: + flutter: + sdk: flutter + beamer: + path: ../../package + +dev_dependencies: + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/package/lib/beamer.dart b/package/lib/beamer.dart index a3c3343..5a22a89 100644 --- a/package/lib/beamer.dart +++ b/package/lib/beamer.dart @@ -1,13 +1,15 @@ library beamer; +export 'src/beam_guard.dart'; +export 'src/beam_interceptor.dart'; +export 'src/beam_interceptor_pop_scope.dart'; export 'src/beam_page.dart'; -export 'src/beam_state.dart'; export 'src/beam_stack.dart'; -export 'src/beam_guard.dart'; -export 'src/beamer_parser.dart'; -export 'src/beamer_delegate.dart'; +export 'src/beam_state.dart'; export 'src/beamer.dart'; -export 'src/beamer_provider.dart'; export 'src/beamer_back_button_dispatcher.dart'; +export 'src/beamer_delegate.dart'; +export 'src/beamer_parser.dart'; +export 'src/beamer_provider.dart'; export 'src/stack_builders.dart'; export 'src/transition_delegates.dart'; diff --git a/package/lib/src/beam_guard.dart b/package/lib/src/beam_guard.dart index bd01719..c910fac 100644 --- a/package/lib/src/beam_guard.dart +++ b/package/lib/src/beam_guard.dart @@ -1,9 +1,7 @@ -import 'package:beamer/src/utils.dart'; -import 'package:flutter/widgets.dart'; - -import 'package:beamer/src/beamer_delegate.dart'; -import 'package:beamer/src/beam_stack.dart'; import 'package:beamer/src/beam_page.dart'; +import 'package:beamer/src/beam_stack.dart'; +import 'package:beamer/src/beamer_delegate.dart'; +import 'package:flutter/widgets.dart'; /// Checks whether current [BeamStack] is allowed to be beamed to /// and provides steps to be executed following a failed check. @@ -37,7 +35,7 @@ class BeamGuard { /// but will not match '/books'. To match '/books' and everything after it, /// use '/books*'. /// - /// See [_hasMatch] for more details. + /// See [canHandleGuard] for more details. /// /// For RegExp: /// You can use RegExp instances and the delegate will check for a match using [RegExp.hasMatch] @@ -102,7 +100,8 @@ class BeamGuard { /// Whether or not the guard should [check] the [stack]. bool shouldGuard(BeamStack stack) { - return guardNonMatching ? !_hasMatch(stack) : _hasMatch(stack); + final shouldCheckGuard = stack.shouldCheckGuard(this); + return guardNonMatching ? shouldCheckGuard == false : shouldCheckGuard; } /// Applies the guard. @@ -123,8 +122,7 @@ class BeamGuard { onCheckFailed?.call(context, target); if (showPage != null) { - final redirectBeamStack = - GuardShowPage(target.state.routeInformation, showPage!); + final redirectBeamStack = GuardShowPage(target.state.routeInformation, showPage!); if (replaceCurrentStack) { delegate.beamToReplacement(redirectBeamStack); } else { @@ -142,13 +140,11 @@ class BeamGuard { if (beamTo != null) { final redirectBeamStack = beamTo!(context, origin, target, deepLink); - if (redirectBeamStack.state.routeInformation.uri == - target.state.routeInformation.uri) { + if (redirectBeamStack.state.routeInformation.uri == target.state.routeInformation.uri) { // just block if this will produce an immediate infinite loop return true; } - if (redirectBeamStack.state.routeInformation.uri == - origin.state.routeInformation.uri) { + if (redirectBeamStack.state.routeInformation.uri == origin.state.routeInformation.uri) { // just block if redirect is the current route return true; } @@ -186,40 +182,4 @@ class BeamGuard { return false; } - - /// Matches [stack]'s pathBlueprint to [pathPatterns]. - /// - /// If asterisk is present, it is enough that the pre-asterisk substring is - /// contained within stack's pathPatterns. - /// Else, the path (i.e. the pre-query substring) of the stack's uri - /// must be equal to the pathPattern. - bool _hasMatch(BeamStack stack) { - for (final pathPattern in pathPatterns) { - final path = stack.state.routeInformation.uri.path; - if (pathPattern is String) { - final asteriskIndex = pathPattern.indexOf('*'); - if (asteriskIndex != -1) { - if (stack.state.routeInformation.uri - .toString() - .contains(pathPattern.substring(0, asteriskIndex))) { - return true; - } - } else { - if (pathPattern == path) { - return true; - } - } - } else { - final regexp = Utils.tryCastToRegExp(pathPattern); - final result = regexp.hasMatch(path); - - if (result) { - return true; - } else { - continue; - } - } - } - return false; - } } diff --git a/package/lib/src/beam_interceptor.dart b/package/lib/src/beam_interceptor.dart new file mode 100644 index 0000000..f55335c --- /dev/null +++ b/package/lib/src/beam_interceptor.dart @@ -0,0 +1,45 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/widgets.dart'; + +/// IDK LOL +class BeamInterceptor { + /// Creates a [BeamInterceptor] with defined properties. + /// + /// [pathPatterns] and [intercept] must not be null. + const BeamInterceptor({ + this.enabled = true, + required this.name, + required this.intercept, + }); + + final String name; + + final bool enabled; + + /// The interceptor function. + /// + /// Returns `true` if the interceptor should be applied and `false` otherwise. + /// + /// The interceptor can be disabled by setting [enabled] to `false`. + /// + /// The targetBeamStack is the [BeamStack] that is beeing pushed or popped to. (destination) + final bool Function( + BuildContext context, + BeamerDelegate delegate, + List currentPages, + BeamStack origin, + BeamStack target, + String? deepLink, + ) intercept; + + @override + bool operator ==(other) { + if (other is! BeamInterceptor) { + return false; + } + return name == other.name; + } + + @override + int get hashCode => name.hashCode; +} diff --git a/package/lib/src/beam_interceptor_pop_scope.dart b/package/lib/src/beam_interceptor_pop_scope.dart new file mode 100644 index 0000000..f58a3f9 --- /dev/null +++ b/package/lib/src/beam_interceptor_pop_scope.dart @@ -0,0 +1,70 @@ +import 'package:beamer/beamer.dart'; +import 'package:flutter/widgets.dart'; + +/// This works like [PopScope], but with beam-interceptors. +/// +/// See [BeamInterceptor] for more information. +/// +/// If any of the interceptors return true, the pop will not be invoked. +/// +/// This works on Navigator.maybePop as well as all the Beamer.beamTo, Beamer.beamToNamed, Beamer.beamBack... operations. +/// +/// ```dart +/// BeamInterceptorPopScope( +/// interceptors: [BeamInterceptor(...), ...], +/// child: Center( +/// child: ElevatedButton( +/// child: const Text('Go back'), +/// onPressed: () => Beamer.of(context).beamToNamed('/'), +/// ), +/// ), +/// ); +/// ``` +class BeamInterceptorPopScope extends StatefulWidget { + const BeamInterceptorPopScope({ + required this.child, + required this.interceptors, + this.beamerDelegate, + super.key, + }); + + final Widget child; + + /// The interceptors to check when a maybePop, or beamTo, beamToNamed, beamBack... is triggered. + final List interceptors; + + /// The beamerDelegate to apply the interceptors to. + final BeamerDelegate? beamerDelegate; + + @override + State createState() => _BeamInterceptorPopScopeState(); +} + +class _BeamInterceptorPopScopeState extends State { + late BeamerDelegate beamerDelegate; + + @override + void initState() { + super.initState(); + + WidgetsBinding.instance.addPostFrameCallback((timeStamp) { + beamerDelegate = widget.beamerDelegate ?? Beamer.of(context); + + for (var interceptor in widget.interceptors) { + beamerDelegate.addInterceptor(interceptor); + } + }); + } + + @override + void dispose() { + for (var interceptor in widget.interceptors) { + beamerDelegate.removeInterceptor(interceptor); + } + + super.dispose(); + } + + @override + Widget build(BuildContext context) => widget.child; +} diff --git a/package/lib/src/beam_stack.dart b/package/lib/src/beam_stack.dart index a6eb0b7..f1d0932 100644 --- a/package/lib/src/beam_stack.dart +++ b/package/lib/src/beam_stack.dart @@ -45,9 +45,7 @@ class BeamParameters { }) { return BeamParameters( transitionDelegate: transitionDelegate ?? this.transitionDelegate, - popConfiguration: resetPopConfiguration - ? null - : popConfiguration ?? this.popConfiguration, + popConfiguration: resetPopConfiguration ? null : popConfiguration ?? this.popConfiguration, beamBackOnPop: beamBackOnPop ?? this.beamBackOnPop, popBeamStackOnPop: popBeamStackOnPop ?? this.popBeamStackOnPop, stacked: stacked ?? this.stacked, @@ -83,8 +81,7 @@ class HistoryElement { /// * keeping a [state] that provides the link between the first 2 /// /// Extend this class to define your stacks to which you can then beam to. -abstract class BeamStack - extends ChangeNotifier { +abstract class BeamStack extends ChangeNotifier { /// Creates a [BeamStack] with specified properties. /// /// All attributes can be null. @@ -169,8 +166,7 @@ abstract class BeamStack /// One should override this if using a custom state class. /// /// See [create]. - T createState(RouteInformation routeInformation) => - BeamState.fromRouteInformation( + T createState(RouteInformation routeInformation) => BeamState.fromRouteInformation( routeInformation, beamStack: this, ) as T; @@ -283,8 +279,7 @@ abstract class BeamStack history.removeRange(sameStateIndex, history.length); } } - if (history.isEmpty || - routeInformation.uri != history.last.routeInformation.uri) { + if (history.isEmpty || routeInformation.uri != history.last.routeInformation.uri) { history.add(HistoryElement(routeInformation, beamParameters)); } } @@ -318,7 +313,104 @@ abstract class BeamStack /// Can this handle the [uri] based on its [pathPatterns]. /// /// Can be useful in a custom [BeamerDelegate.stackBuilder]. - bool canHandle(Uri uri) => Utils.canBeamStackHandleUri(this, uri); + bool canHandle(Uri uri) { + for (final pathPattern in pathPatterns) { + if (pathPattern is String) { + // If it is an exact match or asterisk pattern + if (pathPattern == uri.path || pathPattern == '/*' || pathPattern == '*') { + return true; + } + + // Clean URI path segments + final uriPathSegments = uri.pathSegments.toList(); + if (uriPathSegments.length > 1 && uriPathSegments.last == '') { + uriPathSegments.removeLast(); + } + + final pathPatternSegments = Uri.parse(pathPattern).pathSegments; + + // If we're in strict mode and URI has fewer segments than pattern, + // we don't have a match so can continue. + if (strictPathPatterns && uriPathSegments.length < pathPatternSegments.length) { + continue; + } + + // If URI has more segments and pattern doesn't end with asterisk, + // we don't have a match so can continue. + if (uriPathSegments.length > pathPatternSegments.length && (pathPatternSegments.isEmpty || !pathPatternSegments.last.endsWith('*'))) { + continue; + } + + var checksPassed = true; + // Iterating through URI segments + for (var i = 0; i < uriPathSegments.length; i++) { + // If all checks have passed up to i, + // if pattern has no more segments to traverse and it ended with asterisk, + // it is a match and we can break, + if (pathPatternSegments.length < i + 1 && pathPatternSegments.last.endsWith('*')) { + checksPassed = true; + break; + } + + // If pattern has asterisk at i-th position, + // anything matches and we can continue. + if (pathPatternSegments[i] == '*') { + continue; + } + // If they are not the same and pattern doesn't expects path parameter, + // there's no match and we can break. + if (uriPathSegments[i] != pathPatternSegments[i] && !pathPatternSegments[i].startsWith(':')) { + checksPassed = false; + break; + } + } + // If no check failed, beamStack can handle this URI. + if (checksPassed) { + return true; + } + } else { + final regex = pathPattern.toRegExp; + final hasMatch = regex.hasMatch(uri.toString()); + + if (hasMatch) + return true; + else + continue; + } + } + return false; + } + + /// Matches pathBlueprint to [pathPatterns]. + /// + /// If asterisk is present, it is enough that the pre-asterisk substring is + /// contained within stack's pathPatterns. + /// Else, the path (i.e. the pre-query substring) of the stack's uri + /// must be equal to the pathPattern. + bool shouldCheckGuard(BeamGuard guard) { + for (final guardPathPattern in guard.pathPatterns) { + final uri = state.routeInformation.uri; + final path = uri.path; + + if (guardPathPattern is! String) { + final regex = guardPathPattern.toRegExp; + final hasMatch = regex.hasMatch(path); + + if (hasMatch) + return true; + else + continue; + } + + final asteriskIndex = guardPathPattern.indexOf('*'); + + if (asteriskIndex == -1) return guardPathPattern == path; + + return uri.toString().contains(guardPathPattern.substring(0, asteriskIndex)); + } + + return false; + } /// Gives the ability to wrap the [navigator]. /// @@ -360,7 +452,7 @@ abstract class BeamStack /// If this is false (default), then a path pattern '/some/path' will match /// '/' and '/some' and '/some/path'. /// If this is true, then it will match just '/some/path'. - /// + /// /// __This only applies if the pattern is of type STRING, not REGEXP__ bool get strictPathPatterns => false; @@ -432,8 +524,7 @@ class GuardShowPage extends BeamStack { final BeamPage beamPage; @override - List buildPages(BuildContext context, BeamState state) => - [beamPage]; + List buildPages(BuildContext context, BeamState state) => [beamPage]; @override List get pathPatterns => [routeInformation.uri.path]; @@ -487,10 +578,8 @@ class RoutesBeamStack extends BeamStack { @override List buildPages(BuildContext context, BeamState state) { final filteredRoutes = chooseRoutes(state.routeInformation, routes.keys); - final routeBuilders = Map.of(routes) - ..removeWhere((key, value) => !filteredRoutes.containsKey(key)); - final sortedRoutes = routeBuilders.keys.toList() - ..sort((a, b) => _compareKeys(a, b)); + final routeBuilders = Map.of(routes)..removeWhere((key, value) => !filteredRoutes.containsKey(key)); + final sortedRoutes = routeBuilders.keys.toList()..sort((a, b) => _compareKeys(a, b)); final pages = sortedRoutes.map((route) { final routeElement = routes[route]!(context, state, data); if (routeElement is BeamPage) { @@ -579,10 +668,13 @@ class RoutesBeamStack extends BeamStack { matched[route] = createMatch(path, uri.queryParameters); } } else { - final regexp = Utils.tryCastToRegExp(route); - if (regexp.hasMatch(uri.toString())) { - final path = uri.toString(); - matched[regexp] = createMatch(path, uri.queryParameters); + final regex = route.toRegExp; + final path = uri.toString(); + + final hasMatch = regex.hasMatch(path); + + if (hasMatch) { + matched[regex] = createMatch(path, uri.queryParameters); } } } diff --git a/package/lib/src/beamer.dart b/package/lib/src/beamer.dart index f66d2d4..f8cd9a8 100644 --- a/package/lib/src/beamer.dart +++ b/package/lib/src/beamer.dart @@ -1,9 +1,7 @@ import 'package:beamer/beamer.dart'; +import 'package:beamer/src/path_url_strategy_nonweb.dart' if (dart.library.html) 'path_url_strategy_web.dart' as url_strategy; import 'package:flutter/widgets.dart'; -import 'package:beamer/src/path_url_strategy_nonweb.dart' - if (dart.library.html) 'path_url_strategy_web.dart' as url_strategy; - /// Represents a navigation area and is a wrapper for [Router]. /// /// This is most commonly used for "nested navigation", e.g. in a tabbed view. @@ -42,12 +40,25 @@ class Beamer extends StatefulWidget { final delegate = Router.of(context).routerDelegate as BeamerDelegate; return root ? delegate.root : delegate; } catch (e) { - assert(BeamerProvider.of(context) != null, - 'There was no Router nor BeamerProvider in current context. If using MaterialApp.builder, wrap the MaterialApp.router in BeamerProvider to which you pass the same routerDelegate as to MaterialApp.router.'); + assert(BeamerProvider.of(context) != null, 'There was no Router nor BeamerProvider in current context. If using MaterialApp.builder, wrap the MaterialApp.router in BeamerProvider to which you pass the same routerDelegate as to MaterialApp.router.'); return BeamerProvider.of(context)!.routerDelegate; } } + /// Access Beamer's [routerDelegate]. + /// + /// Giving `true` to [root] gets the root beamer if the closest beamer is + /// nested under another beamer. + /// + /// This is the same as `Beamer.of(context, root: true)`. But returns `null` if no Beamer is found in the context. + static BeamerDelegate? maybeOf(BuildContext context, {bool root = false}) { + try { + return of(context, root: root); + } catch (e) { + return null; + } + } + /// Change the strategy to use for handling browser URL to `PathUrlStrategy`. /// /// `PathUrlStrategy` uses the browser URL's pathname to represent Beamer's route name. @@ -80,11 +91,9 @@ class BeamerState extends State { // The parent will only be null, if this state is disposed and therefore // `build` cannot be called on it any more. final backButtonDispatcher = widget.backButtonDispatcher ?? - ((parent!.backButtonDispatcher is BeamerBackButtonDispatcher && - widget.createBackButtonDispatcher) + ((parent!.backButtonDispatcher is BeamerBackButtonDispatcher && widget.createBackButtonDispatcher) ? BeamerChildBackButtonDispatcher( - parent: - parent!.backButtonDispatcher! as BeamerBackButtonDispatcher, + parent: parent!.backButtonDispatcher! as BeamerBackButtonDispatcher, delegate: routerDelegate, ) : null); diff --git a/package/lib/src/beamer_back_button_dispatcher.dart b/package/lib/src/beamer_back_button_dispatcher.dart index 88fc547..328cdcf 100644 --- a/package/lib/src/beamer_back_button_dispatcher.dart +++ b/package/lib/src/beamer_back_button_dispatcher.dart @@ -1,6 +1,5 @@ -import 'package:flutter/material.dart'; - import 'package:beamer/src/beamer_delegate.dart'; +import 'package:flutter/material.dart'; /// Overrides default back button behavior in [RootBackButtonDispatcher] /// to do custom [onBack] or [BeamerDelegate.beamBack]. diff --git a/package/lib/src/beamer_delegate.dart b/package/lib/src/beamer_delegate.dart index c6a4140..a3d777d 100644 --- a/package/lib/src/beamer_delegate.dart +++ b/package/lib/src/beamer_delegate.dart @@ -1,7 +1,7 @@ +import 'dart:async'; + import 'package:beamer/beamer.dart'; -import 'package:beamer/src/browser_tab_title_util_non_web.dart' - if (dart.library.html) 'package:beamer/src/browser_tab_title_util_web.dart' - as browser_tab_title_util; +import 'package:beamer/src/browser_tab_title_util_non_web.dart' if (dart.library.html) 'package:beamer/src/browser_tab_title_util_web.dart' as browser_tab_title_util; import 'package:beamer/src/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -10,8 +10,7 @@ import 'package:flutter/services.dart'; /// A delegate that is used by the [Router] to build the [Navigator]. /// /// This is "the beamer", the one that does the actual beaming. -class BeamerDelegate extends RouterDelegate - with ChangeNotifier, PopNavigatorRouterDelegateMixin { +class BeamerDelegate extends RouterDelegate with ChangeNotifier, PopNavigatorRouterDelegateMixin { /// Creates a [BeamerDelegate] with specified properties. /// /// [stackBuilder] is required to process the incoming navigation request. @@ -40,7 +39,9 @@ class BeamerDelegate extends RouterDelegate this.updateFromParent = true, this.updateParent = true, this.clearBeamingHistoryOn = const {}, + List? interceptors, }) { + this.interceptors = interceptors ?? []; _currentBeamParameters = BeamParameters( transitionDelegate: transitionDelegate, ); @@ -216,6 +217,8 @@ class BeamerDelegate extends RouterDelegate /// and stack of pages will be updated as is configured in [BeamGuard]. final List guards; + late final List interceptors; + /// The list of observers for the [Navigator]. final List navigatorObservers; @@ -240,8 +243,7 @@ class BeamerDelegate extends RouterDelegate /// Return `false` if beamer should finish handling the pop. /// /// See [build] for details on how beamer handles [Navigator.onPopPage]. - bool Function(BuildContext context, Route route, dynamic result)? - onPopPage; + bool Function(BuildContext context, Route route, dynamic result)? onPopPage; /// Whether the title attribute of [BeamPage] should /// be used to set and update the browser tab title. @@ -302,8 +304,7 @@ class BeamerDelegate extends RouterDelegate /// Beamer.of(context).currentBeamStack /// ``` /// {@endtemplate} - BeamStack get currentBeamStack => - beamingHistory.isEmpty ? EmptyBeamStack() : beamingHistory.last; + BeamStack get currentBeamStack => beamingHistory.isEmpty ? EmptyBeamStack() : beamingHistory.last; List _currentPages = []; @@ -410,13 +411,9 @@ class BeamerDelegate extends RouterDelegate rebuild = false; } - replaceRouteInformation - ? SystemNavigator.selectSingleEntryHistory() - : SystemNavigator.selectMultiEntryHistory(); + replaceRouteInformation ? SystemNavigator.selectSingleEntryHistory() : SystemNavigator.selectMultiEntryHistory(); - this.configuration = configuration != null - ? Utils.createNewConfiguration(this.configuration, configuration) - : currentBeamStack.state.routeInformation.copyWith(); + this.configuration = configuration != null ? Utils.createNewConfiguration(this.configuration, configuration) : currentBeamStack.state.routeInformation.copyWith(); // update beam parameters _currentBeamParameters = beamParameters ?? _currentBeamParameters; @@ -432,13 +429,22 @@ class BeamerDelegate extends RouterDelegate // run guards on _beamStackCandidate final context = _context; if (context != null) { - final didApply = _runGuards(context, _beamStackCandidate); + final didGuardsBlock = _runGuards(context, _beamStackCandidate); + _didRunGuards = true; - if (didApply) { + + if (didGuardsBlock) { return; } else { // TODO revert configuration if guard just blocked navigation } + + // run interceptors on _beamStackCandidate + final isIntercepted = _isIntercepted(context, _beamStackCandidate); + + if (isIntercepted) { + return; + } } // adds the candidate to history @@ -570,9 +576,7 @@ class BeamerDelegate extends RouterDelegate update( configuration: RouteInformation(uri: Uri.parse(uri), state: routeState), beamParameters: _currentBeamParameters.copyWith( - popConfiguration: popToNamed != null - ? RouteInformation(uri: Uri.parse(popToNamed)) - : null, + popConfiguration: popToNamed != null ? RouteInformation(uri: Uri.parse(popToNamed)) : null, transitionDelegate: transitionDelegate ?? this.transitionDelegate, beamBackOnPop: beamBackOnPop, popBeamStackOnPop: popBeamStackOnPop, @@ -635,8 +639,7 @@ class BeamerDelegate extends RouterDelegate beamingHistory.removeLast(); continue; } else { - beamingHistory.last.history - .removeRange(index, beamingHistory.last.history.length); + beamingHistory.last.history.removeRange(index, beamingHistory.last.history.length); break; } } @@ -741,8 +744,7 @@ class BeamerDelegate extends RouterDelegate @override RouteInformation? get currentConfiguration { - final response = - _parent == null && _initialConfigurationReady ? configuration : null; + final response = _parent == null && _initialConfigurationReady ? configuration : null; if (response != null) { _lastReportedRouteInformation = response.copyWith(); } @@ -758,7 +760,7 @@ class BeamerDelegate extends RouterDelegate _context = context; if (!_didRunGuards) { - _runGuards(_context!, _beamStackCandidate); + _runGuards(context, _beamStackCandidate); _addToBeamingHistory(_beamStackCandidate); } if (!_initialConfigurationReady && active && parent != null) { @@ -783,8 +785,7 @@ class BeamerDelegate extends RouterDelegate return Navigator( key: navigatorKey, observers: navigatorObservers, - transitionDelegate: currentBeamStack.transitionDelegate ?? - _currentBeamParameters.transitionDelegate, + transitionDelegate: currentBeamStack.transitionDelegate ?? _currentBeamParameters.transitionDelegate, pages: _currentPages, onPopPage: (route, result) => _onPopPage(context, route, result), ); @@ -848,7 +849,8 @@ class BeamerDelegate extends RouterDelegate } bool _runGuards(BuildContext context, BeamStack targetBeamStack) { - final allGuards = (parent?.guards ?? []) + guards + targetBeamStack.guards; + final allGuards = [...?parent?.guards, ...guards, ...targetBeamStack.guards]; + for (final guard in allGuards) { if (guard.shouldGuard(targetBeamStack)) { final wasApplied = guard.apply( @@ -869,6 +871,29 @@ class BeamerDelegate extends RouterDelegate return false; } + bool _isIntercepted(BuildContext context, BeamStack targetBeamStack) { + final allInterceptors = [...?parent?.interceptors, ...interceptors]; + + for (var i = 0; i < allInterceptors.length; i++) { + final interceptor = allInterceptors[i]; + final isIntercepted = interceptor.enabled && + interceptor.intercept( + context, + this, + _currentPages, + currentBeamStack, + targetBeamStack, + _deepLink, + ); + + // If any interceptor was intercepted, return true + if (isIntercepted) { + return true; + } + } + return false; + } + void _initBeamStack(BeamStack beamStack) { beamStack.initState(); beamStack.onUpdate(); @@ -883,8 +908,7 @@ class BeamerDelegate extends RouterDelegate void _addToBeamingHistory(BeamStack beamStack) { _disposeBeamStack(currentBeamStack); if (removeDuplicateHistory) { - final index = beamingHistory.indexWhere( - (historyStack) => historyStack.runtimeType == beamStack.runtimeType); + final index = beamingHistory.indexWhere((historyStack) => historyStack.runtimeType == beamStack.runtimeType); if (index != -1) { _disposeBeamStack(beamingHistory[index]); beamingHistory.removeAt(index); @@ -895,8 +919,7 @@ class BeamerDelegate extends RouterDelegate } void _updateBeamingHistory(BeamStack beamStack) { - if (beamingHistory.isEmpty || - beamStack.runtimeType != beamingHistory.last.runtimeType) { + if (beamingHistory.isEmpty || beamStack.runtimeType != beamingHistory.last.runtimeType) { _addToBeamingHistory(beamStack); } else { beamingHistory.last.update( @@ -980,16 +1003,13 @@ class BeamerDelegate extends RouterDelegate if (currentBeamStack is NotFound) { _currentPages = [notFoundPage]; } else { - _currentPages = _currentBeamParameters.stacked - ? currentBeamStack.buildPages(context, currentBeamStack.state) - : [currentBeamStack.buildPages(context, currentBeamStack.state).last]; + _currentPages = _currentBeamParameters.stacked ? currentBeamStack.buildPages(context, currentBeamStack.state) : [currentBeamStack.buildPages(context, currentBeamStack.state).last]; } } void _setBrowserTitle(BuildContext context) { if (active && setBrowserTabTitle) { - final String title = _currentPages.last.title ?? - currentBeamStack.state.routeInformation.uri.path; + final String title = _currentPages.last.title ?? currentBeamStack.state.routeInformation.uri.path; browser_tab_title_util.setTabTitle(title); } } @@ -1046,14 +1066,12 @@ class BeamerDelegate extends RouterDelegate void _initializeChild() { final parentConfiguration = _parent!.configuration.copyWith(); if (initializeFromParent) { - _beamStackCandidate = - stackBuilder(parentConfiguration, _currentBeamParameters); + _beamStackCandidate = stackBuilder(parentConfiguration, _currentBeamParameters); } // If this couldn't handle parents configuration, // it will update itself to initialPath and declare itself inactive. - if (_beamStackCandidate is EmptyBeamStack || - _beamStackCandidate is NotFound) { + if (_beamStackCandidate is EmptyBeamStack || _beamStackCandidate is NotFound) { update( configuration: RouteInformation(uri: Uri.parse(initialPath)), rebuild: false, @@ -1072,6 +1090,20 @@ class BeamerDelegate extends RouterDelegate } } + FutureOr addInterceptor(BeamInterceptor interceptor) async { + if (interceptors.contains(interceptor)) return; + + interceptors.add(interceptor); + } + + FutureOr removeInterceptor(BeamInterceptor interceptor) async { + if (interceptors.contains(interceptor) == false) return; + + interceptors.remove(interceptor); + } + + void removeAllInterceptors() => interceptors.clear(); + void _update() => update(); // Updates only if it can handle the configuration diff --git a/package/lib/src/beamer_provider.dart b/package/lib/src/beamer_provider.dart index f4d97fe..2ec9b1e 100644 --- a/package/lib/src/beamer_provider.dart +++ b/package/lib/src/beamer_provider.dart @@ -39,8 +39,7 @@ class BeamerProvider extends InheritedWidget { /// Obtain the nearest [BeamerProvider]. /// /// See [BuildContext.dependOnInheritedWidgetOfExactType]. - static BeamerProvider? of(BuildContext context) => - context.dependOnInheritedWidgetOfExactType(); + static BeamerProvider? of(BuildContext context) => context.dependOnInheritedWidgetOfExactType(); @override bool updateShouldNotify(covariant InheritedWidget oldWidget) => false; diff --git a/package/lib/src/utils.dart b/package/lib/src/utils.dart index 73a83a6..014a73f 100644 --- a/package/lib/src/utils.dart +++ b/package/lib/src/utils.dart @@ -19,7 +19,7 @@ abstract class Utils { BeamParameters? beamParameters, }) { for (final beamStack in beamStacks) { - if (canBeamStackHandleUri(beamStack, uri)) { + if (beamStack.canHandle(uri)) { final routeInformation = RouteInformation(uri: uri, state: routeState); if (!beamStack.isCurrent) { beamStack.create(routeInformation, beamParameters); @@ -32,167 +32,81 @@ abstract class Utils { return NotFound(path: uri.path); } - /// Can a [beamStack], depending on its `pathPatterns`, handle the [uri]. + /// Creates a state for [BeamStack] based on incoming [uri]. /// - /// Used in [BeamStack.canHandle] and [chooseBeamStack]. - static bool canBeamStackHandleUri(BeamStack beamStack, Uri uri) { - for (final pathPattern in beamStack.pathPatterns) { - if (pathPattern is String) { - // If it is an exact match or asterisk pattern - if (pathPattern == uri.path || - pathPattern == '/*' || - pathPattern == '*') { - return true; - } + /// Used in [BeamState.copyForStack]. + static BeamState createBeamState( + Uri uri, { + BeamStack? beamStack, + Object? routeState, + }) { + final pathParameters = {}; - // Clean URI path segments - final uriPathSegments = uri.pathSegments.toList(); - if (uriPathSegments.length > 1 && uriPathSegments.last == '') { - uriPathSegments.removeLast(); - } + for (final pathPattern in [...?beamStack?.pathPatterns]) { + if (pathPattern is! String) { + final pathPatternRegex = pathPattern.toRegExp; + final url = uri.toString(); - final pathPatternSegments = Uri.parse(pathPattern).pathSegments; + if (pathPatternRegex.hasMatch(url)) { + final matches = pathPatternRegex.allMatches(url); - // If we're in strict mode and URI has fewer segments than pattern, - // we don't have a match so can continue. - if (beamStack.strictPathPatterns && - uriPathSegments.length < pathPatternSegments.length) { - continue; + for (final match in matches) { + for (final groupName in match.groupNames) { + pathParameters[groupName] = match.namedGroup(groupName) ?? ''; + } + } } - - // If URI has more segments and pattern doesn't end with asterisk, - // we don't have a match so can continue. - if (uriPathSegments.length > pathPatternSegments.length && - (pathPatternSegments.isEmpty || - !pathPatternSegments.last.endsWith('*'))) { - continue; + } else { + if (pathPattern == uri.path || pathPattern == '/*') { + return BeamState( + pathPatternSegments: uri.pathSegments, + queryParameters: uri.queryParameters, + routeState: routeState, + ); } + final uriPathSegments = uri.pathSegments.toList(); + if (uriPathSegments.length > 1 && uriPathSegments.last == '') uriPathSegments.removeLast(); + + final beamStackPathBlueprintSegments = Uri.parse(pathPattern).pathSegments; + var pathSegments = []; + + if (uriPathSegments.length > beamStackPathBlueprintSegments.length && !beamStackPathBlueprintSegments.contains('*')) continue; + var checksPassed = true; - // Iterating through URI segments + for (var i = 0; i < uriPathSegments.length; i++) { - // If all checks have passed up to i, - // if pattern has no more segments to traverse and it ended with asterisk, - // it is a match and we can break, - if (pathPatternSegments.length < i + 1 && - pathPatternSegments.last.endsWith('*')) { + if (beamStackPathBlueprintSegments[i] == '*') { + pathSegments = uriPathSegments.toList(); checksPassed = true; break; } - // If pattern has asterisk at i-th position, - // anything matches and we can continue. - if (pathPatternSegments[i] == '*') { - continue; - } - // If they are not the same and pattern doesn't expects path parameter, - // there's no match and we can break. - if (uriPathSegments[i] != pathPatternSegments[i] && - !pathPatternSegments[i].startsWith(':')) { + if (uriPathSegments[i] != beamStackPathBlueprintSegments[i] && beamStackPathBlueprintSegments[i][0] != ':') { checksPassed = false; break; + } else if (beamStackPathBlueprintSegments[i][0] == ':') { + pathParameters[beamStackPathBlueprintSegments[i].substring(1)] = uriPathSegments[i]; + pathSegments.add(beamStackPathBlueprintSegments[i]); + } else { + pathSegments.add(uriPathSegments[i]); } } - // If no check failed, beamStack can handle this URI. if (checksPassed) { - return true; - } - } else { - final regexp = tryCastToRegExp(pathPattern); - final result = regexp.hasMatch(uri.toString()); - - if (result) { - return true; - } else { - continue; + return BeamState( + pathPatternSegments: pathSegments, + pathParameters: pathParameters, + queryParameters: uri.queryParameters, + routeState: routeState, + ); } } } - return false; - } - - /// Creates a state for [BeamStack] based on incoming [uri]. - /// - /// Used in [BeamState.copyForStack]. - static BeamState createBeamState( - Uri uri, { - BeamStack? beamStack, - Object? routeState, - }) { - if (beamStack != null) { - // TODO: abstract this and reuse in canBeamStackHandleUri - for (final pathBlueprint in beamStack.pathPatterns) { - if (pathBlueprint is String) { - if (pathBlueprint == uri.path || pathBlueprint == '/*') { - BeamState( - pathPatternSegments: uri.pathSegments, - queryParameters: uri.queryParameters, - routeState: routeState, - ); - } - final uriPathSegments = uri.pathSegments.toList(); - if (uriPathSegments.length > 1 && uriPathSegments.last == '') { - uriPathSegments.removeLast(); - } - final beamStackPathBlueprintSegments = - Uri.parse(pathBlueprint).pathSegments; - var pathSegments = []; - final pathParameters = {}; - if (uriPathSegments.length > beamStackPathBlueprintSegments.length && - !beamStackPathBlueprintSegments.contains('*')) { - continue; - } - var checksPassed = true; - for (var i = 0; i < uriPathSegments.length; i++) { - if (beamStackPathBlueprintSegments[i] == '*') { - pathSegments = uriPathSegments.toList(); - checksPassed = true; - break; - } - if (uriPathSegments[i] != beamStackPathBlueprintSegments[i] && - beamStackPathBlueprintSegments[i][0] != ':') { - checksPassed = false; - break; - } else if (beamStackPathBlueprintSegments[i][0] == ':') { - pathParameters[beamStackPathBlueprintSegments[i].substring(1)] = - uriPathSegments[i]; - pathSegments.add(beamStackPathBlueprintSegments[i]); - } else { - pathSegments.add(uriPathSegments[i]); - } - } - if (checksPassed) { - return BeamState( - pathPatternSegments: pathSegments, - pathParameters: pathParameters, - queryParameters: uri.queryParameters, - routeState: routeState, - ); - } - } else { - final regexp = tryCastToRegExp(pathBlueprint); - final pathParameters = {}; - final url = uri.toString(); - if (regexp.hasMatch(url)) { - regexp.allMatches(url).forEach((match) { - for (final groupName in match.groupNames) { - pathParameters[groupName] = match.namedGroup(groupName) ?? ''; - } - }); - return BeamState( - pathPatternSegments: uri.pathSegments, - pathParameters: pathParameters, - queryParameters: uri.queryParameters, - routeState: routeState, - ); - } - } - } - } return BeamState( pathPatternSegments: uri.pathSegments, queryParameters: uri.queryParameters, + pathParameters: pathParameters, routeState: routeState, ); } @@ -216,26 +130,11 @@ abstract class Utils { } return true; } else { - final regExpPattern = tryCastToRegExp(pattern); + final regExpPattern = pattern.toRegExp; return regExpPattern.hasMatch(exact.toString()); } } - /// Wraps the casting of pathBlueprint to RegExp inside a try-catch - /// and throws a nice FlutterError. - static RegExp tryCastToRegExp(Pattern pathBlueprint) { - try { - return pathBlueprint as RegExp; - } on TypeError catch (_) { - throw FlutterError.fromParts([ - DiagnosticsNode.message('Path blueprint can either be:', - level: DiagnosticLevel.summary), - DiagnosticsNode.message('1. String'), - DiagnosticsNode.message('2. RegExp instance') - ]); - } - } - /// Removes the trailing / in an URI path and returns the new URI. /// /// If there is no trailing /, returns the input URI. @@ -251,8 +150,7 @@ abstract class Utils { /// Else, return incoming URI. static Uri maybeAppend(Uri current, Uri incoming) { if (!incoming.hasAbsolutePath && !incoming.hasEmptyPath) { - String currentPath = - current.path.endsWith('/') ? current.path : '${current.path}/'; + String currentPath = current.path.endsWith('/') ? current.path : '${current.path}/'; return current.replace( path: currentPath + incoming.path, query: incoming.hasQuery ? incoming.query : null, @@ -311,3 +209,16 @@ extension BeamerRouteInformationExtension on RouteInformation { return uri == other.uri && state == other.state; } } + +/// Some convenient extension methods on [Pattern]. +extension PatternExtension on Pattern { + /// Wraps the casting of this pattern to RegExp inside a try-catch + /// and throws a nice FlutterError. + RegExp get toRegExp { + try { + return this as RegExp; + } on TypeError catch (_) { + throw FlutterError.fromParts([DiagnosticsNode.message('Path blueprint can either be:', level: DiagnosticLevel.summary), DiagnosticsNode.message('1. String'), DiagnosticsNode.message('2. RegExp instance')]); + } + } +} diff --git a/package/test/beamer_delegate_test.dart b/package/test/beamer_delegate_test.dart index 9b74360..4b5faa0 100644 --- a/package/test/beamer_delegate_test.dart +++ b/package/test/beamer_delegate_test.dart @@ -64,8 +64,7 @@ void main() { expect(stack.data, {'x': 'y'}); }); - test('popBeamStack leads to previous stack and all helpers are correct', - () { + test('popBeamStack leads to previous stack and all helpers are correct', () { delegate.beamToNamed('/l1'); delegate.beamToNamed('/l2'); @@ -79,8 +78,7 @@ void main() { }); }); - testWidgets('stacked beam takes just last page for currentPages', - (tester) async { + testWidgets('stacked beam takes just last page for currentPages', (tester) async { await tester.pumpWidget( MaterialApp.router( routeInformationParser: BeamerParser(), @@ -111,12 +109,9 @@ void main() { test('custom state can be updated', () { delegate.beamToNamed('/custom/test'); - expect((delegate.currentBeamStack as CustomStateStack).state.customVar, - 'test'); - (delegate.currentBeamStack as CustomStateStack) - .update((state) => CustomState(customVar: 'test-ok')); - expect((delegate.currentBeamStack as CustomStateStack).state.customVar, - 'test-ok'); + expect((delegate.currentBeamStack as CustomStateStack).state.customVar, 'test'); + (delegate.currentBeamStack as CustomStateStack).update((state) => CustomState(customVar: 'test-ok')); + expect((delegate.currentBeamStack as CustomStateStack).state.customVar, 'test-ok'); }); test('beamTo works without setting the BeamState explicitly', () { @@ -180,24 +175,21 @@ void main() { delegate.beamToNamed('/l2'); expect(delegate.beamBack(), true); - expect(delegate.configuration.uri, - delegate.currentBeamStack.state.routeInformation.uri); + expect(delegate.configuration.uri, delegate.currentBeamStack.state.routeInformation.uri); expect(delegate.configuration.uri.path, '/l1'); expect(delegate.currentBeamStack.data, {'x': 'y'}); delegate.beamToNamed('/l2'); expect(delegate.beamBack(), true); - expect(delegate.configuration.uri, - delegate.currentBeamStack.state.routeInformation.uri); + expect(delegate.configuration.uri, delegate.currentBeamStack.state.routeInformation.uri); expect(delegate.configuration.uri.path, '/l1'); expect(delegate.currentBeamStack.data, {'x': 'y'}); delegate.beamToNamed('/l2'); expect(delegate.beamBack(data: {'xx': 'yy'}), true); - expect(delegate.configuration.uri, - delegate.currentBeamStack.state.routeInformation.uri); + expect(delegate.configuration.uri, delegate.currentBeamStack.state.routeInformation.uri); expect(delegate.configuration.uri.path, '/l1'); expect(delegate.currentBeamStack.data, {'xx': 'yy'}); }); @@ -315,8 +307,7 @@ void main() { ); delegate.beamToNamed('/l1/one', data: {'x': 'y'}); await tester.pump(); - expect( - (delegate.currentBeamStack.state as BeamState).uri.path, '/l1/one'); + expect((delegate.currentBeamStack.state as BeamState).uri.path, '/l1/one'); expect(delegate.currentBeamStack.data, {'x': 'y'}); delegate.navigatorKey.currentState!.pop(); @@ -400,8 +391,7 @@ void main() { expect(childDelegate.beamingHistory.last.history.length, 3); }); - testWidgets("navigation on parent doesn't update nested Beamer", - (tester) async { + testWidgets("navigation on parent doesn't update nested Beamer", (tester) async { final childDelegate = BeamerDelegate( initializeFromParent: false, updateFromParent: false, @@ -448,8 +438,7 @@ void main() { }); group('update without rebuild', () { - test('no rebuild updates route information (configuration) to anything', - () { + test('no rebuild updates route information (configuration) to anything', () { final delegate = BeamerDelegate( stackBuilder: RoutesStackBuilder( routes: { @@ -474,9 +463,7 @@ void main() { expect(delegate.configuration.uri.path, '/any'); }); - testWidgets( - 'updating route information without updating parent or rebuilding', - (tester) async { + testWidgets('updating route information without updating parent or rebuilding', (tester) async { final childDelegate = BeamerDelegate( updateParent: false, stackBuilder: RoutesStackBuilder( @@ -592,8 +579,7 @@ void main() { expect(delegate.beamingHistory.last.history.length, 1); }); - testWidgets('history is cleared regardless, if option is set', - (tester) async { + testWidgets('history is cleared regardless, if option is set', (tester) async { final delegate = BeamerDelegate( clearBeamingHistoryOn: {'/'}, stackBuilder: RoutesStackBuilder( @@ -637,8 +623,7 @@ void main() { expect(delegate.beamingHistory.last.history.length, 1); }); - testWidgets('history is cleared regardless, if option is set', - (tester) async { + testWidgets('history is cleared regardless, if option is set', (tester) async { final delegate = BeamerDelegate( clearBeamingHistoryOn: {'/test'}, stackBuilder: RoutesStackBuilder( @@ -716,8 +701,7 @@ void main() { }); group('Relative beaming', () { - test('incoming configuration is appended when it does not start with /', - () { + test('incoming configuration is appended when it does not start with /', () { final delegate = BeamerDelegate( stackBuilder: RoutesStackBuilder( routes: { @@ -734,8 +718,7 @@ void main() { delegate.beamToNamed('t2'); expect(delegate.configuration.uri.path, '/t1/t2'); - expect( - delegate.currentBeamStack.state.routeInformation.uri.path, '/t1/t2'); + expect(delegate.currentBeamStack.state.routeInformation.uri.path, '/t1/t2'); }); }); @@ -755,15 +738,11 @@ void main() { delegate.beamToNamed('/t3'); delegate.popToNamed('/t2'); - expect( - delegate.currentBeamStack.history - .map((HistoryElement e) => e.routeInformation.uri.path), - orderedEquals(['/t1', '/t2'])); + expect(delegate.currentBeamStack.history.map((HistoryElement e) => e.routeInformation.uri.path), orderedEquals(['/t1', '/t2'])); }); group('Deep Link', () { - testWidgets('Deep link is preserved throughout guarding flow', - (tester) async { + testWidgets('Deep link is preserved throughout guarding flow', (tester) async { var isLoading = true; var isAuthenticated = false; final delegate = BeamerDelegate( @@ -779,21 +758,18 @@ void main() { BeamGuard( pathPatterns: ['/splash'], check: (_, __) => isLoading, - beamToNamed: (context, _, __, deepLink) => - isAuthenticated ? (deepLink ?? '/home') : '/login', + beamToNamed: (context, _, __, deepLink) => isAuthenticated ? (deepLink ?? '/home') : '/login', ), BeamGuard( pathPatterns: ['/login'], check: (_, __) => !isAuthenticated && !isLoading, - beamToNamed: (context, _, __, deepLink) => - isAuthenticated ? (deepLink ?? '/home') : '/splash', + beamToNamed: (context, _, __, deepLink) => isAuthenticated ? (deepLink ?? '/home') : '/splash', ), BeamGuard( pathPatterns: ['/splash', '/login'], guardNonMatching: true, check: (_, __) => isAuthenticated, - beamToNamed: (context, _, __, ___) => - isLoading ? '/splash' : '/login', + beamToNamed: (context, _, __, ___) => isLoading ? '/splash' : '/login', ), ], ); diff --git a/package/test/beaming_history_test.dart b/package/test/beaming_history_test.dart index 67fc020..a9d8d1f 100644 --- a/package/test/beaming_history_test.dart +++ b/package/test/beaming_history_test.dart @@ -1,6 +1,7 @@ import 'package:beamer/beamer.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; + import 'test_stacks.dart'; class StackA extends BeamStack { @@ -8,8 +9,7 @@ class StackA extends BeamStack { List get pathPatterns => ['/a']; @override - List buildPages(BuildContext context, BeamState state) => - [BeamPage(key: const ValueKey('a'), child: Container())]; + List buildPages(BuildContext context, BeamState state) => [BeamPage(key: const ValueKey('a'), child: Container())]; } class StackB extends BeamStack { @@ -18,10 +18,8 @@ class StackB extends BeamStack { @override List buildPages(BuildContext context, BeamState state) => [ - if (state.pathPatternSegments.contains('b1')) - BeamPage(key: const ValueKey('b1'), child: Container()), - if (state.pathPatternSegments.contains('b2')) - BeamPage(key: const ValueKey('b2'), child: Container()), + if (state.pathPatternSegments.contains('b1')) BeamPage(key: const ValueKey('b1'), child: Container()), + if (state.pathPatternSegments.contains('b2')) BeamPage(key: const ValueKey('b2'), child: Container()), ]; } @@ -70,9 +68,7 @@ void main() { expect(delegate.beamingHistory[0], isA()); }); - test( - 'beamToReplacement removes currentBeamStack from history before appending new', - () { + test('beamToReplacement removes currentBeamStack from history before appending new', () { delegate.beamToNamed('/l2'); delegate.beamToNamed('/l1'); @@ -112,14 +108,11 @@ void main() { expect(delegate.beamingHistory[0], isA()); expect(delegate.currentBeamStack, isA()); expect(delegate.beamingHistory.last.history.length, 2); - expect( - delegate.beamingHistory.last.history.last.routeInformation.uri.path, - '/l2/y'); + expect(delegate.beamingHistory.last.history.last.routeInformation.uri.path, '/l2/y'); expect(delegate.beamingHistoryCompleteLength, 3); }); - test('beamBack leads to previous beam state and all helpers are correct', - () { + test('beamBack leads to previous beam state and all helpers are correct', () { delegate.beamToNamed('/l1'); delegate.beamToNamed('/l2'); @@ -138,8 +131,7 @@ void main() { expect(delegate.beamBack(), true); expect(delegate.currentBeamStack, isA()); - expect((delegate.currentBeamStack.state as BeamState).uri.path, - equals('/l1/one')); + expect((delegate.currentBeamStack.state as BeamState).uri.path, equals('/l1/one')); expect(delegate.beamingHistoryCompleteLength, 2); expect(delegate.beamBack(), true); diff --git a/package/test/utils_test.dart b/package/test/utils_test.dart index 9ead37f..2377733 100644 --- a/package/test/utils_test.dart +++ b/package/test/utils_test.dart @@ -119,7 +119,7 @@ void main() { test('tryCastToRegExp throws', () { expect( - () => Utils.tryCastToRegExp('not-regexp'), + () => 'not-regexp'.toRegExp, throwsA(isA()), ); }); @@ -204,21 +204,15 @@ void main() { test('Merging with new routeState', () { final current = RouteInformation(uri: Uri.parse('/current')); expect( - Utils.mergeConfiguration( - current, RouteInformation(uri: Uri(), state: 42)) - .state, + Utils.mergeConfiguration(current, RouteInformation(uri: Uri(), state: 42)).state, 42, ); expect( - Utils.mergeConfiguration(current, - RouteInformation(uri: Uri.parse('incoming'), state: 42)) - .state, + Utils.mergeConfiguration(current, RouteInformation(uri: Uri.parse('incoming'), state: 42)).state, 42, ); expect( - Utils.mergeConfiguration(current, - RouteInformation(uri: Uri.parse('/incoming'), state: 42)) - .state, + Utils.mergeConfiguration(current, RouteInformation(uri: Uri.parse('/incoming'), state: 42)).state, 42, ); expect( From 040addc419b84e5bd22e357ed77a8e7924e1250e Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Sun, 4 Aug 2024 18:10:45 +0200 Subject: [PATCH 05/10] Fixed linter issue --- package/lib/src/beam_stack.dart | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/package/lib/src/beam_stack.dart b/package/lib/src/beam_stack.dart index f1d0932..65bda08 100644 --- a/package/lib/src/beam_stack.dart +++ b/package/lib/src/beam_stack.dart @@ -372,10 +372,11 @@ abstract class BeamStack extends ChangeN final regex = pathPattern.toRegExp; final hasMatch = regex.hasMatch(uri.toString()); - if (hasMatch) + if (hasMatch) { return true; - else + } else { continue; + } } } return false; @@ -396,10 +397,11 @@ abstract class BeamStack extends ChangeN final regex = guardPathPattern.toRegExp; final hasMatch = regex.hasMatch(path); - if (hasMatch) + if (hasMatch) { return true; - else + } else { continue; + } } final asteriskIndex = guardPathPattern.indexOf('*'); From b44ba94091063a52bd080ad0819efc2aceb0dea6 Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Tue, 6 Aug 2024 09:17:42 +0200 Subject: [PATCH 06/10] Ran 'dart format package/lib' --- package/lib/src/beam_stack.dart | 2 +- package/lib/src/transition_delegates.dart | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package/lib/src/beam_stack.dart b/package/lib/src/beam_stack.dart index a6eb0b7..b94bdd5 100644 --- a/package/lib/src/beam_stack.dart +++ b/package/lib/src/beam_stack.dart @@ -360,7 +360,7 @@ abstract class BeamStack /// If this is false (default), then a path pattern '/some/path' will match /// '/' and '/some' and '/some/path'. /// If this is true, then it will match just '/some/path'. - /// + /// /// __This only applies if the pattern is of type STRING, not REGEXP__ bool get strictPathPatterns => false; diff --git a/package/lib/src/transition_delegates.dart b/package/lib/src/transition_delegates.dart index fefd162..88fa8dd 100644 --- a/package/lib/src/transition_delegates.dart +++ b/package/lib/src/transition_delegates.dart @@ -29,7 +29,8 @@ class NoAnimationTransitionDelegate extends TransitionDelegate { final pagelessRoutes = pageRouteToPagelessRoutes[exitingPageRoute]; if (pagelessRoutes != null) { for (final pagelessRoute in pagelessRoutes) { - if (pagelessRoute.isWaitingForExitingDecision) pagelessRoute.markForRemove(); + if (pagelessRoute.isWaitingForExitingDecision) + pagelessRoute.markForRemove(); } } } From 80617d0627f02b2c82d92b0281d2efbeb685aa45 Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Tue, 6 Aug 2024 09:28:20 +0200 Subject: [PATCH 07/10] Formatted files nad dart fixed analyze errors --- package/lib/src/beam_guard.dart | 9 ++- .../lib/src/beam_interceptor_pop_scope.dart | 3 +- package/lib/src/beam_page.dart | 48 ++++++++++---- package/lib/src/beam_stack.dart | 43 ++++++++---- package/lib/src/beamer.dart | 12 ++-- package/lib/src/beamer_delegate.dart | 59 ++++++++++++----- package/lib/src/beamer_provider.dart | 3 +- package/lib/src/transition_delegates.dart | 3 +- package/lib/src/utils.dart | 26 ++++++-- package/test/beamer_delegate_test.dart | 66 +++++++++++++------ package/test/beaming_history_test.dart | 23 +++++-- package/test/utils_test.dart | 12 +++- 12 files changed, 215 insertions(+), 92 deletions(-) diff --git a/package/lib/src/beam_guard.dart b/package/lib/src/beam_guard.dart index c910fac..67facb7 100644 --- a/package/lib/src/beam_guard.dart +++ b/package/lib/src/beam_guard.dart @@ -122,7 +122,8 @@ class BeamGuard { onCheckFailed?.call(context, target); if (showPage != null) { - final redirectBeamStack = GuardShowPage(target.state.routeInformation, showPage!); + final redirectBeamStack = + GuardShowPage(target.state.routeInformation, showPage!); if (replaceCurrentStack) { delegate.beamToReplacement(redirectBeamStack); } else { @@ -140,11 +141,13 @@ class BeamGuard { if (beamTo != null) { final redirectBeamStack = beamTo!(context, origin, target, deepLink); - if (redirectBeamStack.state.routeInformation.uri == target.state.routeInformation.uri) { + if (redirectBeamStack.state.routeInformation.uri == + target.state.routeInformation.uri) { // just block if this will produce an immediate infinite loop return true; } - if (redirectBeamStack.state.routeInformation.uri == origin.state.routeInformation.uri) { + if (redirectBeamStack.state.routeInformation.uri == + origin.state.routeInformation.uri) { // just block if redirect is the current route return true; } diff --git a/package/lib/src/beam_interceptor_pop_scope.dart b/package/lib/src/beam_interceptor_pop_scope.dart index f58a3f9..2965948 100644 --- a/package/lib/src/beam_interceptor_pop_scope.dart +++ b/package/lib/src/beam_interceptor_pop_scope.dart @@ -37,7 +37,8 @@ class BeamInterceptorPopScope extends StatefulWidget { final BeamerDelegate? beamerDelegate; @override - State createState() => _BeamInterceptorPopScopeState(); + State createState() => + _BeamInterceptorPopScopeState(); } class _BeamInterceptorPopScopeState extends State { diff --git a/package/lib/src/beam_page.dart b/package/lib/src/beam_page.dart index df2213a..9e5581b 100644 --- a/package/lib/src/beam_page.dart +++ b/package/lib/src/beam_page.dart @@ -85,11 +85,15 @@ class BeamPage extends Page { // Take the history element that is being popped and the one before // as they will be compared later on to fine-tune the pop experience. final poppedHistoryElement = delegate.removeLastHistoryElement()!; - final previousHistoryElement = delegate.beamingHistory.isNotEmpty ? delegate.beamingHistory.last.history.last : null; + final previousHistoryElement = delegate.beamingHistory.isNotEmpty + ? delegate.beamingHistory.last.history.last + : null; // Convert both to Uri as their path and query will be compared. final poppedUri = poppedHistoryElement.routeInformation.uri; - final previousUri = previousHistoryElement != null ? previousHistoryElement.routeInformation.uri : Uri.parse(delegate.initialPath); + final previousUri = previousHistoryElement != null + ? previousHistoryElement.routeInformation.uri + : Uri.parse(delegate.initialPath); final poppedPathSegments = poppedUri.pathSegments; final poppedQueryParameters = poppedUri.queryParameters; @@ -120,7 +124,8 @@ class BeamPage extends Page { // Otherwise, find the route information with popPath in history. RouteInformation? lastRouteInformation; if (popPath == previousUri.path) { - lastRouteInformation = delegate.removeLastHistoryElement()?.routeInformation; + lastRouteInformation = + delegate.removeLastHistoryElement()?.routeInformation; } else { // find the last var found = false; @@ -222,7 +227,8 @@ class BeamPage extends Page { /// `context` is the build context. /// `child` is the child of this [BeamPage] /// `settings` will be passed to [PageRoute] constructor. - final Route Function(BuildContext context, RouteSettings settings, Widget child)? routeBuilder; + final Route Function( + BuildContext context, RouteSettings settings, Widget child)? routeBuilder; /// Whether to present current [BeamPage] as a fullscreen dialog /// @@ -260,7 +266,8 @@ class BeamPage extends Page { settings: this, pageBuilder: (_, __, ___) => child, transitionDuration: transitionDuration ?? Duration(milliseconds: 300), - reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: + reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => FadeTransition( opacity: animation, child: child, @@ -273,9 +280,12 @@ class BeamPage extends Page { settings: this, pageBuilder: (_, __, ___) => child, transitionDuration: transitionDuration ?? Duration(milliseconds: 300), - reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: + reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive(Tween(begin: const Offset(0, 1), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), + position: animation.drive( + Tween(begin: const Offset(0, 1), end: const Offset(0, 0)) + .chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -286,9 +296,12 @@ class BeamPage extends Page { settings: this, pageBuilder: (_, __, ___) => child, transitionDuration: transitionDuration ?? Duration(milliseconds: 300), - reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: + reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive(Tween(begin: const Offset(1, 0), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), + position: animation.drive( + Tween(begin: const Offset(1, 0), end: const Offset(0, 0)) + .chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -299,9 +312,12 @@ class BeamPage extends Page { settings: this, pageBuilder: (_, __, ___) => child, transitionDuration: transitionDuration ?? Duration(milliseconds: 300), - reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: + reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive(Tween(begin: const Offset(-1, 0), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), + position: animation.drive( + Tween(begin: const Offset(-1, 0), end: const Offset(0, 0)) + .chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -312,9 +328,12 @@ class BeamPage extends Page { settings: this, pageBuilder: (_, __, ___) => child, transitionDuration: transitionDuration ?? Duration(milliseconds: 300), - reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: + reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => SlideTransition( - position: animation.drive(Tween(begin: const Offset(0, -1), end: const Offset(0, 0)).chain(CurveTween(curve: Curves.ease))), + position: animation.drive( + Tween(begin: const Offset(0, -1), end: const Offset(0, 0)) + .chain(CurveTween(curve: Curves.ease))), child: child, ), ); @@ -325,7 +344,8 @@ class BeamPage extends Page { settings: this, pageBuilder: (_, __, ___) => child, transitionDuration: transitionDuration ?? Duration(milliseconds: 300), - reverseTransitionDuration: reverseTransitionDuration ?? Duration(milliseconds: 300), + reverseTransitionDuration: + reverseTransitionDuration ?? Duration(milliseconds: 300), transitionsBuilder: (_, animation, __, child) => ScaleTransition( scale: animation, child: child, diff --git a/package/lib/src/beam_stack.dart b/package/lib/src/beam_stack.dart index 65bda08..acf60bb 100644 --- a/package/lib/src/beam_stack.dart +++ b/package/lib/src/beam_stack.dart @@ -45,7 +45,9 @@ class BeamParameters { }) { return BeamParameters( transitionDelegate: transitionDelegate ?? this.transitionDelegate, - popConfiguration: resetPopConfiguration ? null : popConfiguration ?? this.popConfiguration, + popConfiguration: resetPopConfiguration + ? null + : popConfiguration ?? this.popConfiguration, beamBackOnPop: beamBackOnPop ?? this.beamBackOnPop, popBeamStackOnPop: popBeamStackOnPop ?? this.popBeamStackOnPop, stacked: stacked ?? this.stacked, @@ -81,7 +83,8 @@ class HistoryElement { /// * keeping a [state] that provides the link between the first 2 /// /// Extend this class to define your stacks to which you can then beam to. -abstract class BeamStack extends ChangeNotifier { +abstract class BeamStack + extends ChangeNotifier { /// Creates a [BeamStack] with specified properties. /// /// All attributes can be null. @@ -166,7 +169,8 @@ abstract class BeamStack extends ChangeN /// One should override this if using a custom state class. /// /// See [create]. - T createState(RouteInformation routeInformation) => BeamState.fromRouteInformation( + T createState(RouteInformation routeInformation) => + BeamState.fromRouteInformation( routeInformation, beamStack: this, ) as T; @@ -279,7 +283,8 @@ abstract class BeamStack extends ChangeN history.removeRange(sameStateIndex, history.length); } } - if (history.isEmpty || routeInformation.uri != history.last.routeInformation.uri) { + if (history.isEmpty || + routeInformation.uri != history.last.routeInformation.uri) { history.add(HistoryElement(routeInformation, beamParameters)); } } @@ -317,7 +322,9 @@ abstract class BeamStack extends ChangeN for (final pathPattern in pathPatterns) { if (pathPattern is String) { // If it is an exact match or asterisk pattern - if (pathPattern == uri.path || pathPattern == '/*' || pathPattern == '*') { + if (pathPattern == uri.path || + pathPattern == '/*' || + pathPattern == '*') { return true; } @@ -331,13 +338,16 @@ abstract class BeamStack extends ChangeN // If we're in strict mode and URI has fewer segments than pattern, // we don't have a match so can continue. - if (strictPathPatterns && uriPathSegments.length < pathPatternSegments.length) { + if (strictPathPatterns && + uriPathSegments.length < pathPatternSegments.length) { continue; } // If URI has more segments and pattern doesn't end with asterisk, // we don't have a match so can continue. - if (uriPathSegments.length > pathPatternSegments.length && (pathPatternSegments.isEmpty || !pathPatternSegments.last.endsWith('*'))) { + if (uriPathSegments.length > pathPatternSegments.length && + (pathPatternSegments.isEmpty || + !pathPatternSegments.last.endsWith('*'))) { continue; } @@ -347,7 +357,8 @@ abstract class BeamStack extends ChangeN // If all checks have passed up to i, // if pattern has no more segments to traverse and it ended with asterisk, // it is a match and we can break, - if (pathPatternSegments.length < i + 1 && pathPatternSegments.last.endsWith('*')) { + if (pathPatternSegments.length < i + 1 && + pathPatternSegments.last.endsWith('*')) { checksPassed = true; break; } @@ -359,7 +370,8 @@ abstract class BeamStack extends ChangeN } // If they are not the same and pattern doesn't expects path parameter, // there's no match and we can break. - if (uriPathSegments[i] != pathPatternSegments[i] && !pathPatternSegments[i].startsWith(':')) { + if (uriPathSegments[i] != pathPatternSegments[i] && + !pathPatternSegments[i].startsWith(':')) { checksPassed = false; break; } @@ -408,7 +420,9 @@ abstract class BeamStack extends ChangeN if (asteriskIndex == -1) return guardPathPattern == path; - return uri.toString().contains(guardPathPattern.substring(0, asteriskIndex)); + return uri + .toString() + .contains(guardPathPattern.substring(0, asteriskIndex)); } return false; @@ -526,7 +540,8 @@ class GuardShowPage extends BeamStack { final BeamPage beamPage; @override - List buildPages(BuildContext context, BeamState state) => [beamPage]; + List buildPages(BuildContext context, BeamState state) => + [beamPage]; @override List get pathPatterns => [routeInformation.uri.path]; @@ -580,8 +595,10 @@ class RoutesBeamStack extends BeamStack { @override List buildPages(BuildContext context, BeamState state) { final filteredRoutes = chooseRoutes(state.routeInformation, routes.keys); - final routeBuilders = Map.of(routes)..removeWhere((key, value) => !filteredRoutes.containsKey(key)); - final sortedRoutes = routeBuilders.keys.toList()..sort((a, b) => _compareKeys(a, b)); + final routeBuilders = Map.of(routes) + ..removeWhere((key, value) => !filteredRoutes.containsKey(key)); + final sortedRoutes = routeBuilders.keys.toList() + ..sort((a, b) => _compareKeys(a, b)); final pages = sortedRoutes.map((route) { final routeElement = routes[route]!(context, state, data); if (routeElement is BeamPage) { diff --git a/package/lib/src/beamer.dart b/package/lib/src/beamer.dart index f8cd9a8..84d5ba6 100644 --- a/package/lib/src/beamer.dart +++ b/package/lib/src/beamer.dart @@ -1,5 +1,6 @@ import 'package:beamer/beamer.dart'; -import 'package:beamer/src/path_url_strategy_nonweb.dart' if (dart.library.html) 'path_url_strategy_web.dart' as url_strategy; +import 'package:beamer/src/path_url_strategy_nonweb.dart' + if (dart.library.html) 'path_url_strategy_web.dart' as url_strategy; import 'package:flutter/widgets.dart'; /// Represents a navigation area and is a wrapper for [Router]. @@ -40,7 +41,8 @@ class Beamer extends StatefulWidget { final delegate = Router.of(context).routerDelegate as BeamerDelegate; return root ? delegate.root : delegate; } catch (e) { - assert(BeamerProvider.of(context) != null, 'There was no Router nor BeamerProvider in current context. If using MaterialApp.builder, wrap the MaterialApp.router in BeamerProvider to which you pass the same routerDelegate as to MaterialApp.router.'); + assert(BeamerProvider.of(context) != null, + 'There was no Router nor BeamerProvider in current context. If using MaterialApp.builder, wrap the MaterialApp.router in BeamerProvider to which you pass the same routerDelegate as to MaterialApp.router.'); return BeamerProvider.of(context)!.routerDelegate; } } @@ -91,9 +93,11 @@ class BeamerState extends State { // The parent will only be null, if this state is disposed and therefore // `build` cannot be called on it any more. final backButtonDispatcher = widget.backButtonDispatcher ?? - ((parent!.backButtonDispatcher is BeamerBackButtonDispatcher && widget.createBackButtonDispatcher) + ((parent!.backButtonDispatcher is BeamerBackButtonDispatcher && + widget.createBackButtonDispatcher) ? BeamerChildBackButtonDispatcher( - parent: parent!.backButtonDispatcher! as BeamerBackButtonDispatcher, + parent: + parent!.backButtonDispatcher! as BeamerBackButtonDispatcher, delegate: routerDelegate, ) : null); diff --git a/package/lib/src/beamer_delegate.dart b/package/lib/src/beamer_delegate.dart index a3d777d..68fdb4f 100644 --- a/package/lib/src/beamer_delegate.dart +++ b/package/lib/src/beamer_delegate.dart @@ -1,7 +1,9 @@ import 'dart:async'; import 'package:beamer/beamer.dart'; -import 'package:beamer/src/browser_tab_title_util_non_web.dart' if (dart.library.html) 'package:beamer/src/browser_tab_title_util_web.dart' as browser_tab_title_util; +import 'package:beamer/src/browser_tab_title_util_non_web.dart' + if (dart.library.html) 'package:beamer/src/browser_tab_title_util_web.dart' + as browser_tab_title_util; import 'package:beamer/src/utils.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -10,7 +12,8 @@ import 'package:flutter/services.dart'; /// A delegate that is used by the [Router] to build the [Navigator]. /// /// This is "the beamer", the one that does the actual beaming. -class BeamerDelegate extends RouterDelegate with ChangeNotifier, PopNavigatorRouterDelegateMixin { +class BeamerDelegate extends RouterDelegate + with ChangeNotifier, PopNavigatorRouterDelegateMixin { /// Creates a [BeamerDelegate] with specified properties. /// /// [stackBuilder] is required to process the incoming navigation request. @@ -243,7 +246,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie /// Return `false` if beamer should finish handling the pop. /// /// See [build] for details on how beamer handles [Navigator.onPopPage]. - bool Function(BuildContext context, Route route, dynamic result)? onPopPage; + bool Function(BuildContext context, Route route, dynamic result)? + onPopPage; /// Whether the title attribute of [BeamPage] should /// be used to set and update the browser tab title. @@ -304,7 +308,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie /// Beamer.of(context).currentBeamStack /// ``` /// {@endtemplate} - BeamStack get currentBeamStack => beamingHistory.isEmpty ? EmptyBeamStack() : beamingHistory.last; + BeamStack get currentBeamStack => + beamingHistory.isEmpty ? EmptyBeamStack() : beamingHistory.last; List _currentPages = []; @@ -411,9 +416,13 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie rebuild = false; } - replaceRouteInformation ? SystemNavigator.selectSingleEntryHistory() : SystemNavigator.selectMultiEntryHistory(); + replaceRouteInformation + ? SystemNavigator.selectSingleEntryHistory() + : SystemNavigator.selectMultiEntryHistory(); - this.configuration = configuration != null ? Utils.createNewConfiguration(this.configuration, configuration) : currentBeamStack.state.routeInformation.copyWith(); + this.configuration = configuration != null + ? Utils.createNewConfiguration(this.configuration, configuration) + : currentBeamStack.state.routeInformation.copyWith(); // update beam parameters _currentBeamParameters = beamParameters ?? _currentBeamParameters; @@ -576,7 +585,9 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie update( configuration: RouteInformation(uri: Uri.parse(uri), state: routeState), beamParameters: _currentBeamParameters.copyWith( - popConfiguration: popToNamed != null ? RouteInformation(uri: Uri.parse(popToNamed)) : null, + popConfiguration: popToNamed != null + ? RouteInformation(uri: Uri.parse(popToNamed)) + : null, transitionDelegate: transitionDelegate ?? this.transitionDelegate, beamBackOnPop: beamBackOnPop, popBeamStackOnPop: popBeamStackOnPop, @@ -639,7 +650,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie beamingHistory.removeLast(); continue; } else { - beamingHistory.last.history.removeRange(index, beamingHistory.last.history.length); + beamingHistory.last.history + .removeRange(index, beamingHistory.last.history.length); break; } } @@ -744,7 +756,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie @override RouteInformation? get currentConfiguration { - final response = _parent == null && _initialConfigurationReady ? configuration : null; + final response = + _parent == null && _initialConfigurationReady ? configuration : null; if (response != null) { _lastReportedRouteInformation = response.copyWith(); } @@ -785,7 +798,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie return Navigator( key: navigatorKey, observers: navigatorObservers, - transitionDelegate: currentBeamStack.transitionDelegate ?? _currentBeamParameters.transitionDelegate, + transitionDelegate: currentBeamStack.transitionDelegate ?? + _currentBeamParameters.transitionDelegate, pages: _currentPages, onPopPage: (route, result) => _onPopPage(context, route, result), ); @@ -849,7 +863,11 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie } bool _runGuards(BuildContext context, BeamStack targetBeamStack) { - final allGuards = [...?parent?.guards, ...guards, ...targetBeamStack.guards]; + final allGuards = [ + ...?parent?.guards, + ...guards, + ...targetBeamStack.guards + ]; for (final guard in allGuards) { if (guard.shouldGuard(targetBeamStack)) { @@ -908,7 +926,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie void _addToBeamingHistory(BeamStack beamStack) { _disposeBeamStack(currentBeamStack); if (removeDuplicateHistory) { - final index = beamingHistory.indexWhere((historyStack) => historyStack.runtimeType == beamStack.runtimeType); + final index = beamingHistory.indexWhere( + (historyStack) => historyStack.runtimeType == beamStack.runtimeType); if (index != -1) { _disposeBeamStack(beamingHistory[index]); beamingHistory.removeAt(index); @@ -919,7 +938,8 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie } void _updateBeamingHistory(BeamStack beamStack) { - if (beamingHistory.isEmpty || beamStack.runtimeType != beamingHistory.last.runtimeType) { + if (beamingHistory.isEmpty || + beamStack.runtimeType != beamingHistory.last.runtimeType) { _addToBeamingHistory(beamStack); } else { beamingHistory.last.update( @@ -1003,13 +1023,16 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie if (currentBeamStack is NotFound) { _currentPages = [notFoundPage]; } else { - _currentPages = _currentBeamParameters.stacked ? currentBeamStack.buildPages(context, currentBeamStack.state) : [currentBeamStack.buildPages(context, currentBeamStack.state).last]; + _currentPages = _currentBeamParameters.stacked + ? currentBeamStack.buildPages(context, currentBeamStack.state) + : [currentBeamStack.buildPages(context, currentBeamStack.state).last]; } } void _setBrowserTitle(BuildContext context) { if (active && setBrowserTabTitle) { - final String title = _currentPages.last.title ?? currentBeamStack.state.routeInformation.uri.path; + final String title = _currentPages.last.title ?? + currentBeamStack.state.routeInformation.uri.path; browser_tab_title_util.setTabTitle(title); } } @@ -1066,12 +1089,14 @@ class BeamerDelegate extends RouterDelegate with ChangeNotifie void _initializeChild() { final parentConfiguration = _parent!.configuration.copyWith(); if (initializeFromParent) { - _beamStackCandidate = stackBuilder(parentConfiguration, _currentBeamParameters); + _beamStackCandidate = + stackBuilder(parentConfiguration, _currentBeamParameters); } // If this couldn't handle parents configuration, // it will update itself to initialPath and declare itself inactive. - if (_beamStackCandidate is EmptyBeamStack || _beamStackCandidate is NotFound) { + if (_beamStackCandidate is EmptyBeamStack || + _beamStackCandidate is NotFound) { update( configuration: RouteInformation(uri: Uri.parse(initialPath)), rebuild: false, diff --git a/package/lib/src/beamer_provider.dart b/package/lib/src/beamer_provider.dart index 2ec9b1e..f4d97fe 100644 --- a/package/lib/src/beamer_provider.dart +++ b/package/lib/src/beamer_provider.dart @@ -39,7 +39,8 @@ class BeamerProvider extends InheritedWidget { /// Obtain the nearest [BeamerProvider]. /// /// See [BuildContext.dependOnInheritedWidgetOfExactType]. - static BeamerProvider? of(BuildContext context) => context.dependOnInheritedWidgetOfExactType(); + static BeamerProvider? of(BuildContext context) => + context.dependOnInheritedWidgetOfExactType(); @override bool updateShouldNotify(covariant InheritedWidget oldWidget) => false; diff --git a/package/lib/src/transition_delegates.dart b/package/lib/src/transition_delegates.dart index 88fa8dd..ec9b193 100644 --- a/package/lib/src/transition_delegates.dart +++ b/package/lib/src/transition_delegates.dart @@ -29,8 +29,9 @@ class NoAnimationTransitionDelegate extends TransitionDelegate { final pagelessRoutes = pageRouteToPagelessRoutes[exitingPageRoute]; if (pagelessRoutes != null) { for (final pagelessRoute in pagelessRoutes) { - if (pagelessRoute.isWaitingForExitingDecision) + if (pagelessRoute.isWaitingForExitingDecision) { pagelessRoute.markForRemove(); + } } } } diff --git a/package/lib/src/utils.dart b/package/lib/src/utils.dart index 014a73f..454e0f0 100644 --- a/package/lib/src/utils.dart +++ b/package/lib/src/utils.dart @@ -66,12 +66,16 @@ abstract class Utils { } final uriPathSegments = uri.pathSegments.toList(); - if (uriPathSegments.length > 1 && uriPathSegments.last == '') uriPathSegments.removeLast(); + if (uriPathSegments.length > 1 && uriPathSegments.last == '') { + uriPathSegments.removeLast(); + } - final beamStackPathBlueprintSegments = Uri.parse(pathPattern).pathSegments; + final beamStackPathBlueprintSegments = + Uri.parse(pathPattern).pathSegments; var pathSegments = []; - if (uriPathSegments.length > beamStackPathBlueprintSegments.length && !beamStackPathBlueprintSegments.contains('*')) continue; + if (uriPathSegments.length > beamStackPathBlueprintSegments.length && + !beamStackPathBlueprintSegments.contains('*')) continue; var checksPassed = true; @@ -82,11 +86,13 @@ abstract class Utils { break; } - if (uriPathSegments[i] != beamStackPathBlueprintSegments[i] && beamStackPathBlueprintSegments[i][0] != ':') { + if (uriPathSegments[i] != beamStackPathBlueprintSegments[i] && + beamStackPathBlueprintSegments[i][0] != ':') { checksPassed = false; break; } else if (beamStackPathBlueprintSegments[i][0] == ':') { - pathParameters[beamStackPathBlueprintSegments[i].substring(1)] = uriPathSegments[i]; + pathParameters[beamStackPathBlueprintSegments[i].substring(1)] = + uriPathSegments[i]; pathSegments.add(beamStackPathBlueprintSegments[i]); } else { pathSegments.add(uriPathSegments[i]); @@ -150,7 +156,8 @@ abstract class Utils { /// Else, return incoming URI. static Uri maybeAppend(Uri current, Uri incoming) { if (!incoming.hasAbsolutePath && !incoming.hasEmptyPath) { - String currentPath = current.path.endsWith('/') ? current.path : '${current.path}/'; + String currentPath = + current.path.endsWith('/') ? current.path : '${current.path}/'; return current.replace( path: currentPath + incoming.path, query: incoming.hasQuery ? incoming.query : null, @@ -218,7 +225,12 @@ extension PatternExtension on Pattern { try { return this as RegExp; } on TypeError catch (_) { - throw FlutterError.fromParts([DiagnosticsNode.message('Path blueprint can either be:', level: DiagnosticLevel.summary), DiagnosticsNode.message('1. String'), DiagnosticsNode.message('2. RegExp instance')]); + throw FlutterError.fromParts([ + DiagnosticsNode.message('Path blueprint can either be:', + level: DiagnosticLevel.summary), + DiagnosticsNode.message('1. String'), + DiagnosticsNode.message('2. RegExp instance') + ]); } } } diff --git a/package/test/beamer_delegate_test.dart b/package/test/beamer_delegate_test.dart index 4b5faa0..9b74360 100644 --- a/package/test/beamer_delegate_test.dart +++ b/package/test/beamer_delegate_test.dart @@ -64,7 +64,8 @@ void main() { expect(stack.data, {'x': 'y'}); }); - test('popBeamStack leads to previous stack and all helpers are correct', () { + test('popBeamStack leads to previous stack and all helpers are correct', + () { delegate.beamToNamed('/l1'); delegate.beamToNamed('/l2'); @@ -78,7 +79,8 @@ void main() { }); }); - testWidgets('stacked beam takes just last page for currentPages', (tester) async { + testWidgets('stacked beam takes just last page for currentPages', + (tester) async { await tester.pumpWidget( MaterialApp.router( routeInformationParser: BeamerParser(), @@ -109,9 +111,12 @@ void main() { test('custom state can be updated', () { delegate.beamToNamed('/custom/test'); - expect((delegate.currentBeamStack as CustomStateStack).state.customVar, 'test'); - (delegate.currentBeamStack as CustomStateStack).update((state) => CustomState(customVar: 'test-ok')); - expect((delegate.currentBeamStack as CustomStateStack).state.customVar, 'test-ok'); + expect((delegate.currentBeamStack as CustomStateStack).state.customVar, + 'test'); + (delegate.currentBeamStack as CustomStateStack) + .update((state) => CustomState(customVar: 'test-ok')); + expect((delegate.currentBeamStack as CustomStateStack).state.customVar, + 'test-ok'); }); test('beamTo works without setting the BeamState explicitly', () { @@ -175,21 +180,24 @@ void main() { delegate.beamToNamed('/l2'); expect(delegate.beamBack(), true); - expect(delegate.configuration.uri, delegate.currentBeamStack.state.routeInformation.uri); + expect(delegate.configuration.uri, + delegate.currentBeamStack.state.routeInformation.uri); expect(delegate.configuration.uri.path, '/l1'); expect(delegate.currentBeamStack.data, {'x': 'y'}); delegate.beamToNamed('/l2'); expect(delegate.beamBack(), true); - expect(delegate.configuration.uri, delegate.currentBeamStack.state.routeInformation.uri); + expect(delegate.configuration.uri, + delegate.currentBeamStack.state.routeInformation.uri); expect(delegate.configuration.uri.path, '/l1'); expect(delegate.currentBeamStack.data, {'x': 'y'}); delegate.beamToNamed('/l2'); expect(delegate.beamBack(data: {'xx': 'yy'}), true); - expect(delegate.configuration.uri, delegate.currentBeamStack.state.routeInformation.uri); + expect(delegate.configuration.uri, + delegate.currentBeamStack.state.routeInformation.uri); expect(delegate.configuration.uri.path, '/l1'); expect(delegate.currentBeamStack.data, {'xx': 'yy'}); }); @@ -307,7 +315,8 @@ void main() { ); delegate.beamToNamed('/l1/one', data: {'x': 'y'}); await tester.pump(); - expect((delegate.currentBeamStack.state as BeamState).uri.path, '/l1/one'); + expect( + (delegate.currentBeamStack.state as BeamState).uri.path, '/l1/one'); expect(delegate.currentBeamStack.data, {'x': 'y'}); delegate.navigatorKey.currentState!.pop(); @@ -391,7 +400,8 @@ void main() { expect(childDelegate.beamingHistory.last.history.length, 3); }); - testWidgets("navigation on parent doesn't update nested Beamer", (tester) async { + testWidgets("navigation on parent doesn't update nested Beamer", + (tester) async { final childDelegate = BeamerDelegate( initializeFromParent: false, updateFromParent: false, @@ -438,7 +448,8 @@ void main() { }); group('update without rebuild', () { - test('no rebuild updates route information (configuration) to anything', () { + test('no rebuild updates route information (configuration) to anything', + () { final delegate = BeamerDelegate( stackBuilder: RoutesStackBuilder( routes: { @@ -463,7 +474,9 @@ void main() { expect(delegate.configuration.uri.path, '/any'); }); - testWidgets('updating route information without updating parent or rebuilding', (tester) async { + testWidgets( + 'updating route information without updating parent or rebuilding', + (tester) async { final childDelegate = BeamerDelegate( updateParent: false, stackBuilder: RoutesStackBuilder( @@ -579,7 +592,8 @@ void main() { expect(delegate.beamingHistory.last.history.length, 1); }); - testWidgets('history is cleared regardless, if option is set', (tester) async { + testWidgets('history is cleared regardless, if option is set', + (tester) async { final delegate = BeamerDelegate( clearBeamingHistoryOn: {'/'}, stackBuilder: RoutesStackBuilder( @@ -623,7 +637,8 @@ void main() { expect(delegate.beamingHistory.last.history.length, 1); }); - testWidgets('history is cleared regardless, if option is set', (tester) async { + testWidgets('history is cleared regardless, if option is set', + (tester) async { final delegate = BeamerDelegate( clearBeamingHistoryOn: {'/test'}, stackBuilder: RoutesStackBuilder( @@ -701,7 +716,8 @@ void main() { }); group('Relative beaming', () { - test('incoming configuration is appended when it does not start with /', () { + test('incoming configuration is appended when it does not start with /', + () { final delegate = BeamerDelegate( stackBuilder: RoutesStackBuilder( routes: { @@ -718,7 +734,8 @@ void main() { delegate.beamToNamed('t2'); expect(delegate.configuration.uri.path, '/t1/t2'); - expect(delegate.currentBeamStack.state.routeInformation.uri.path, '/t1/t2'); + expect( + delegate.currentBeamStack.state.routeInformation.uri.path, '/t1/t2'); }); }); @@ -738,11 +755,15 @@ void main() { delegate.beamToNamed('/t3'); delegate.popToNamed('/t2'); - expect(delegate.currentBeamStack.history.map((HistoryElement e) => e.routeInformation.uri.path), orderedEquals(['/t1', '/t2'])); + expect( + delegate.currentBeamStack.history + .map((HistoryElement e) => e.routeInformation.uri.path), + orderedEquals(['/t1', '/t2'])); }); group('Deep Link', () { - testWidgets('Deep link is preserved throughout guarding flow', (tester) async { + testWidgets('Deep link is preserved throughout guarding flow', + (tester) async { var isLoading = true; var isAuthenticated = false; final delegate = BeamerDelegate( @@ -758,18 +779,21 @@ void main() { BeamGuard( pathPatterns: ['/splash'], check: (_, __) => isLoading, - beamToNamed: (context, _, __, deepLink) => isAuthenticated ? (deepLink ?? '/home') : '/login', + beamToNamed: (context, _, __, deepLink) => + isAuthenticated ? (deepLink ?? '/home') : '/login', ), BeamGuard( pathPatterns: ['/login'], check: (_, __) => !isAuthenticated && !isLoading, - beamToNamed: (context, _, __, deepLink) => isAuthenticated ? (deepLink ?? '/home') : '/splash', + beamToNamed: (context, _, __, deepLink) => + isAuthenticated ? (deepLink ?? '/home') : '/splash', ), BeamGuard( pathPatterns: ['/splash', '/login'], guardNonMatching: true, check: (_, __) => isAuthenticated, - beamToNamed: (context, _, __, ___) => isLoading ? '/splash' : '/login', + beamToNamed: (context, _, __, ___) => + isLoading ? '/splash' : '/login', ), ], ); diff --git a/package/test/beaming_history_test.dart b/package/test/beaming_history_test.dart index a9d8d1f..0bd2fc8 100644 --- a/package/test/beaming_history_test.dart +++ b/package/test/beaming_history_test.dart @@ -9,7 +9,8 @@ class StackA extends BeamStack { List get pathPatterns => ['/a']; @override - List buildPages(BuildContext context, BeamState state) => [BeamPage(key: const ValueKey('a'), child: Container())]; + List buildPages(BuildContext context, BeamState state) => + [BeamPage(key: const ValueKey('a'), child: Container())]; } class StackB extends BeamStack { @@ -18,8 +19,10 @@ class StackB extends BeamStack { @override List buildPages(BuildContext context, BeamState state) => [ - if (state.pathPatternSegments.contains('b1')) BeamPage(key: const ValueKey('b1'), child: Container()), - if (state.pathPatternSegments.contains('b2')) BeamPage(key: const ValueKey('b2'), child: Container()), + if (state.pathPatternSegments.contains('b1')) + BeamPage(key: const ValueKey('b1'), child: Container()), + if (state.pathPatternSegments.contains('b2')) + BeamPage(key: const ValueKey('b2'), child: Container()), ]; } @@ -68,7 +71,9 @@ void main() { expect(delegate.beamingHistory[0], isA()); }); - test('beamToReplacement removes currentBeamStack from history before appending new', () { + test( + 'beamToReplacement removes currentBeamStack from history before appending new', + () { delegate.beamToNamed('/l2'); delegate.beamToNamed('/l1'); @@ -108,11 +113,14 @@ void main() { expect(delegate.beamingHistory[0], isA()); expect(delegate.currentBeamStack, isA()); expect(delegate.beamingHistory.last.history.length, 2); - expect(delegate.beamingHistory.last.history.last.routeInformation.uri.path, '/l2/y'); + expect( + delegate.beamingHistory.last.history.last.routeInformation.uri.path, + '/l2/y'); expect(delegate.beamingHistoryCompleteLength, 3); }); - test('beamBack leads to previous beam state and all helpers are correct', () { + test('beamBack leads to previous beam state and all helpers are correct', + () { delegate.beamToNamed('/l1'); delegate.beamToNamed('/l2'); @@ -131,7 +139,8 @@ void main() { expect(delegate.beamBack(), true); expect(delegate.currentBeamStack, isA()); - expect((delegate.currentBeamStack.state as BeamState).uri.path, equals('/l1/one')); + expect((delegate.currentBeamStack.state as BeamState).uri.path, + equals('/l1/one')); expect(delegate.beamingHistoryCompleteLength, 2); expect(delegate.beamBack(), true); diff --git a/package/test/utils_test.dart b/package/test/utils_test.dart index 2377733..788b8aa 100644 --- a/package/test/utils_test.dart +++ b/package/test/utils_test.dart @@ -204,15 +204,21 @@ void main() { test('Merging with new routeState', () { final current = RouteInformation(uri: Uri.parse('/current')); expect( - Utils.mergeConfiguration(current, RouteInformation(uri: Uri(), state: 42)).state, + Utils.mergeConfiguration( + current, RouteInformation(uri: Uri(), state: 42)) + .state, 42, ); expect( - Utils.mergeConfiguration(current, RouteInformation(uri: Uri.parse('incoming'), state: 42)).state, + Utils.mergeConfiguration(current, + RouteInformation(uri: Uri.parse('incoming'), state: 42)) + .state, 42, ); expect( - Utils.mergeConfiguration(current, RouteInformation(uri: Uri.parse('/incoming'), state: 42)).state, + Utils.mergeConfiguration(current, + RouteInformation(uri: Uri.parse('/incoming'), state: 42)) + .state, 42, ); expect( From 8c7168b0d63188b9d110cf1fe3c6c4935f912ea7 Mon Sep 17 00:00:00 2001 From: Stan Persoons Date: Tue, 6 Aug 2024 09:35:36 +0200 Subject: [PATCH 08/10] Added local dart format length, to ensure everyone has the right formatting length --- package/.vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 package/.vscode/settings.json diff --git a/package/.vscode/settings.json b/package/.vscode/settings.json new file mode 100644 index 0000000..d50cea8 --- /dev/null +++ b/package/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "dart.lineLength": 80 +} \ No newline at end of file From 140ab58abf21c5d463de2e3917385322b6fa112c Mon Sep 17 00:00:00 2001 From: busslina Date: Tue, 17 Sep 2024 04:12:33 +0200 Subject: [PATCH 09/10] Removed transition and reverese transition durations on BeamPage When BeamPage is BeamPageType.noTransition --- package/lib/src/beam_page.dart | 2 ++ 1 file changed, 2 insertions(+) diff --git a/package/lib/src/beam_page.dart b/package/lib/src/beam_page.dart index 7199fb1..a45f5fb 100644 --- a/package/lib/src/beam_page.dart +++ b/package/lib/src/beam_page.dart @@ -323,6 +323,8 @@ class BeamPage extends Page { opaque: opaque, settings: this, pageBuilder: (context, animation, secondaryAnimation) => child, + transitionDuration: Duration.zero, + reverseTransitionDuration: Duration.zero, ); default: return MaterialPageRoute( From c3e67116ab4dc779156f7278c34a849a588ad074 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20Lovni=C4=8Dki?= Date: Wed, 16 Oct 2024 22:02:18 +0200 Subject: [PATCH 10/10] {interceptors}: apply review tweaks --- package/lib/beamer.dart | 2 +- package/lib/src/beam_guard.dart | 2 +- package/lib/src/beam_interceptor.dart | 7 +++++-- ...p_scope.dart => beam_interceptor_scope.dart} | 17 ++++++++--------- package/lib/src/beam_page.dart | 2 -- 5 files changed, 15 insertions(+), 15 deletions(-) rename package/lib/src/{beam_interceptor_pop_scope.dart => beam_interceptor_scope.dart} (70%) diff --git a/package/lib/beamer.dart b/package/lib/beamer.dart index 5a22a89..53ae2af 100644 --- a/package/lib/beamer.dart +++ b/package/lib/beamer.dart @@ -2,7 +2,7 @@ library beamer; export 'src/beam_guard.dart'; export 'src/beam_interceptor.dart'; -export 'src/beam_interceptor_pop_scope.dart'; +export 'src/beam_interceptor_scope.dart'; export 'src/beam_page.dart'; export 'src/beam_stack.dart'; export 'src/beam_state.dart'; diff --git a/package/lib/src/beam_guard.dart b/package/lib/src/beam_guard.dart index 67facb7..8173921 100644 --- a/package/lib/src/beam_guard.dart +++ b/package/lib/src/beam_guard.dart @@ -35,7 +35,7 @@ class BeamGuard { /// but will not match '/books'. To match '/books' and everything after it, /// use '/books*'. /// - /// See [canHandleGuard] for more details. + /// See [BeamStack.shouldCheckGuard] for more details. /// /// For RegExp: /// You can use RegExp instances and the delegate will check for a match using [RegExp.hasMatch] diff --git a/package/lib/src/beam_interceptor.dart b/package/lib/src/beam_interceptor.dart index f55335c..fad57d7 100644 --- a/package/lib/src/beam_interceptor.dart +++ b/package/lib/src/beam_interceptor.dart @@ -1,19 +1,22 @@ import 'package:beamer/beamer.dart'; import 'package:flutter/widgets.dart'; -/// IDK LOL class BeamInterceptor { /// Creates a [BeamInterceptor] with defined properties. /// - /// [pathPatterns] and [intercept] must not be null. + /// [name] and [intercept] must not be null. const BeamInterceptor({ this.enabled = true, required this.name, required this.intercept, }); + /// A name of the interceptor. + /// + /// It is used to compare interceptors. final String name; + /// Whether the interceptor is enabled. final bool enabled; /// The interceptor function. diff --git a/package/lib/src/beam_interceptor_pop_scope.dart b/package/lib/src/beam_interceptor_scope.dart similarity index 70% rename from package/lib/src/beam_interceptor_pop_scope.dart rename to package/lib/src/beam_interceptor_scope.dart index 2965948..d40f251 100644 --- a/package/lib/src/beam_interceptor_pop_scope.dart +++ b/package/lib/src/beam_interceptor_scope.dart @@ -7,10 +7,10 @@ import 'package:flutter/widgets.dart'; /// /// If any of the interceptors return true, the pop will not be invoked. /// -/// This works on Navigator.maybePop as well as all the Beamer.beamTo, Beamer.beamToNamed, Beamer.beamBack... operations. +/// This works on Navigator.pop as well as all the Beamer's beaming functions. /// /// ```dart -/// BeamInterceptorPopScope( +/// BeamInterceptorScope( /// interceptors: [BeamInterceptor(...), ...], /// child: Center( /// child: ElevatedButton( @@ -20,8 +20,8 @@ import 'package:flutter/widgets.dart'; /// ), /// ); /// ``` -class BeamInterceptorPopScope extends StatefulWidget { - const BeamInterceptorPopScope({ +class BeamInterceptorScope extends StatefulWidget { + const BeamInterceptorScope({ required this.child, required this.interceptors, this.beamerDelegate, @@ -30,18 +30,17 @@ class BeamInterceptorPopScope extends StatefulWidget { final Widget child; - /// The interceptors to check when a maybePop, or beamTo, beamToNamed, beamBack... is triggered. + /// The interceptors to check upon any beaming or popping. final List interceptors; - /// The beamerDelegate to apply the interceptors to. + /// The [BeamerDelegate] to apply the interceptors to. final BeamerDelegate? beamerDelegate; @override - State createState() => - _BeamInterceptorPopScopeState(); + State createState() => _BeamInterceptorScopeState(); } -class _BeamInterceptorPopScopeState extends State { +class _BeamInterceptorScopeState extends State { late BeamerDelegate beamerDelegate; @override diff --git a/package/lib/src/beam_page.dart b/package/lib/src/beam_page.dart index e1eca3b..9e5581b 100644 --- a/package/lib/src/beam_page.dart +++ b/package/lib/src/beam_page.dart @@ -359,8 +359,6 @@ class BeamPage extends Page { transitionDuration: transitionDuration ?? Duration.zero, reverseTransitionDuration: reverseTransitionDuration ?? Duration.zero, pageBuilder: (context, animation, secondaryAnimation) => child, - transitionDuration: Duration.zero, - reverseTransitionDuration: Duration.zero, ); default: return MaterialPageRoute(