Current File : /home/tradevaly/www/fresh/lib/view/screens/menu/main_screen.dart
import 'package:flutter/material.dart';
import 'package:flutter_grocery/helper/html_type.dart';
import 'package:flutter_grocery/helper/responsive_helper.dart';
import 'package:flutter_grocery/helper/route_helper.dart';
import 'package:flutter_grocery/localization/language_constrants.dart';
import 'package:flutter_grocery/provider/auth_provider.dart';
import 'package:flutter_grocery/provider/cart_provider.dart';
import 'package:flutter_grocery/provider/location_provider.dart';
import 'package:flutter_grocery/provider/profile_provider.dart';
import 'package:flutter_grocery/provider/splash_provider.dart';
import 'package:flutter_grocery/utill/app_constants.dart';
import 'package:flutter_grocery/utill/dimensions.dart';
import 'package:flutter_grocery/utill/images.dart';
import 'package:flutter_grocery/utill/styles.dart';
import 'package:flutter_grocery/view/screens/address/address_screen.dart';
import 'package:flutter_grocery/view/screens/cart/cart_screen.dart';
import 'package:flutter_grocery/view/screens/category/all_category_screen.dart';
import 'package:flutter_grocery/view/screens/chat/chat_screen.dart';
import 'package:flutter_grocery/view/screens/coupon/coupon_screen.dart';
import 'package:flutter_grocery/view/screens/home/home_screens.dart';
import 'package:flutter_grocery/view/screens/html/html_viewer_screen.dart';
import 'package:flutter_grocery/view/screens/menu/widget/custom_drawer.dart';
import 'package:flutter_grocery/view/screens/order/my_order_screen.dart';
import 'package:flutter_grocery/view/screens/settings/setting_screen.dart';
import 'package:flutter_grocery/view/screens/wishlist/wishlist_screen.dart';
import 'package:provider/provider.dart';

class MainScreen extends StatefulWidget {
  final CustomDrawerController drawerController;
  MainScreen({@required this.drawerController});

  @override
  _MainScreenState createState() => _MainScreenState();
}

class _MainScreenState extends State<MainScreen> {
  List<Widget> _screens = [];
  List<String> _keys = [];

  @override
  void initState() {
    super.initState();

    final bool _isLoggedIn = Provider.of<AuthProvider>(context, listen: false).isLoggedIn();
    if(_isLoggedIn) {
      Provider.of<ProfileProvider>(context, listen: false).getUserInfo(context);
      Provider.of<LocationProvider>(context, listen: false).initAddressList(context);

    } else{
      Provider.of<CartProvider>(context, listen: false).getCartData();
    }

    _screens = [
      HomeScreen(),
      AllCategoryScreen(),
      CartScreen(),
      WishListScreen(),
      MyOrderScreen(),
      AddressScreen(),
      CouponScreen(),
      ChatScreen(),
      SettingsScreen(),
      HtmlViewerScreen(htmlType: HtmlType.TERMS_AND_CONDITION),
      HtmlViewerScreen(htmlType: HtmlType.PRIVACY_POLICY),
      HtmlViewerScreen(htmlType: HtmlType.ABOUT_US),
    ];
    _keys = [
      'home',
      'all_categories',
      'shopping_bag',
      'favourite',
      'my_order',
      'address',
      'coupon',
      'live_chat',
      'settings',
      'terms_and_condition',
      'privacy_policy',
      'about_us',
    ];
  }

  @override
  Widget build(BuildContext context) {
    return Consumer<SplashProvider>(
      builder: (context, splash, child) {
        return WillPopScope(
          onWillPop: () async {
            if (splash.pageIndex != 0) {
              splash.setPageIndex(0);
              return false;
            } else {
              return true;
            }
          },
          child: Consumer<LocationProvider>(
            builder: (context, locationProvider, child) => Scaffold(
              appBar: ResponsiveHelper.isDesktop(context) ? null : AppBar(
                backgroundColor: Theme.of(context).cardColor,
                leading: IconButton(
                    icon: Image.asset(Images.more_icon, color: Theme.of(context).primaryColor, height: 30, width: 30),
                    onPressed: () {
                      widget.drawerController.toggle();
                    }),
                title: splash.pageIndex == 0 ? Row(children: [
                  Image.asset(Images.app_logo, width: 25),
                  SizedBox(width: Dimensions.PADDING_SIZE_SMALL),
                  Expanded(child: Text(
                    AppConstants.APP_NAME, maxLines: 1, overflow: TextOverflow.ellipsis,
                    style: poppinsMedium.copyWith(color: Theme.of(context).primaryColor),
                  )),
                ]) : Text(
                  getTranslated(_keys[splash.pageIndex], context),
                  style: poppinsMedium.copyWith(fontSize: Dimensions.FONT_SIZE_LARGE, color: Theme.of(context).primaryColor),
                ),

                actions: splash.pageIndex == 0 ? [
                  IconButton(
                      icon: Stack(clipBehavior: Clip.none, children: [
                        Image.asset(Images.cart_icon, color: Theme.of(context).textTheme.bodyText1.color, width: 25),
                        Positioned(
                          top: -7,
                          right: -2,
                          child: Container(
                            padding: EdgeInsets.all(3),
                            decoration: BoxDecoration(shape: BoxShape.circle, color: Theme.of(context).primaryColor),
                            child: Text('${Provider.of<CartProvider>(context).cartList.length}',
                                style: TextStyle(color: Theme.of(context).cardColor, fontSize: 10)),
                          ),
                        ),
                      ]),
                      onPressed: () {
                       ResponsiveHelper.isMobilePhone()? splash.setPageIndex(2): Navigator.pushNamed(context, RouteHelper.cart);
                      }),
                  IconButton(
                      icon: Icon(Icons.search, size: 30, color: Theme.of(context).textTheme.bodyText1.color),
                      onPressed: () {
                        Navigator.pushNamed(context, RouteHelper.searchProduct);
                      }),
                ]
                    : splash.pageIndex == 2
                    ? [
                  Center(
                      child: Consumer<CartProvider>(
                        builder: (context, cartProvider, _) {
                          return Text('${cartProvider.cartList.length} ${getTranslated('items', context)}',
                              style: poppinsMedium.copyWith(color: Theme.of(context).primaryColor));
                        }
                      )),
                  SizedBox(width: 20)
                ] : null,
              ),

              body: _screens[splash.pageIndex],
            ),
          ),
        );
      },
    );
  }
}