AppRouter constructor
- UnknownRouteQueryBuilder? unknown,
- BootRouteQueryBuilder? boot,
- String? initialPath,
- RouteQuery? initialQuery,
- required List<
RouteQueryBuilder> pages, - List<
RedirectQuery> redirect = const [], - List<
NavigatorObserver> observers = const [], - int redirectLimit = 5,
- String? restorationScopeId,
- TransitionQuery? defaultTransitionQuery,
- bool reportsRouteUpdateToEngine = true,
- Widget backgroundWidget = const Scaffold(),
- List<
LoggerAdapter> loggerAdapters = const [], - bool nested = false,
Controller to define routing for the entire app.
You can define the routing for the entire app by passing it to routerConfig
in MaterialApp.router.
The controller itself can also be manipulated, and page transitions can be performed directly by executing push, replace, and pop.
It is also possible to get the AppRouter object itself with AppRouter.of.
By executing setPathUrlStrategy
, it is possible to use URLs with the web hash (#) removed.
Adapters for loggers can be applied to routing in loggerAdapters
.
アプリ全体のルーティングを定義するためのコントローラー。
MaterialApp.routerのrouterConfig
に渡すことでアプリ全体のルーティングを定義することができます。
また、このコントローラー自体を操作することが可能でpushやreplace、popを実行することでページ遷移を直接行うことが可能です。
また、AppRouter.ofでAppRouterのオブジェクト自体を取得することも可能です。
setPathUrlStrategy
を実行することでWebのハッシュ(#)を消したURLを利用することが可能になります。
loggerAdapters
でロガー用のアダプターをルーティングに適用することができます。
final appRouter = AppRouter(
pages: [
ListPage.query,
DetailPage.query,
]
);
void main(){
runApp(
const MainPage(),
);
}
class MainPage extends StatelessWidget {
const MainPage();
@override
Widget build(BuilcContext context){
return MaterialApp.router(
routerConfig: appRouter,
title: "Title",
);
}
}
Implementation
AppRouter({
UnknownRouteQueryBuilder? unknown,
BootRouteQueryBuilder? boot,
String? initialPath,
RouteQuery? initialQuery,
required List<RouteQueryBuilder> pages,
List<RedirectQuery> redirect = const [],
List<NavigatorObserver> observers = const [],
int redirectLimit = 5,
GlobalKey<NavigatorState>? navigatorKey,
String? restorationScopeId,
TransitionQuery? defaultTransitionQuery,
bool reportsRouteUpdateToEngine = true,
Widget backgroundWidget = const Scaffold(),
List<LoggerAdapter> loggerAdapters = const [],
bool nested = false,
}) : _loggerAdapters = loggerAdapters {
navigatorKey ??= GlobalKey<NavigatorState>();
_config = _AppRouterConfig(
pages: pages,
redirect: redirect,
boot: boot,
unknown: unknown,
navigatorKey: navigatorKey,
redirectLimite: redirectLimit,
defaultTransitionQuery: defaultTransitionQuery,
reportsRouteUpdateToEngine: reportsRouteUpdateToEngine,
backgroundWidget: backgroundWidget,
nested: nested,
);
_routerDelegate = _AppRouterDelegate(
router: this,
observers: [this, ...observers],
restorationScopeId: restorationScopeId,
);
_routeInformationParser = _AppRouteInformationParser(this);
_hidden = nested || initialQuery?.hidden == true;
_initialPath = initialPath;
_initialQuery = initialQuery;
}