import 'package:country_code_picker/country_code.dart'; import 'package:fcs/model/main_model.dart'; import 'package:fcs/pages/discount_list.dart'; import 'package:fcs/pages/payment_method_page.dart'; import 'package:fcs/pages/shipment_list.dart'; import 'package:fcs/pages_fcs/box_list.dart'; import 'package:fcs/pages_fcs/delivery_list.dart'; import 'package:fcs/pages_fcs/package_list.dart'; import 'package:fcs/widget/bottom_up_page_route.dart'; import 'package:fcs/widget/localization/transalation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_icons/flutter_icons.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:intl/intl.dart'; import 'package:logging/logging.dart'; import 'package:provider/provider.dart'; import 'dart:math' as math; import 'package:fcs/charts/bar_chart.dart'; import 'package:fcs/charts/delivery_do_line.dart'; import 'package:fcs/charts/delivery_do_summary.dart'; import 'package:fcs/charts/delivery_line.dart'; import 'package:fcs/charts/delivery_summary.dart'; import 'package:fcs/charts/do_line.dart'; import 'package:fcs/charts/po_balance_chart.dart'; import 'package:fcs/charts/po_line.dart'; import 'package:fcs/charts/revenue_line.dart'; import 'package:fcs/model/language_model.dart'; import 'package:fcs/model/product_model.dart'; import 'package:fcs/pages/banks/banks.dart'; import 'package:fcs/pages/buyer_list.dart'; import 'package:fcs/pages/contact.dart'; import 'package:fcs/pages/delivery/delivery_list.dart'; import 'package:fcs/pages/manual/manual_page.dart'; import 'package:fcs/pages/notification_list.dart'; import 'package:fcs/pages/term.dart'; import 'package:fcs/reports/report_list.dart'; import 'package:fcs/widget/banner.dart'; import 'package:fcs/widget/local_text.dart'; import 'package:fcs/widget/localization/app_translations.dart'; import 'package:fcs/widget/offline_redirect.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:intl/intl.dart'; import 'package:logging/logging.dart'; import 'package:provider/provider.dart'; import '../theme/theme.dart'; import 'announcement_list.dart'; import 'buying_online.dart'; import 'customer_list.dart'; import 'do/do_list.dart'; import 'invoice/invoce_list.dart'; import 'my_registeration.dart'; import 'pd/pd_list.dart'; import 'products_list.dart'; import 'profile_page.dart'; import 'signin_page.dart'; import 'staff_list.dart'; import 'fcs_profile_page.dart'; import 'pd/pd_list.dart'; import 'pickup_list.dart'; import 'products_list.dart'; import 'profile_page.dart'; import 'shipment_rates.dart'; import 'storage/storage_list.dart'; import 'user_list.dart'; final msgLog = Logger('backgroundMessageHandler'); class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } typedef BtnCallback(); class _HomePageState extends State { final log = Logger('_HomePageState'); bool login = false; bool customer = true; @override void initState() { super.initState(); } void dispose() { super.dispose(); } static final List chartDropdownItems = [ 'Last 7 days', 'Last month', 'Last three months' ]; String actualDropdown = chartDropdownItems[0]; int actualChart = 0; final numberFormatter = new NumberFormat("#,###"); String pin; List isSelected = [true, false]; @override Widget build(BuildContext context) { login = Provider.of(context).isLogin(); var owner = Provider.of(context).isOwner(); var customer = Provider.of(context).isCustomer(); final packagesBtn = _buildBtn2("package.name", icon: Octicons.package, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(PackageList()))); final boxesBtn = _buildBtn2("boxes.name", icon: MaterialCommunityIcons.package, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(BoxList()))); final pickUpBtn = _buildBtn2("pickup", icon: SimpleLineIcons.direction, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(PickUpList()))); final shipmentCostBtn = _buildBtn2("rate", icon: FontAwesomeIcons.calculator, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(ShipmentRates()))); final fcsProfileBtn = _buildBtn2("fcs.btn", // imgIcon: Image.asset("assets/logo_btn.png", height: 25,color:Colors.white), icon: MaterialCommunityIcons.home_city, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(FCSProfilePage()))); final shipmentBtn = _buildBtn2("shipment.title", icon: Ionicons.ios_airplane, imgIcon: Image.asset( "assets/truck.png", width: 50, height: 50, color: primaryColor, ), btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(ShipmentList()))); final buyingBtn = _buildBtn2("buy_online", icon: MaterialCommunityIcons.cart_outline, btnCallback: () { Navigator.push(context, BottomUpPageRoute(BuyingOnlinePage()) // MaterialPageRoute(builder: (context) => BuyingOnlinePage()), ); }); final notiBtn = _buildBtn2("message.btn", icon: Icons.message, btnCallback: () { Navigator.push( context, BottomUpPageRoute(NotificationList()), ); }); final staffBtn = _buildBtn2("staff.title", icon: MaterialCommunityIcons.worker, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(StaffList()))); final customersBtn = _buildBtn2("customers.btn", icon: Feather.users, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(CustomerList()))); final invoicesBtn = _buildBtn2("invoices.btn", icon: FontAwesomeIcons.fileInvoice, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(InvoiceList()))); final paymentMethodBtn = _buildBtn2("payment.method.btn", icon: FontAwesomeIcons.creditCard, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(PaymentMethodPage()))); final discountBtn = _buildBtn2("discount.btn", icon: Entypo.price_ribbon, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(DiscountList()))); final termBtn = _buildBtn2("term.btn", icon: FontAwesomeIcons.info, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(Term()))); final deliveryBtn = _buildBtn2("delivery.title", icon: MaterialCommunityIcons.truck_fast, btnCallback: () => Navigator.of(context).push(BottomUpPageRoute(DeliverList()))); List widgets = []; customer ? widgets.add(buyingBtn) : ""; customer || owner ? widgets.add(pickUpBtn) : ""; owner ? widgets.add(shipmentBtn) : ""; customer || owner ? widgets.add(notiBtn) : ""; owner ? widgets.add(staffBtn) : ""; owner ? widgets.add(fcsProfileBtn) : ""; widgets.add(shipmentCostBtn); customer || owner ? widgets.add(packagesBtn) : ""; owner ? widgets.add(boxesBtn) : ""; owner ? widgets.add(deliveryBtn) : ""; owner ? widgets.add(customersBtn) : ""; customer || owner ? widgets.add(invoicesBtn) : ""; owner ? widgets.add(paymentMethodBtn) : ""; owner ? widgets.add(discountBtn) : ""; // widgets.add(termBtn); return OfflineRedirect( child: FlavorBanner( child: Scaffold( appBar: AppBar( elevation: 0, backgroundColor: primaryColor, title: ClipRRect( child: Image.asset("assets/logo.jpg", height: 40), borderRadius: new BorderRadius.circular(30.0), ), actions: login ? [ ToggleButtons( children: [ Image.asset( 'icons/flags/png/us.png', package: 'country_icons', fit: BoxFit.fitWidth, width: 25, ), Image.asset( 'icons/flags/png/mm.png', package: 'country_icons', fit: BoxFit.fitWidth, width: 25, ) ], onPressed: _langChange, isSelected: isSelected, ), IconButton( onPressed: () { Navigator.push( context, MaterialPageRoute( builder: (context) => Profile()), ); }, iconSize: 30, icon: Icon(Icons.account_circle), ), ] : [ ToggleButtons( children: [ Image.asset( 'icons/flags/png/us.png', package: 'country_icons', fit: BoxFit.fitWidth, width: 25, ), Image.asset( 'icons/flags/png/mm.png', package: 'country_icons', fit: BoxFit.fitWidth, width: 25, ) ], onPressed: _langChange, isSelected: isSelected, ), FlatButton( onPressed: () { Navigator.of(context) .push(BottomUpPageRoute(SigninPage())); }, // iconSize: 30, child: Text( "Sign In", style: siginButtonStyle, ), ), ]), body: Container( decoration: BoxDecoration( gradient: // RadialGradient( // center: const Alignment(-0.7, 0.6), // near the top right // radius: 0.6, // colors: [ // secondaryColor, // primaryColor, // yellow sun // ], // stops: [0.4, 1.0], // ) LinearGradient( begin: Alignment.topCenter, end: Alignment .bottomCenter, // 10% of the width, so there are ten blinds. colors: [ Color(0xd0272262), Color(0xfa272262), // Color(0xa0ff4400), // secondaryColor, ], // whitish to gray ), // SweepGradient( // center: FractionalOffset.centerLeft, // startAngle: 0.0, // endAngle: math.pi * 2, // colors: const [ // secondaryColor, // primaryColor, // secondaryColor, // primaryColor, // secondaryColor, // ], // stops: const [0.0, 0.25, 0.5, 0.75, 1.0], // ), ), child: Column( children: [ Expanded( child: ListView(children: [ Wrap( alignment: WrapAlignment.center, children: widgets, ), ]), ), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ // _buildSmallButton( // "Policies", FontAwesomeIcons.fileContract), InkWell( onTap: () { Navigator.of(context).push( MaterialPageRoute(builder: (_) => Contact())); }, child: _buildSmallButton( "Contact Us", SimpleLineIcons.support), ), InkWell( onTap: () { Navigator.of(context).push( MaterialPageRoute(builder: (_) => Term())); }, child: _buildSmallButton( "Terms of service", Icons.info_outline), ), ], ) ], ))), ), ); } _langChange(index) { var languageModel = Provider.of(context); languageModel.saveLanguage(Translation().supportedLanguages[index]); setState(() { isSelected.asMap().forEach((i, e) { isSelected[i] = false; }); isSelected[index] = !isSelected[index]; }); } Widget _buildTile(Widget child, {Function() onTap}) { return Material( elevation: 0, borderRadius: BorderRadius.circular(12.0), // shadowColor: Colors.transparent, color: Colors.transparent, child: InkWell( onTap: onTap != null ? () => onTap() : () { log.info('Not set yet'); }, child: child)); } Widget _buildBtn(String title, {Image imgIcon, IconData icon, BtnCallback btnCallback}) { var languageModel = Provider.of(context); return _buildTile( Padding( padding: const EdgeInsets.all(5.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ icon != null ? Material( child: Padding( padding: EdgeInsets.only(top: 10), child: Icon(icon, color: primaryColor, size: 35.0))) : Container( padding: EdgeInsets.only(top: 3), child: imgIcon, ), Padding(padding: EdgeInsets.only(bottom: 10.0)), Text(AppTranslations.of(context).text(title), style: languageModel.isEng ? TextStyle( color: Colors.black, fontWeight: FontWeight.w700, fontSize: 12.0) : TextStyle( color: Colors.black, fontWeight: FontWeight.w700, fontSize: 12.0, fontFamily: "MyanmarUnicode")), ]), ), onTap: btnCallback, ); } Widget _buildBtn2(String title, {Image imgIcon, IconData icon, BtnCallback btnCallback}) { var languageModel = Provider.of(context); return Container( width: 100, height: 100, decoration: new BoxDecoration( color: Colors.transparent, //new Color.fromRGBO(255, 0, 0, 0.0), borderRadius: new BorderRadius.only( topLeft: const Radius.circular(40.0), topRight: const Radius.circular(40.0))), // color: Colors.transparent, child: Padding( padding: const EdgeInsets.all(5.0), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ // Padding( // padding: EdgeInsets.only(top: 10), // child: Icon(icon, color: Colors.white, size: 35.0)), // Padding(padding: EdgeInsets.only(bottom: 10.0)), ClipOval( child: Material( color: Colors.black54, // button color child: InkWell( splashColor: primaryColor, // inkwell color child: SizedBox( width: 60, height: 60, child: icon == null ? Container(width: 10, height: 10, child: imgIcon) : Icon(icon, color: Colors.white, size: 30)), onTap: btnCallback, ), ), ), FittedBox( fit: BoxFit.fitWidth, child: Text(AppTranslations.of(context).text(title), style: languageModel.isEng ? TextStyle( color: Colors.white, fontWeight: FontWeight.w500, fontSize: 14.0, fontFamily: "Roboto") : TextStyle( color: Colors.white, fontWeight: FontWeight.w700, fontSize: 12.0, fontFamily: "MyanmarUnicode")), ), ]), ), ); } Widget _buildSmallButton(String text, IconData iconData) { return Padding( padding: const EdgeInsets.all(18.0), child: Row( children: [ IconButton( icon: Icon(iconData, color: Colors.white70), color: Colors.white70, onPressed: null), // RaisedButton(onPressed: ()=>{},child: Row( // children: [ // IconButton( // icon: Icon(iconData, ), // onPressed: null), // Text(text), // ], // ),color: Colors.transparent, // focusColor: Colors.transparent,), Text( text, style: subMenuStyle, ) ], ), ); } }