Как разместить виджет Drawer справа

Как разместить виджет Drawer справа. Также возможно разместить два виджета Drawer на одной странице по обе стороны от панели приложения.

Widget build(BuildContext context){
 return Scaffold(
  drawer: Drawer(
    child: ListView(
      children: <Widget>[
        ListTile(
          leading: Icon(Icons.shopping_cart),
          title: Text('Checkout'),
          onTap: (){
            Navigator.pushNamed(context, '/home');
          },
        ),
        ListTile(
          leading: Icon(Icons.report),
          title: Text('Transactions'),
          onTap: (){
            Navigator.pushNamed(context, '/transactionsList');
          },
        ),
      ]
    )
  ),
  body: SingleChildScrollView(
    child: Column(
      children : [
        _buildOrderHeader(),
        _buildOrderDetails(context),
      ]
    )
  )
);

}"

4 ответа

Решение

Используя endDrawer: ... вместо или в дополнение к drawer: ... установить ящик.

Смотрите также https://docs.flutter.io/flutter/material/Scaffold/endDrawer.html

Чтобы открыть панель навигации с правой стороны с помощью Dart Null Safety, вы должны использовать endDrawer(). Во флаттере доступны два аргумента ящика.

  1. Ящик (левая сторона)
  2. endDrawer (Правая сторона) вы можете увидеть пример для endDrawer.

Чтобы открыть endDrawer, нажмите кнопку.

       _scaffoldKey.currentState!.openEndDrawer();

Создать глобальный ключ

      final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();

внутри Build ()

      Scaffold(
          backgroundColor: backgroundcolor_cust,
          key: _scaffoldKey,
          endDrawer: Drawer(
            elevation: 16.0,
            child: leftDrawerMenu(context, user_phone, cart_count),
          ),
  endDrawer:Drawer(child:Center(child:Columun(   children: <Widget>[
          Text('End Drawer)           ],
      ),))
  

Если вы хотите оставить кнопку справа, а ящик слева, добавьте кнопку гамбургера внутри контейнера, чтобы кнопка гамбургера была справа, а панель навигации оставалась слева. (не рекомендуется)

new Container( alignment: Alignment.topRight, margin: EdgeInsets.only(top: 20.0, right: 10.0), child: IconButton( icon: Icon(Icons.menu, size: 24, color: Colors.white,), onPressed: () => scaffoldKey.currentState.openDrawer(), ), )

Другие вопросы по тегам