drawer static method

Drawer drawer(
  1. BuildContext context, {
  2. DrawerDelegate delegate = const DrawerChildListDelegate(children: []),
})

标准Drawer创建

  • 包含头部信息。
  • 包含菜单项(关于,帮助)。
  • 包含版本标注(Footer)。
  • 包含背景(Comming soon)

Implementation

static Drawer drawer(
  BuildContext context, {
  DrawerDelegate delegate = const DrawerChildListDelegate(children: []),
}) {
  Widget _builderHeader() {
    // if (delegate.buildHeader() != null) {
    //   return Container();
    // }
    return delegate.buildHeader() ?? Container();
    // if (delegate.enableHeader()) {
    //   if (delegate.buildHeader() != null) {
    //     // 默认自定义
    //     return Container(
    //       width: double.infinity,
    //       child: DrawerHeader(
    //         padding: EdgeInsets.zero,
    //         margin: EdgeInsets.zero,
    //         decoration: BoxDecoration(
    //             gradient: LinearGradient(colors: [
    //           Colors.black12,
    //           Colors.orangeAccent,
    //         ])),
    //         child: Text("header"),
    //       ),
    //     );
    //   } else {
    //     // 自定义
    //     return Container(
    //       width: double.infinity,
    //       child: DrawerHeader(
    //         child: Text(""),
    //       ),
    //     );
    //   }
    // } else {
    //   return Container(
    //     width: double.infinity,
    //   );
    // }
  }

  List<Widget> _buildList(BuildContext context) {
    return delegate.buildList(context);
  }

  Widget _buildFooter() {
    return delegate.buildFooter() ?? Container();
  }

  return Drawer(
    child: Column(
      mainAxisAlignment: MainAxisAlignment.spaceBetween,
      children: [
        // header
        _builderHeader(),
        // list buttons
        Expanded(
          child: ListView(
            children: _buildList(context),
          ),
        ),
        // footer
        _buildFooter(),
      ],
    ),
  );
}