import 'package:farm_tpf/presentation/screens/control_device/sc_control_device.dart'; import 'package:farm_tpf/presentation/screens/home/home.dart'; import 'package:farm_tpf/presentation/screens/profile/sc_update_profile.dart'; import 'package:farm_tpf/presentation/screens/scan_barcode/sc_scan_barcode.dart'; import 'package:farm_tpf/utils/const_color.dart'; import 'package:flutter/material.dart'; import 'drawer_user_controller.dart'; import 'home_drawer.dart'; class NavigationHomeScreen extends StatefulWidget { static Route route() { return MaterialPageRoute(builder: (_) => NavigationHomeScreen()); } @override _NavigationHomeScreenState createState() => _NavigationHomeScreenState(); } class _NavigationHomeScreenState extends State { Widget screenView; DrawerIndex drawerIndex; @override void initState() { drawerIndex = DrawerIndex.Home; screenView = HomePage(); super.initState(); } @override Widget build(BuildContext context) { return Container( color: COLOR_CONST.DEFAULT, child: SafeArea( top: false, bottom: false, child: Scaffold( backgroundColor: COLOR_CONST.WHITE, body: DrawerUserController( screenIndex: drawerIndex, drawerWidth: MediaQuery.of(context).size.width * 0.75, onDrawerCall: (DrawerIndex drawerIndexdata) { changeIndex(drawerIndexdata); //callback from drawer for replace screen as user need with passing DrawerIndex(Enum index) }, screenView: screenView, //we replace screen view as we need on navigate starting screens like MyHomePage, HelpScreen, FeedbackScreen, etc... ), ), ), ); } void changeIndex(DrawerIndex drawerIndexdata) { if (drawerIndex != drawerIndexdata) { drawerIndex = drawerIndexdata; if (drawerIndex == DrawerIndex.Home) { setState(() { screenView = HomePage(); }); } else if (drawerIndex == DrawerIndex.ControlDevice) { setState(() { screenView = ControlDeviceScreen(); }); } else if (drawerIndex == DrawerIndex.ScanBarcode) { setState(() { Navigator.of(context) .push(MaterialPageRoute(builder: (_) => ScanBarcodeScreen())); }); } else { //do in your way...... } } } }