RouteWidget class
Widget use to define sub routes or just for better organization or add custom transition to a particular route.
For example let's take this routes
final myNavigator = NavigationBuilder.create(
routes: {
'/': (_) => HomePage(),
'/Page1': (_) => Page1(),
'/Page1/:id': (data) => Page1(id: data.pathParam['id']),
'/Page1/page12': (_) => Page12(),
},
);
The above routes definition can be written like this:
final myNavigator = NavigationBuilder.create(
routes: {
'/': (_) => HomePage(),
'/Page1': (_) => RouteWidget(
routes: {
'/': (_) => Page1(),
'/:id': (data) => Page1(id: data.pathParam['id']),
'/page12': (_) => Page12(),
},
)
},
);
You can also use the builder property to wrap the route outlet widget inside an other widget.
final myNavigator = NavigationBuilder.create(
routes: {
'/': (_) => HomePage(),
'/Page1': (_) => RouteWidget(
// Inside widget tree, you can get the router outlet widget using
// `context.routerOutlet`
builder: (routeOutlet) {
// If you extract this Scaffold to a Widget class, you do not
// need to use the Builder widget
return Scaffold(
appBar: AppBar(
title: OnReactive( // It reactive to routeData
() => Builder( // Needed only to get a child BuildContext
builder: (context) {
final location = context.routeData.location;
return Text('Routing to: $location');
},
),
),
),
body: routeOutlet,
);
},
routes: {
'/': (_) => Page1(),
'/:id': (data) => Page1(id: data.pathParam['id']),
'/page12': (_) => Page12(),
},
)
},
);
Inside widget tree, you can get the router outlet widget using
context.routerOutlet
RouteWidget can be just used to add custom page transition animation.
In the following example Page1 will be animated using the custom definition, whereas all other pages will use the default animation.
final myNavigator = NavigationBuilder.create(
// Default transition
transitionDuration: RM.transitions.leftToRight(),
routes: {
'/': (_) => HomePage(),
'/Page1': (_) => RouteWidget(
builder: (_) => Page1(),
// You can use one of the predefined transitions
transitionsBuilder: (context, animation, secondAnimation, child) {
// Custom transition implementation
return ...;
},
),
'/page2': (_) => Page2(),
},
);
See Also RouteData and NavigationBuilder
- Inheritance
-
- Object
- DiagnosticableTree
- Widget
- StatelessWidget
- RouteWidget
Constructors
-
RouteWidget({Widget builder(Widget routerOutlet)?, Map<
String, Widget Function(RouteData data)> routes = const {}, Widget transitionsBuilder(BuildContext context, Animation<double> animation, Animation<double> secondaryAnimation, Widget child)?, bool? delegateImplyLeadingToParent}) - Widget use to define sub routes or just for better organization or add custom transition to a particular route.
Properties
- builder → Widget Function(Widget routerOutlet)?
-
Used to wrap the the router outlet widget inside another widget.
final
- delegateImplyLeadingToParent → bool?
-
Weather to delegate the ImplyLeading used in Scaffold to parent route
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- isInitialized → List
-
final
- key → Key?
-
Controls how one widget replaces another widget in the tree.
finalinherited
- route ↔ Widget
-
latefinal
- routeLocation → String
-
latefinal
- routePath → String
-
latefinal
- routePathResolver → ResolvePathRouteUtil
-
latefinal
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
transitionsBuilder
→ Widget Function(BuildContext context, Animation<
double> animation, Animation<double> secondaryAnimation, Widget child)? -
Define a transition builder to be used for the sub route.
final
Methods
-
build(
BuildContext context) → Widget -
Describes the part of the user interface represented by this widget.
override
-
copyWith(
Widget builder(Widget child)?) → RouteWidget -
createElement(
) → StatelessElement -
Creates a StatelessElement to manage this widget's location in the tree.
inherited
-
debugDescribeChildren(
) → List< DiagnosticsNode> -
Returns a list of DiagnosticsNode objects describing this node's
children.
inherited
-
debugFillProperties(
DiagnosticPropertiesBuilder properties) → void -
Add additional properties associated with the node.
inherited
-
initialize(
) → Map< String, RouteSettingsWithChildAndData> ? -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toDiagnosticsNode(
{String? name, DiagnosticsTreeStyle? style}) → DiagnosticsNode -
Returns a debug representation of the object that is used by debugging
tools and by DiagnosticsNode.toStringDeep.
inherited
-
toString(
{DiagnosticLevel minLevel = DiagnosticLevel.info}) → String -
A string representation of this object.
inherited
-
toStringDeep(
{String prefixLineOne = '', String? prefixOtherLines, DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a string representation of this node and its descendants.
inherited
-
toStringShallow(
{String joiner = ', ', DiagnosticLevel minLevel = DiagnosticLevel.debug}) → String -
Returns a one-line detailed description of the object.
inherited
-
toStringShort(
) → String -
A short, textual description of this widget.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited