Как разместить виджет 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(). Во флаттере доступны два аргумента ящика.
- Ящик (левая сторона)
- 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(),
),
)