getDrawerInstance static method
RouterProxy
getDrawerInstance({
- required String stackId,
- Map? pageMap,
- DrawerConfig? drawerConfig,
获取抽屉路由实例(多实例)
用于管理抽屉内的路由栈,支持多个独立的抽屉路由栈
参数:
示例:
final drawerRouter = RouterProxy.getDrawerInstance(
stackId: 'main-drawer',
pageMap: {'/': DrawerHomePage()},
drawerConfig: DrawerConfig(
autoOpen: true,
autoClose: true,
isEndDrawer: true,
),
);
Scaffold(
endDrawer: Container(
width: 300,
child: drawerRouter.build(context),
),
);
// 绑定 Scaffold 的 context(重要!)
drawerRouter.bindDrawerContext(context);
// 使用
drawerRouter.push(page: SettingsPage());
Implementation
static RouterProxy getDrawerInstance({
required String stackId,
Map? pageMap,
DrawerConfig? drawerConfig,
}) {
if (!_drawerInstances.containsKey(stackId)) {
_drawerInstances[stackId] = RouterProxy._(
stackId: stackId,
isMainStack: false,
isDrawerStack: true,
pageMap: pageMap,
drawerConfig: drawerConfig ?? const DrawerConfig(),
);
} else {
// 如果实例已存在,更新 pageMap 和 drawerConfig
final instance = _drawerInstances[stackId]!;
if (pageMap != null) {
instance.pageMap = pageMap;
}
if (drawerConfig != null) {
instance._drawerConfig = drawerConfig;
}
}
return _drawerInstances[stackId]!;
}