You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.5KB

  1. import 'package:farm_tpf/presentation/screens/control_device/sc_control_device.dart';
  2. import 'package:farm_tpf/presentation/screens/home/home.dart';
  3. import 'package:farm_tpf/presentation/screens/plot/sc_plot.dart';
  4. import 'package:farm_tpf/presentation/screens/profile/sc_update_profile.dart';
  5. import 'package:farm_tpf/presentation/screens/scan_barcode/sc_scan_barcode.dart';
  6. import 'package:farm_tpf/utils/const_color.dart';
  7. import 'package:flutter/material.dart';
  8. import 'drawer_user_controller.dart';
  9. import 'home_drawer.dart';
  10. class NavigationHomeScreen extends StatefulWidget {
  11. static Route route() {
  12. return MaterialPageRoute<void>(builder: (_) => NavigationHomeScreen());
  13. }
  14. @override
  15. _NavigationHomeScreenState createState() => _NavigationHomeScreenState();
  16. }
  17. class _NavigationHomeScreenState extends State<NavigationHomeScreen> {
  18. Widget screenView;
  19. DrawerIndex drawerIndex;
  20. @override
  21. void initState() {
  22. drawerIndex = DrawerIndex.Home;
  23. screenView = PlotListScreen();
  24. super.initState();
  25. }
  26. @override
  27. Widget build(BuildContext context) {
  28. return Container(
  29. color: COLOR_CONST.DEFAULT,
  30. child: SafeArea(
  31. top: false,
  32. bottom: false,
  33. child: Scaffold(
  34. backgroundColor: COLOR_CONST.WHITE,
  35. body: DrawerUserController(
  36. screenIndex: drawerIndex,
  37. drawerWidth: MediaQuery.of(context).size.width * 0.75,
  38. onDrawerCall: (DrawerIndex drawerIndexdata) {
  39. changeIndex(drawerIndexdata);
  40. //callback from drawer for replace screen as user need with passing DrawerIndex(Enum index)
  41. },
  42. screenView: screenView,
  43. //we replace screen view as we need on navigate starting screens like MyHomePage, HelpScreen, FeedbackScreen, etc...
  44. ),
  45. ),
  46. ),
  47. );
  48. }
  49. void changeIndex(DrawerIndex drawerIndexdata) {
  50. if (drawerIndex != drawerIndexdata) {
  51. drawerIndex = drawerIndexdata;
  52. if (drawerIndex == DrawerIndex.Home) {
  53. setState(() {
  54. screenView = PlotListScreen();
  55. });
  56. } else if (drawerIndex == DrawerIndex.ControlDevice) {
  57. setState(() {
  58. screenView = ControlDeviceScreen();
  59. });
  60. } else if (drawerIndex == DrawerIndex.ScanBarcode) {
  61. setState(() {
  62. Navigator.of(context)
  63. .push(MaterialPageRoute(builder: (_) => ScanBarcodeScreen()));
  64. });
  65. } else {
  66. //do in your way......
  67. }
  68. }
  69. }
  70. }