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.

76 lines
2.2KB

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