closeMainDrawer method

void closeMainDrawer({
  1. bool isEndDrawer = false,
})

关闭主页面的抽屉(主路由栈可用)

用于主路由栈控制 Scaffold 的抽屉

参数:

  • isEndDrawer: true 表示右侧抽屉,false 表示左侧抽屉

示例:

final router = RouterProxy.getInstance();
router.closeMainDrawer(isEndDrawer: true); // 关闭右侧抽屉
router.closeMainDrawer(isEndDrawer: false); // 关闭左侧抽屉

Implementation

void closeMainDrawer({bool isEndDrawer = false}) {
  if (!isMainStack) {
    debugPrint(
        'Warning: closeMainDrawer() should only be called on main stack');
    return;
  }

  final state = _mainScaffoldState;
  if (state == null) {
    debugPrint(
        'Warning: Main ScaffoldState not available. Ensure the current page contains a Scaffold, or call bindMainScaffoldKey() explicitly.');
    return;
  }

  try {
    if (isEndDrawer) {
      if (state.isEndDrawerOpen) {
        state.closeEndDrawer();
      }
    } else {
      if (state.isDrawerOpen) {
        state.closeDrawer();
      }
    }
  } catch (e) {
    debugPrint('Error closing main drawer: $e');
  }
}