import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:satu/core/redux/actions/nav_actions.dart'; import 'package:satu/core/redux/actions/user_actions.dart'; import 'package:satu/core/redux/store.dart'; import 'package:satu/shared/app_colors.dart'; import 'package:satu/shared/ui_helpers.dart'; import 'package:satu/views/settings/setting_view.dart'; import 'package:satu/views/work/work_view.dart'; class AppDrawer extends StatelessWidget { @override Widget build(BuildContext context) { return Drawer( child: ListView( padding: EdgeInsets.zero, children: [ _createHeader(), _createDrawerItem(icon: Icons.contacts, text: 'Касса', onTap: () { Navigator.of(context).pop(); Redux.store!.dispatch(navigateDrawer(WorkView)); }), Divider(), ExpansionTile( title: Text('Справочники'), // ignore: prefer_const_constructors childrenPadding: const EdgeInsets.only(left: 18.0), children: [ ListTile( title: const Text('Категории'), onTap: () { Navigator.of(context).pop(); }, ), ListTile( title: const Text('Товары'), onTap: () { Navigator.of(context).pop(); }, ), ListTile( title: const Text('Контрагенты'), onTap: () { Navigator.of(context).pop(); }, ), ], ), _createDrawerItem(icon: Icons.settings, text: 'Настройки', onTap: () { Navigator.of(context).pop(); Redux.store!.dispatch(navigateDrawer(SettingsView)); }), Divider(), _createDrawerItem(icon: Icons.bug_report, text: 'Сообщить об ошибке'), verticalSpaceMedium, _createDrawerItem(icon: Icons.exit_to_app, text: 'Выйти из аккаунта', onTap: () async { Redux.store!.dispatch(logout); }), ListTile( title: Text('0.0.1'), ), ], ), ); } Widget _createHeader() { return DrawerHeader( margin: EdgeInsets.zero, padding: EdgeInsets.zero, decoration: BoxDecoration( color: primaryColor ), // decoration: BoxDecoration( // image: DecorationImage( // fit: BoxFit.fill, // image: AssetImage('assets/images/halyk-bank.png'))), child: Stack(children: [ Positioned( bottom: 12.0, left: 16.0, child: Text('Сату - онлайн касса', style: TextStyle( color: Colors.white, fontSize: 20.0, fontWeight: FontWeight.w500) ) ), ])); } Widget _createDrawerItem( {required IconData icon, required String text, GestureTapCallback? onTap}) { return ListTile( title: Row( children: [ Icon(icon), Padding( padding: EdgeInsets.only(left: 8.0), child: Text(text), ) ], ), onTap: onTap, ); } }