import 'dart:convert'; import 'package:active_ecommerce_seller_app/custom/buttons.dart'; import 'package:active_ecommerce_seller_app/custom/localization.dart'; import 'package:active_ecommerce_seller_app/custom/my_widget.dart'; import 'package:active_ecommerce_seller_app/custom/route_transaction.dart'; import 'package:active_ecommerce_seller_app/custom/toast_component.dart'; import 'package:active_ecommerce_seller_app/data_model/shop_info_response.dart'; import 'package:active_ecommerce_seller_app/helpers/shared_value_helper.dart'; import 'package:active_ecommerce_seller_app/helpers/shimmer_helper.dart'; import 'package:active_ecommerce_seller_app/helpers/shop_info_helper.dart'; import 'package:active_ecommerce_seller_app/my_theme.dart'; import 'package:active_ecommerce_seller_app/repositories/auth_repository.dart'; import 'package:active_ecommerce_seller_app/repositories/shop_repository.dart'; import 'package:active_ecommerce_seller_app/screens/change_language.dart'; import 'package:active_ecommerce_seller_app/screens/commission_history.dart'; import 'package:active_ecommerce_seller_app/screens/login.dart'; import 'package:active_ecommerce_seller_app/screens/main.dart'; import 'package:active_ecommerce_seller_app/screens/orders.dart'; import 'package:active_ecommerce_seller_app/screens/product/products.dart'; import 'package:active_ecommerce_seller_app/screens/profile.dart'; import 'package:active_ecommerce_seller_app/screens/uploads/upload_file.dart'; import 'package:active_ecommerce_seller_app/screens/whole_sale_product/products.dart'; import 'package:flutter/material.dart'; import 'package:route_transitions/route_transitions.dart'; import 'package:toast/toast.dart'; class Account extends StatefulWidget { const Account({Key? key}) : super(key: key); @override _AccountState createState() => _AccountState(); } class _AccountState extends State with TickerProviderStateMixin{ late AnimationController controller; Animation? animation; bool? _verify=false; bool _faceData= false; String? _url="",_name="...",_email="...",_rating="...",_verified="..",_package="",_packageImg=""; Future _getAccountInfo() async { ShopInfoHelper().setShopInfo(); setData(); return true; } getSellerPackage()async{ var _shopInfo = await ShopRepository().getShopInfo(); _package=_shopInfo.shopInfo!.sellerPackage; _packageImg=_shopInfo.shopInfo!.sellerPackageImg; print(_packageImg); setState(() { }); } setData(){ //Map json = jsonDecode(shop_info.$.toString()); _url=shop_logo.$; _name=shop_name.$; _email=seller_email.$; _verify=shop_verify.$; _verified=_verify!?"Verified":"Unverified"; _rating=shop_rating.$; _faceData = true; setState(() {}); } logoutReq()async{ var response = await AuthRepository().getLogoutResponse(); if(response.result!){ access_token.$=""; access_token.save(); is_logged_in.$=false; is_logged_in.save(); Navigator.pushAndRemoveUntil( context, PageRouteBuilder( pageBuilder: (context, animation, secondaryAnimation) => Login(), transitionsBuilder: (context, animation, secondaryAnimation, child) { return FadeTransition( opacity: animation, child: child, ); }), (route) => false, ); }else{ ToastComponent.showDialog(response.message!, gravity: Toast.center, duration: 3, textStyle: TextStyle(color: MyTheme.black), ); } } faceData(){ _getAccountInfo(); getSellerPackage(); } loadData()async{ if(shop_name.$==""){ _getAccountInfo(); }else{ setData(); } } @override void initState() { if(seller_package_addon.$) { getSellerPackage(); } loadData(); controller = AnimationController(duration: Duration(seconds: 1), vsync: this); animation = Tween(begin: 0.5, end: 1.0).animate(controller); super.initState(); } @override Widget build(BuildContext context) { return Container( color: MyTheme.app_accent_color, child: SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // This is the back button buildBackButtonContainer(context), Container( color: MyTheme.app_accent_color_extra_light, height: 1, ), SizedBox(height: 20,), //header Container( padding: EdgeInsets.symmetric(horizontal: 15), child: Row( children: [ MyWidget.roundImageWithPlaceholder(width: 48.0,height: 48.0,borderRadius:24.0,url: _url ,backgroundColor: MyTheme.noColor), /*Container( height: 48, width: 48, decoration: BoxDecoration( borderRadius: BorderRadius.circular(24), image: DecorationImage( image: NetworkImage( "https://demo.activeitzone.com/ecommerce_flutter_demo/public/uploads/all/999999999920220118113113.jpg"), fit: BoxFit.cover)), ),*/ const SizedBox(width: 10,), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(""+_name.toString(),style: TextStyle(fontSize: 14,fontWeight: FontWeight.w500,color: MyTheme.white),), Text(""+_email.toString(),style: TextStyle(fontSize: 12,fontWeight: FontWeight.w500,color: MyTheme.app_accent_border.withOpacity(0.8)),), SizedBox( height: 10, ), Row(children: [ Image.asset('assets/icon/star.png',width: 16,height: 15,), SizedBox(width: 5,), Text(""+_rating!,style: TextStyle(fontSize: 12,color: MyTheme.app_accent_border),), SizedBox(width: 10,), // MyWidget.roundImageWithPlaceholder(width: 16.0,height: 16.0,borderRadius:10.0,url: _verifiedImg ), _faceData?Image.asset(_verify!?'assets/icon/verify.png':'assets/icon/unverify.png',width: 16,height: 15,):Container(), SizedBox(width: 5,), Text(_verified!,style: TextStyle(fontSize: 12,color: MyTheme.app_accent_border),), seller_package_addon.$ && _package!.isNotEmpty?Row( children: [ SizedBox(width: 10,), MyWidget.roundImageWithPlaceholder(width: 16.0,height: 15.0,borderRadius:0.0,url: _packageImg,backgroundColor: MyTheme.noColor,fit: BoxFit.fill ), SizedBox(width: 5,), Text(_package!,style: TextStyle(fontSize: 12,color: MyTheme.app_accent_border),), ], ):Container(), ],) ], ) ], ), ), SizedBox(height: 20,), Container( color: MyTheme.app_accent_color_extra_light, height: 1, ), // SizedBox(height: 20,), Container( color: MyTheme.app_accent_color, height: 1, ), SizedBox(height: 20,), buildItemFeature(context), SizedBox(height: 20,), Container( color: MyTheme.app_accent_color_extra_light, height: 1, ), Container( padding: EdgeInsets.symmetric(horizontal: 15), height: 80, alignment: Alignment.center, child: Container( height: 40, child: Buttons( onPressed: (){ logoutReq(); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/logout.png',width: 16,height: 16,color: MyTheme.app_accent_border,), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.logout_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ),), Container( color: MyTheme.app_accent_color_extra_light, height: 1, ), ], ), ), ); } Container buildBackButtonContainer(BuildContext context) { return Container( height: 47, alignment: Alignment.topRight, child: SizedBox( width: 47, child: Buttons( padding: EdgeInsets.zero, onPressed: () { pop(context); }, child: Icon( Icons.close, size: 24, color: MyTheme.app_accent_border, ), ), ), ); } Widget buildItemFeature(BuildContext context) { return Container( padding: EdgeInsets.symmetric(horizontal: 15), child: Column( children: [ Container( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(ProfileEdit()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/profile.png',width: 16,height: 16,color: MyTheme.app_accent_border,), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.profile_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), Container( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(ChangeLanguage()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/language.png',width: 16,height: 16,color: MyTheme.app_accent_border,), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.change_language_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), Container( height: 40, child: Buttons( onPressed: (){ Navigator.pushAndRemoveUntil(context,PageRouteBuilder(pageBuilder: (context,animation,secondaryAnimation)=>Main(),transitionsBuilder: (context,animation,secondaryAnimation,child){ return FadeTransition(opacity:animation,child: child, ); }), (route) => false,); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/dashboard.png',width: 16,height: 16,color: MyTheme.app_accent_border,), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.dashboard_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), Container( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(Orders()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/orders.png',width: 16,height: 16,color: MyTheme.app_accent_border,), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.orders_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), SizedBox( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(const Products()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/products.png',width: 16,height: 16,color: MyTheme.app_accent_border), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.products_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), if(wholesale_addon_installed.$) optionModel(LangText(context: context).getLocal()!.wholesale_products_ucf,'assets/icon/wholesale.png',const WholeSaleProducts()), SizedBox( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(CommissionHistory()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset('assets/icon/commission_history.png',width: 16,height: 16,color: MyTheme.app_accent_border), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.commission_history_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), SizedBox( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(UploadFile()); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Icon(Icons.upload_file,size: 16,color: MyTheme.app_accent_border,), //Image.asset('assets/icon/commission_history.png',width: 16,height: 16,color: MyTheme.app_accent_border), SizedBox(width: 26,), Text(LangText(context: context).getLocal()!.upload_file_ucf,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ), ], ), ); } SizedBox optionModel(String title,String logo,Widget route) { return SizedBox( height: 40, child: Buttons( onPressed: (){ MyTransaction(context: context).push(route); }, child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( children: [ Image.asset(logo,width: 16,height: 16,color: MyTheme.app_accent_border), const SizedBox(width: 26,), Text(title,style: TextStyle(fontSize: 14,color: MyTheme.white),), ], ), const Icon(Icons.navigate_next_rounded,size: 20,color: MyTheme.app_accent_border,) ], ), ), ); } }