DrawerStackController class
author: 郑再红 email: 1096877329@qq.com date: 2024-12-05 DrawerStackController - 抽屉路由栈控制器
使用 GlobalKey 管理抽屉状态,解决 context 依赖和时序问题
示例:
final scaffoldKey = GlobalKey<ScaffoldState>();
final controller = DrawerStackController(
scaffoldKey: scaffoldKey,
routerProxy: RouterProxy.getDrawerInstance(
stackId: 'main-drawer',
pageMap: {'/': HomePage()},
),
config: DrawerConfig(autoOpen: true, autoClose: true),
);
Scaffold(
key: scaffoldKey,
endDrawer: DrawerNavigator(controller: controller),
body: ElevatedButton(
onPressed: () => controller.push(page: SettingsPage()),
),
)
Coordinates a drawer-specific RouterProxy with a ScaffoldState.
Constructors
-
DrawerStackController({required GlobalKey<
ScaffoldState> scaffoldKey, required RouterProxy routerProxy, required DrawerConfig config})
Properties
- config → DrawerConfig
-
抽屉配置
Drawer behavior settings.
final
- hashCode → int
-
The hash code for this object.
no setterinherited
- isDrawerOpen → bool
-
检查抽屉是否打开
Returns whether the configured drawer is currently open.
no setter
-
pages
→ List<
MaterialPage> -
获取当前页面栈
Exposes the current drawer page stack.
no setter
- routerProxy → RouterProxy
-
底层的 RouterProxy 实例,管理页面栈
The router instance that owns the drawer page stack.
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
-
scaffoldKey
→ GlobalKey<
ScaffoldState> -
Scaffold 的 GlobalKey,用于访问 ScaffoldState
The scaffold key used to access the host ScaffoldState.
final
Methods
-
build(
BuildContext context) → Widget - Builds the drawer navigator widget tree.
-
closeDrawer(
) → void - 手动关闭抽屉 Closes the drawer manually.
-
dispose(
) → void - 清理资源 Removes internal listeners.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
openDrawer(
) → void - 手动打开抽屉 Opens the drawer manually.
-
pop<
T> ([T? result]) → void - 弹出当前页面 Pops the current page from the drawer stack.
-
push(
{required Widget page, String? name, Object? arguments, ResultCallback? onResult}) → Future< void> - 推入新页面 Pushes a page onto the drawer stack.
-
pushNamed(
{required String name, Object? arguments, ResultCallback? onResult}) → Future< void> - 根据名称推入新页面 Pushes a named page onto the drawer stack.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited