fluro/lib/src/common.dart

80 lines
1.5 KiB
Dart

/*
* fluro
* Created by Yakka
* https://theyakka.com
*
* Copyright (c) 2019 Yakka, LLC. All rights reserved.
* See LICENSE for distribution and usage details.
*/
import 'package:flutter/widgets.dart';
///
enum HandlerType {
route,
function,
}
///
class Handler {
Handler({this.type = HandlerType.route, this.handlerFunc});
final HandlerType type;
final HandlerFunc handlerFunc;
}
///
typedef Route<T> RouteCreator<T>(
RouteSettings route, Map<String, List<String>> parameters);
///
typedef Widget HandlerFunc(
BuildContext context, Map<String, List<String>> parameters);
///
class AppRoute {
String route;
dynamic handler;
TransitionType transitionType;
AppRoute(this.route, this.handler, {this.transitionType});
}
enum TransitionType {
native,
nativeModal,
inFromLeft,
inFromRight,
inFromBottom,
fadeIn,
custom, // if using custom then you must also provide a transition
cupertino,
cupertinoFullScreenDialog,
}
enum RouteMatchType {
visual,
nonVisual,
noMatch,
}
///
class RouteMatch {
RouteMatch(
{this.matchType = RouteMatchType.noMatch,
this.route,
this.errorMessage = "Unable to match route. Please check the logs."});
final Route<dynamic> route;
final RouteMatchType matchType;
final String errorMessage;
}
class RouteNotFoundException implements Exception {
final String message;
final String path;
RouteNotFoundException(this.message, this.path);
@override
String toString() {
return "No registered route was found to handle '$path'";
}
}