Fixed route crashing
This commit is contained in:
parent
ddbf7f33b6
commit
22e073eb3f
2 changed files with 30 additions and 19 deletions
|
@ -182,7 +182,7 @@ class _PushStateRouter<T> extends _BrowserRouterImpl<T> {
|
||||||
// _onRoute.add(_current = null);
|
// _onRoute.add(_current = null);
|
||||||
//} else {
|
//} else {
|
||||||
final route = resolved.route;
|
final route = resolved.route;
|
||||||
var thisPath = route.name;
|
var thisPath = route.name ?? '';
|
||||||
if (thisPath.isEmpty) {
|
if (thisPath.isEmpty) {
|
||||||
thisPath = route.path;
|
thisPath = route.path;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,28 +2,37 @@ part of angel_route.src.router;
|
||||||
|
|
||||||
/// Represents a virtual location within an application.
|
/// Represents a virtual location within an application.
|
||||||
class Route<T> {
|
class Route<T> {
|
||||||
String method;
|
final String method;
|
||||||
String path;
|
final String path;
|
||||||
final Map<String, Map<String, dynamic>> _cache = {};
|
final Map<String, Map<String, dynamic>> _cache = {};
|
||||||
String name = '';
|
final RouteDefinition? _routeDefinition;
|
||||||
|
final List<T> handlers;
|
||||||
|
String? name;
|
||||||
Parser<RouteResult>? _parser;
|
Parser<RouteResult>? _parser;
|
||||||
late RouteDefinition _routeDefinition;
|
|
||||||
late List<T> handlers;
|
|
||||||
|
|
||||||
Route(this.path, {required this.method, required this.handlers}) {
|
Route(this.path, {required this.method, required this.handlers})
|
||||||
|
: _routeDefinition = RouteGrammar.routeDefinition
|
||||||
|
.parse(SpanScanner(path.replaceAll(_straySlashes, '')))
|
||||||
|
.value {
|
||||||
|
if (_routeDefinition?.segments.isNotEmpty != true) {
|
||||||
|
_parser = match('').map((r) => RouteResult({}));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
var result = RouteGrammar.routeDefinition
|
var result = RouteGrammar.routeDefinition
|
||||||
.parse(SpanScanner(path.replaceAll(_straySlashes, '')));
|
.parse(SpanScanner(path.replaceAll(_straySlashes, '')));
|
||||||
|
|
||||||
if (result.value != null) {
|
if (result.value != null) {
|
||||||
//throw ArgumentError('[Route] Failed to create route for $path');
|
|
||||||
_routeDefinition = result.value!;
|
|
||||||
|
|
||||||
|
//throw ArgumentError('[Route] Failed to create route for $path');
|
||||||
|
_routeDefinition = result.value;
|
||||||
if (_routeDefinition.segments.isEmpty) {
|
if (_routeDefinition.segments.isEmpty) {
|
||||||
_parser = match('').map((r) => RouteResult({}));
|
_parser = match('').map((r) => RouteResult({}));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
//print('[Route] Failed to create route for $path');
|
_parser = match('').map((r) => RouteResult({}));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
factory Route.join(Route<T> a, Route<T> b) {
|
factory Route.join(Route<T> a, Route<T> b) {
|
||||||
|
@ -35,7 +44,7 @@ class Route<T> {
|
||||||
|
|
||||||
//List<T> get handlers => _handlers;
|
//List<T> get handlers => _handlers;
|
||||||
|
|
||||||
Parser<RouteResult>? get parser => _parser ??= _routeDefinition.compile();
|
Parser<RouteResult>? get parser => _parser ??= _routeDefinition?.compile();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
String toString() {
|
String toString() {
|
||||||
|
@ -51,7 +60,8 @@ class Route<T> {
|
||||||
var b = StringBuffer();
|
var b = StringBuffer();
|
||||||
var i = 0;
|
var i = 0;
|
||||||
|
|
||||||
for (var seg in _routeDefinition.segments) {
|
if (_routeDefinition != null) {
|
||||||
|
for (var seg in _routeDefinition!.segments) {
|
||||||
if (i++ > 0) b.write('/');
|
if (i++ > 0) b.write('/');
|
||||||
if (seg is ConstantSegment) {
|
if (seg is ConstantSegment) {
|
||||||
b.write(seg.text);
|
b.write(seg.text);
|
||||||
|
@ -62,6 +72,7 @@ class Route<T> {
|
||||||
b.write(params[seg.name]);
|
b.write(params[seg.name]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return b.toString();
|
return b.toString();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue