beamer 2.0.0-dev.0 beamer: ^2.0.0-dev.0 copied to clipboard
A routing package built on top of Router and Navigator's pages API, supporting arbitrary nested navigation, guards and more.
2.0.0-dev.0 #
DISCLAIMER #
This is in no way a big fancy release, just a push of all the important and breaking changes that have been sitting in master
for too long, hoping for a major release that didn't come yet. Now we can continue towards v2
...
- BREAKING: bump lower SDK constraint to 2.14
- BREAKING:
BeamPage.key
is now required (#443) - BREAKING:
BeamGuard
function now have 1 additional parameter which is a persistent deep link set by the platform or developer (#567) - Fixed: rebuild of nested
Beamer
upon deep link (MarkRunWu, #557) - Fixed:
BeamParameters
1-off in history (themartorana, #562)
Examples #
- Added bottom_navigation_riverpod (vduseev, #601)
- Added bottom_rail_navigation_multiple_beamers (Protoss78, #539)
- Fixed logout behavior in authentication_bloc (fallouh, #590)
1.5.5 #
- Increase SDK upper bound to
<4.0.0
1.5.4 #
- Fixed: Usage of
Object.hash
1.5.3 #
- Fixed: Warning for usage of deprecated
hashValues
1.5.0 #
- Added:
onUpdate
method toBeamLocation
which is called afterinitState
and on everyupdate
. (#507, #88c8537). See this example that demonstrates its possible usage. - Added:
isEqualTo
extension method toRouteInformation
(intentionally not overriding the equality operator) - Fixed: Possible wrong URL after global rebuild with multiple child Beamers (#523)
- Fixed: Consistency of calls to
BeamLocation.updateState
(#484) - Fixed: Resetting
popConfiguration
afterpopToNamed
parameter has been used in abeamToNamed
call (#521)
Documentation #
- Added explanation of some specific parameters at Nested Navigation section in README (#514)
Examples #
- Improved books_blos example with usage of new
BeamLocation.onUpdate
Ecosystem #
- Added a beam_location brick
- Various improvements on website (devj3ns)
1.4.1+1 #
- Fixed: formatting of
beamer.dart
file
1.4.1 #
- Fixed: Initial guarding browser URL (#501, b2a9f0b)
- Fixed: Deeper routes matching with asterisk (cgaisl, #494, #502)
- Fixed: Nested navigation crash with guards (svsk417, #490)
- Fixed: Breaking out of
popToNamed
loop (Goddchen, #500)
Documentation #
- Added website app; a starting point for extensive, self-explanatory Beamer documentation at beamer.dev
- Fixed typos and added doc comment for accessing root Beamer (gazialankus)
1.4.0 #
- Added: Relative beaming, i.e. being able to call
beamToNamed('path')
instead ofbeamToNamed('/my/path')
if we're already at/my
. Important note: This will affect all beaming that is not using the leading/
, i.e. it will treat it as relative and append it to current path. - Added: New
BeamPageType
s;slideRightTransition
,slideLeftTransition
andslideTopTransition
(Shiba-Kar, #477) - Improved: Interactions between nested and sibling Beamers by having children automatically take priority and more carefully handle locally not found cases
- Fixed: Unnecessary update of
ChangeNotifier
custom state (jmysliv, #475) - Fixed:: Target
BeamLocation
initialization duringbeamBack
- Fixed: Insufficiently detailed automatic
BeamPage.key
in someRoutesLocationBuilder.routes
usage of*
Examples #
- Added a new example: multiple_beamers
- Improved and simplified bottom_navigation_multiple_beamers example
- Fixed updating Beamer in authentication_riverpod example
1.3.0 #
- Added:
strictPathPatterns
toBeamLocation
which will do only exact matches of URI and path pattern (5810c9c) - Added:
updateListenable
toBeamerDelegate
which will triggerupdate
when it notifies (f0ccfd7) - Added: Support for replacing the browser history entry when using
beamToReplacement*
or specifyingreplaceRouteInformation: true
- Added: Support for setting
opaque
property onBeamPage
(ggirotto, #446) - Added:
initializeFromParent
property toBeamerDelegate
to overcome the limitation ofupdateFromParent
and give finer control over parent interaction (340b474) - Fixed: Browser back/forward buttons behavior, i.e. browser history
- Fixed: Initialization of target
BeamLocation
when beaming back (#463) - Updated: Return values for
beamBack
andpopBeamLocation
context extensions (marcguilera, #461, 1045ab3) - Updated: The entire guarding flow (thanks mat100payette for important feedback and contribution)
Examples #
- Fixed some edge cases in advanced_books example (jpangburn, #451)
- Updated authentication_bloc example guard usage (df194e8)
1.2.0 #
- Fixed: Using the
initialPath
instead of parent's path on nestedBeamerDelegate
during initialization from parent when theupdateFromParent
is set tofalse
(samdogg7)
Documentation #
- Added a section about Page Keys to README (Goddchen)
- Added a sentence about browser's back button to README
- Fixed and improved grammar in doc comments (ggirotto)
Examples #
- Fixed analyzer warnings (Goddchen)
- Updated authentication_bloc example to bloc v8 (Lorenzohidalgo)
1.1.0 #
Most of this release is matuella's directly and indirectly contributions. Many thanks!
- Add: a link to Medium article for "Migrating" section in README
- Add: lint rules
prefer_single_quotes
,always_use_package_imports
,omit_local_variable_types
,prefer_final_locals
andcomment_references
. - Fix: disposing histories on
beamBack
(#417) - Fix: updating history when setting
state
manually (#420) - Deprecate: unused
BeamerDelegate.preferUpdate
- Improve: tests setup (Thanks cedvdb)
1.0.0 #
- BREAKING: "top-level state", the one in
BeamerDelegate
is nowRouteInformation
instead ofBeamState
BeamerDelegate.state
doesn't exist anymore and is replaced withBeamerDelegate.configuration
which isRouteInformation
and notBeamState
locationBuilder
now works withRouteInformation
andBeamConfiguration
instead ofBeamState
super()
constructor onBeamLocation
now takes optionalRouteInformation
instead ofBeamState
- in order to continue using custom
BeamLocation
s withBeamState
state, generic type has to be specified;class MyBeamLocation extends BeamLocation<BeamState>
- BREAKING:
pathBlueprints
is renamed topathPatterns
BeamLocation.pathPatterns
isList<Pattern>
BeamState.pathBlueprintSegments
renamed toBeamState.pathPatternSegments
BeamGuard.pathBlueprints
renamed toBeamGuard.pathPatterns
- BREAKING:
SimpleLocationBuilder
is renamed toRoutesLocationBuilder
- also the
SimpleBeamLocation
is renamed toRoutesBeamLocation
routes
values now additionally receivedata
- also the
- BREAKING:
beamStateHistory
andbeamLocationHistory
have been replaced withbeamingHistory
that is aList<BeamLocation>
and eachBeamLocation
hashistory
that isList<HistoryElement>
whereHistoryElement
holdsRouteInformation
andBeamParameters
.clearBeamStateHistory
andclearBeamLocationHistory
have been removed.
- BREAKING:
BeamerDelegate.listener
has been renamed toBeamerDelegate.routeListener
. - BREAKING: The property
pageRouteBuilder
inBeamPage
is replaced with a new propertyrouteBuilder
which works with anyRouteBuilder
not justPageRouteBuilder
. - BREAKING:
BeamGuard
beamTo
receives the origin and targetBeamLocation
s alongsideBuildContext
.replaceCurrent
was removed in favor ofbeamToReplacement
.
- BREAKING:
BeamGuard
beamToNamed
is now a function that receives the origin and targetBeamLocation
s and returns aString
.replaceCurrent
was removed in favor ofbeamToNamedReplacement
.
- Add: guard_riverpod example
- Add: firebase_core example
- Add: firebase_auth example
- Add: change_notifier_custom_state example
- Add:
BeamerBackButtonDispatcher.alwaysBeamBack
to make Android back button always go to previous route, even if it canpop
. - Add:
BeamPage.routePop
that can be used foronPopPage
instead of defaultpathsegmentPop
- Add:
BeamerDelegate.buildListener
, which is called after the pages are built. - Add:
fullScreenDialog
property toBeamPage
- Add: flutter_lints
- Add: a presentation resource about beamer
- Fix: clearing history range when using
popToNamed
- Fix: passing
BeamPage.title
toCupertinoPageRoute
s
0.14.1 #
- Add:
updateParent
(defaulttrue
) toBeamerDelegate
- Fix: ignoring query on initial path
0.14.0 #
- BREAKING:
routes
inSimpleLocationBuilder
now also bring thestate
- Add: support for
RegExp
inpathBlueprints
(in bothBeamGuard
s andBeamLocation
s) - Add: updating nested
Beamer
s on parent navigation - Add:
onBack
toBeamerbackButtonDispatcher
- Add:
navigator
getter toBeamerDelegate
- Add:
beamStateHistory
andBeamLocationHistory
tocontext
extension methods - Add:
data
parameter tobeamBack
- Change:
BeamPage.pageRouteBuilder
return type to be a superclass - Fix: removing last
BeamState
from history on defaultpop
- Fix:
BeamGuard
behavior on query parameters - Fix: ignoring trailing
/
in URIs - Fix: keeping
data
as long as possible when beaming - Improved Android back button behavior
- Improved bottom navigation examples
- Improved README
0.13.3 #
- Add: authentication_riverpod example
- Add: "Tips and Common Issues" to README
- Fix: Drawer pop
- Fix:
beamBackOnPop:true
while beaming - Make
beamStateHistory
andbeamLocationHistory
public
0.13.2 #
- Add:
BeamerDelegate.notFoundRedirectNamed
- Add: public static
BeamPage.defaultOnPopPage
- Fix: top-level guard updating URL
- Improved guards example
- Improved README Quick Start
0.13.1 #
- Fix: correctly updating delegate after applying guards
0.13.0 #
- BREAKING: renamed
BeamerRouterDelegate
toBeamerDelegate
- BREAKING: renamed
BeamerRouteInformationParser
toBeamerParser
- BREAKING: renamed
pagesBuilder
tobuildPages
- BREAKING: renamed
Beamer.of(context).currentLocation
toBeamer.of(context).currentBeamLocation
- Add:
BeamPage.popToNamed
andBeamPage.onPopPage
for fine control of popping - Add:
BeamPage.title
for setting the browser tab title - Add:
SimpleLocationBuilder
can now mixBeamPage
s andWidget
s - Add:
BeamerParser.onParse
for intercepting the parsed state on app load - Add: encoding the
data
into browser history - Add: blocking capability to
BeamGuard
s - Add: slide and scale transitions to
BeamPageType
- Add: optional
transitionDelegate
for beaming - Fix: cascade guarding
- Fix: delegate listener not being called always
- All examples improved and migrated to null-safety
- Improved documentation
0.12.4 #
- Add
Beamer.setPathUrlStrategy()
for removing#
from URL - Add persistent auth state on browser refresh in authentication_bloc example
- Fix detection of
NotFound
when usingSimpleLocationBuilder
- Fix updating route on guard actions
- Fix not pushing
BeamState
in history if it's on top - Fix taking
currentLocation
on setting initial path
0.12.3 #
- Add authentication_bloc example
- Fix
SimpleBeamLocation
ignoring query - Fix updating delegate state on location state change
0.12.2 #
- Add
listener
attribute toBeamerRouterDelegate
- Add
root
attribute toBeamerRouterDelegate
and{bool root = false}
attribute toBeamer.of
- Add
canHandle(Uri uri)
method toBeamLocation
- Fix Updating parent on nested navigation
- Fix README typos
0.12.1 #
- Fix updating browser history
0.12.0 #
- BREAKING: There's no
RootRouterDelegate
any more. Just rename it toBeamerRouterDelegate
. If you were using itshomeBuilder
, useSimpleLocationBuilder
and thenroutes: {'/': (context) => HomeScreen()}
- BREAKING: Behavior of
beamBack()
was changed to go to previousBeamState
, notBeamLocation
. If this is not what you want, usepopBeamLocation()
that has the same behavior as oldbeamback()
- Fix: Important bug while using multiple sibling
Beamer
s
0.11.4 #
- Fix
currentLocation
without listener after guard beam
0.11.3 #
- Add
beamBackTransitionDelegate
toBeamerRouterDelegate
- Add
transition_delegates.dart
with some useful transition delegates - Tweak deep_location example to show this more clearly
0.11.2 #
- Fix lost
navigationNotifier
on rebuilds with nestedBeamer
s
0.11.1 #
- Fix possibly null
_currentLocation
0.11.0+1 #
- add missing ToC titles
0.11.0 #
- migrated to null safety
- BREAKING:
Beamer
now takesrouterDelegate
, notbeamLocations
directly - BREAKING:
BeamerRouterDelegate.beamLocations
is nowlocationBuilder
- BREAKING:
pagesBuilder
now also bringsstate
- Add
beamToNamed
toBeamGuard
- Add various
LocationBuilder
s - Add
transitionDelegate
toBeamLocation
andBeamerRouterDelegate
- Add
type
andpageRouteBuilder
toBeamPage
, for transition control - Add
initialPath
toBeamerRouterDelegate
- Add
popTo
/popToNamed
options for beaming - Add
onPopPage
toBeamLocation
0.10.5 #
- Remove
NavigationNotifier.currentLocation
(not needed)
0.10.4 #
- Add
BeamGuard.beamToNamed
0.10.2 #
- Fix non-existent state if not set explicitly
- (slight) Change to a signature of
BeamLocation.createState
, but hopefully no one has used it yet to be affected :)
0.10.1 #
- Fix creation of a custom
BeamState
- Add tests and doc comments for
BeamState
0.10.0 #
- BREAKING Removed most attributes from
BeamLocation
and put them intoBeamLocation.state
- BREAKING Changed
BeamLocation
constructor to take onlystate
. - Add
RootRouterDelegate
for nested navigation - Add
BeamState
for more declarative experience
0.9.3 #
- Add
replaceCurrent
attribute (defaultfalse
) to beaming function - Fix old information at Guards section in README
0.9.2 #
- Fix removing last path segment from possibly unmodifiable List
0.9.1 #
- Fix removing the last empty path segment when it's the only one
0.9.0+1 #
- Fix formatting
0.9.0 #
- Add removing duplicates in
beamHistory
+BeamerRouterDelegate.removeDuplicateHistory
- Add implicit updates of current location +
BeamerRouterDelegate.preferUpdate
- Add more Beamer extensions to
BuildContext
- Remove the need for
back_button_interceptor
package (not that it's not good, but we realized it can be implemented more naturally)
0.8.2 #
- Add optional
notFoundRedirect
toBeamerRouterDelegate
- Fix parsing URIs in the form
/path/
the same as/path
0.8.1+1 #
- Fix README ToC links and typos
0.8.1 #
- Remove dart:io
0.8.0 #
- BREAKING:
BeamLocation.pages
is nowBeamLocation.pagesBuilder
- BREAKING:
BeamerRouterDelegate
now takesbeamLocations
andBeamerRouteInformationParser
nothing - NEW FEATURE:
beamToNamed
- NEW FEATURE:
canBeamBack
andbeamBackLocation
helpers - NEW FEATURE:
BeamGuard.onCheckFailed
- NEW FEATURE:
stacked
parameter for beaming - Add: back_button_interceptor package automatic
beamBack
on Android back button - Add more details to README: Key Concepts
- Add invite to Discord community for beamer help/discussion/chat
0.7.0 #
- BREAKING:
BeamerRouterDelegate.notFoundPage
is nowBeamPage
instead ofWidget
- BREAKING:
BeamGuard.showPage
is nowBeamPage
instead ofWidget
- NEW FEATURE:
beamBack
now goes back throughbeamHistory
- NEW FEATURE:
beamTo
can take an optionalbeamBackOnPop
boolean - NEW FEATURE:
BeamLocation.builder
can be used to provide something to the entire location - NEW EXAMPLE: location_builder
- NEW EXAMPLE: animated_rail
- tweaks and improvements to the documentation
0.6.4+1 #
- Add logo image
0.6.4 #
- Fix static analysis (Pana 0.14.10, Flutter 1.22.6, Dart 2.10.5) problem by not using
maybeOf
0.6.3 #
- Add
name
attribute toBeamPage
- Fix
BeamerRouterDelegate
not notifying listeners onsetNewRoutePath
0.6.2 #
- Add
navigatorObservers
attribute toBeamerRouterDelegate
0.6.1 #
- Add
guardNonMatching
attribute toBeamGuard
0.6.0+1 #
- Fix some mistakes in README
0.6.0 #
- NEW FEATURE: Guards
- NEW FEATURE: Beamer as a Widget (see Bottom Navigation example)
- Add
examples/
for every gif in README - Add state to
Beamer
0.5.0 #
- BREAKING:
*App.router
constructor needs to be used - BREAKING:
String pathBlueprint
is nowList<String> pathBlueprints
- BREAKING:
BeamLocation.withParameters
constructor is removed and all parameters are handled with 1 constructor. See example if you needsuper
. - BREAKING:
BeamPage
'spage
renamed tochild
- NEW FEATURE:
BeamLocation
can support multiple and arbitrary long path blueprints - NEW FEATURE:
notFoundPage
- Add more complex books example
- Add more doc comments
- Remove the need for
routerDelegate
to take locations
0.4.1+1 #
- Add some more badges
0.4.1 #
- Update example not to access state (books) from
BeamLocation
0.4.0 #
- BREAKING:
BeamLocation.pages
must beList<BeamPage>
instead ofList<Page>
- Add
keepPathParametersOnPop
toBeamPage
- Fix
_currentPages
toBeamLocation
parsing when page stack is beyond URI path parameter - Update README
- Cleanup
0.3.0 #
- Add
Beamer.of(context)
for convenience - Add recreation of "official" books example
- Update README
- Cleanup
0.2.0 #
- BREAKING: Beamer must be placed in a
Widget
tree - BREAKING: beaming is now only possible with extension methods on
BuildContext
- BREAKING:
BeamPage.identifier
replaced withBeamPage.key
- Remove
BeamLocation.popLocation
- Add "backwards parse" of URI
- Format pedantically
- Update README with new practices and deep location example
0.1.2 #
- Add dartdoc and tests
0.1.1 #
- Remove widgets from export barrel
0.1.0+1 #
- Add more to pub description
0.1.0 #
- Initial release