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.3KB

  1. import 'package:farm_tpf/presentation/screens/home/home.dart';
  2. import 'package:farm_tpf/presentation/screens/profile/sc_update_profile.dart';
  3. import 'package:farm_tpf/presentation/screens/scan_barcode/sc_scan_barcode.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 = HomePage();
  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 = HomePage();
  53. });
  54. } else if (drawerIndex == DrawerIndex.Setting) {
  55. setState(() {
  56. screenView = UpdateProfileScreen();
  57. });
  58. } else if (drawerIndex == DrawerIndex.ScanBarcode) {
  59. setState(() {
  60. Navigator.of(context)
  61. .push(MaterialPageRoute(builder: (_) => ScanBarcodeScreen()));
  62. });
  63. } else {
  64. //do in your way......
  65. }
  66. }
  67. }
  68. }