// import 'package:flutter/material.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:flutter_svg/svg.dart'; import 'package:get/get.dart'; import 'package:glassmorphism/glassmorphism.dart'; import 'package:traderscircuit/Utils/Common/CommonBottomNavigation.dart'; import 'package:traderscircuit/Utils/Common/CommonTabBar.dart'; import 'package:traderscircuit/Utils/Common/comonGlassmorphicContainer.dart'; import 'package:traderscircuit/Utils/Common/sized_box.dart'; import 'package:traderscircuit/Utils/text.dart'; import 'package:traderscircuit/model/HomeModel/home_model.dart'; import 'package:traderscircuit/resources/routes/route_name.dart'; import 'package:traderscircuit/view/MainScreen/MainScreen.dart'; import 'package:traderscircuit/view/Sidemenu/ContentByte/PlayerWidget.dart'; import 'package:traderscircuit/view/Sidemenu/Sidemenu.dart'; import 'package:traderscircuit/view/onBoarding/splashScreen1.dart'; import 'package:traderscircuit/view_model/HomeApi/home_api.dart'; import '../../view_model/ProfileAPI/GetProfileApi.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State createState() => _HomeScreenState(); } class _HomeScreenState extends State { GlobalKey _scaffoldKey1 = GlobalKey(); RxString userName = "User".obs; HomeModel homeModel = HomeModel(); RxBool isApiCalling = true.obs; @override void initState() { GetProfile().GetProfileAPI().then((value) { userName.value = ProfileObj!.data!.userName ?? "User"; }); HomeApi().getHomeData().then((value) { homeModel = HomeModel.fromJson(value.data); }); isApiCalling.value = false; super.initState(); } @override Widget build(BuildContext context) { return WillPopScope( onWillPop: () async { _onBackButtonPressed(context); return true; // Return true to allow the pop action }, child: Scaffold( drawerEnableOpenDragGesture: false, key: _scaffoldKey1, backgroundColor: Colors.black, drawer: Container(child: const SideMenu()), extendBody: true, appBar: AppBar( scrolledUnderElevation: 0.0, backgroundColor: Colors.black, elevation: 0, automaticallyImplyLeading: false, titleSpacing: 0, leading: InkWell( onTap: () { _scaffoldKey1.currentState?.openDrawer(); }, child: Center( child: Image.asset( 'assets/images/png/menu.png', height: 15.h, width: 20.w, ), ), ), actions: [ InkWell( onTap: () { Get.toNamed(RouteName.notification); }, child: Padding( padding: EdgeInsets.only(right: 14.w), child: SvgPicture.asset('assets/images/svg/Group 1897.svg')), ), ], ), body: Stack( children: [ const CommonBlurLeft(), const CommonBlurRight(), Stack(children: [ Padding( padding: const EdgeInsets.symmetric(horizontal: 16, vertical: 16), child: isApiCalling.value ? Center( child: CircularProgressIndicator(), ) : ListView( physics: const BouncingScrollPhysics(), children: [ sizedBoxHeight(20.h), Obx( () => Text( "Welcome $userName", style: TextStyle( color: Colors.white, fontSize: 24.sp, fontFamily: 'hiragino', fontWeight: FontWeight.w500), ), ), sizedBoxHeight(25.h), SingleChildScrollView( scrollDirection: Axis.horizontal, child: Row( children: [ commoncontainer( width: 195.w, text: 'NIFTY', amount: '22,286.95', rate: '+304.15 (+1.38%)'), sizedBoxWidth(10.w), commoncontainer( width: 240.w, text: 'BANKNIFTY', amount: '22,286.95', rate: '+896.10 (+1.94%)'), ], ), ), sizedBoxHeight(30.h), Container( width: double.infinity, height: 1.h, color: const Color(0xFF3A3A3A), ), sizedBoxHeight(30.h), text22W500('View our products'), sizedBoxHeight(30.h), SizedBox( height: 210, child: GridView.builder( physics: const NeverScrollableScrollPhysics(), gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, // number of items in each row mainAxisSpacing: 8.0, // spacing between rows crossAxisSpacing: 8.0, // spacing between columns childAspectRatio: 2.2, ), itemCount: homeModel.data!.products!.length, itemBuilder: (context, index) { return ProductWidget( text: homeModel.data!.products! .elementAt(index) .title!, subtext: "recommendation"); }, ), ), sizedBoxHeight(25.h), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ SvgPicture.asset( 'assets/images/svg/Vector (2).svg'), sizedBoxWidth(10.w), text18W500('UNLOCK NOW!'), ], ), sizedBoxHeight(25.h), Container( width: double.infinity, height: 1.h, color: const Color(0xFF3A3A3A), ), sizedBoxHeight(25.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.end, children: [ text22W600('Explore The Unseen'), GestureDetector( onTap: () { Get.toNamed(RouteName.exploreUnseen); }, child: Container( height: 35.h, width: 105.w, decoration: BoxDecoration( color: const Color(0xFF3A3A3A) .withOpacity(0.6), borderRadius: BorderRadius.circular(5.r), border: Border.all( color: const Color(0xFF3A3A3A), )), child: Center(child: text16W500('View More')), ), ), ], ), sizedBoxHeight(35.h), DefaultTabController( length: 2, child: Column( children: [ MyTabBar(), SizedBox( height: 250.h, child: TabBarView( children: [ ActiveCallsTab(), ExitedCallsTab(), ], ), ), ], ), ), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text22W600('Content Bytes'), sizedBoxHeight(8.w), Row( mainAxisAlignment: MainAxisAlignment.end, crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( width: 240.w, child: text16W400_DADADA( 'The Beauty and Power of Video')), // sizedBoxWidth(10.w), const Spacer(), Container( height: 35.h, width: 105.w, decoration: BoxDecoration( color: const Color(0xFF3A3A3A) .withOpacity(0.6), borderRadius: BorderRadius.circular(5.r), border: Border.all( color: const Color(0xFF3A3A3A), ), ), child: Center( child: InkWell( onTap: () { Get.toNamed(RouteName.contentbytes); }, child: text16W500('View More'), ), ), ), ], ), sizedBoxHeight(20.h), commonGlassContainer( borderradius: 8, width: double.infinity, height: 330.h, customWidget: Padding( padding: EdgeInsets.symmetric( vertical: 10.h, horizontal: 10.w), child: Column( children: [ InkWell( onTap: () { Get.to(() => const PlayerWidget(), arguments: { "video_url": "", }); }, child: Container( height: 200.h, width: double.infinity, decoration: BoxDecoration( borderRadius: BorderRadius.circular(8.r), image: DecorationImage( image: NetworkImage(homeModel .data! .contentByteVideo! .image ?? ""), ), ), child: Center( child: SvgPicture.asset( 'assets/images/svg/gridicons_play.svg', height: 56.h, width: 56.w, ), ), ), ), sizedBoxHeight(20.h), Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ CircleAvatar( radius: 23.r, backgroundImage: NetworkImage( homeModel .data! .contentByteVideo! .title ?? ""), ), sizedBoxWidth(10.w), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text18W500(homeModel .data! .contentByteVideo! .title ?? ""), // sizedBoxHeight(10.h), text12W400_979797( '20k views . 2 days ago'), ], ), ) ], ) ], ), )) ], ), ], ), ) ]) ], ), bottomNavigationBar: bottomnavigationbar(mainController), ), ); } Future _onBackButtonPressed(BuildContext context) async { bool? exitApp = await showDialog( context: context, builder: (context) { return AlertDialog( backgroundColor: const Color(0xFFFFF3E4), title: const Text('Exit App'), content: const Text('Do you really want to close the app?'), actions: [ TextButton( onPressed: () { Navigator.of(context).pop(false); }, child: const Text( 'No', style: TextStyle( color: Color(0xff1B243D), ), ), ), TextButton( onPressed: () { SystemNavigator.pop(); Navigator.pop(context); }, child: const Text( 'Yes', style: TextStyle( color: Color(0xff1B243D), ), ), ) ], ); }); return exitApp ?? false; } Widget ActiveCallsTab() { return Column( children: [ sizedBoxHeight(30.h), cardcallWidget( action: homeModel.data!.exploreTheUnseenActiveCalls!.first .recommendationActionsXid == 1 ? "Buy" : homeModel.data!.exploreTheUnseenActiveCalls!.first .recommendationActionsXid == 2 ? "Sell" : homeModel.data!.exploreTheUnseenActiveCalls!.first .recommendationActionsXid == 3 ? "Hold" : homeModel.data!.exploreTheUnseenActiveCalls!.first .recommendationActionsXid == 4 ? "Exit" : "", text: homeModel.data!.exploreTheUnseenActiveCalls!.first.stockName!, amount: "₹ ${homeModel.data!.exploreTheUnseenActiveCalls!.first.buyPrice!}", pdfname: 'Download Pdf'), sizedBoxHeight(30.h), ], ); } Widget ExitedCallsTab() { return Column( children: [ sizedBoxHeight(30.h), homeModel.data!.exploreTheUnseenExitedCalls!.isEmpty || homeModel.data!.exploreTheUnseenExitedCalls == null ? text14W300("No Data") : Column( children: List.generate( homeModel.data!.exploreTheUnseenExitedCalls!.length, (index) { return Column( children: [ cardcallWidget( action: "Hold", text: homeModel.data!.exploreTheUnseenExitedCalls! .elementAt(index) .stockName ?? "", amount: homeModel.data!.exploreTheUnseenExitedCalls! .elementAt(index) .buyPrice ?? "", pdfname: "Download Pdf"), sizedBoxHeight(20.h) ], ); }), ) ], ); } } Widget cardcallWidget( {required String text, required String amount, required String pdfname, required String action}) { return commonGlassContainer( width: double.infinity, height: 176.h, borderradius: 8, customWidget: Column( children: [ Padding( padding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 16.w), child: Row( children: [ GlassmorphicContainer( width: 47.w, height: 47.h, borderRadius: 100, blur: 10, alignment: Alignment.center, border: 0.9, linearGradient: const LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color(0xff3A3A3A), Color(0xFF3A3A3A), ], ), borderGradient: const LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color.fromRGBO(70, 5, 1, 0.8), Color.fromRGBO(102, 102, 102, 0.8), ], ), child: Center( child: Image.asset('assets/images/png/square_TRIDENT_com 1.png'), ), ), sizedBoxWidth(15.w), text18W600(text), const Spacer(), Container( width: 62.w, height: 25.h, decoration: BoxDecoration( borderRadius: BorderRadius.circular(4.r), color: action == "Buy" ? Colors.green : action == "Sell" ? Colors.red : action == "Hold" ? const Color(0xFFFFAD31) : Colors.white, ), child: Center(child: text16W400_1B1B1B(action)), ) ], ), ), Container( width: double.infinity, height: 1.h, color: const Color(0xFF3A3A3A), ), Padding( padding: const EdgeInsets.all(20), child: Row( children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text14W400_979797('Initial Entry Price'), sizedBoxHeight(5.h), text15W600(amount) ], ), // sizedBoxWidth(50.w), const Spacer(), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ text14W400_979797('Report'), sizedBoxHeight(5.h), Row( children: [ // SvgPicture.asset('assets/images/svg/pdfsvg.svg'), Image.asset( 'assets/images/png/pdf.png', height: 20.h, width: 20.w, ), text15W600(pdfname), ], ) ], ) ], ), ) ], ), ); } Widget ProductWidget({required String text, required String subtext}) { return GlassmorphicContainer( width: 175.w, height: 83.h, borderRadius: 8, blur: 10, alignment: Alignment.center, border: 0.8, linearGradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Colors.white.withOpacity(0.1), const Color(0xFFFFFFFF).withOpacity(0.05), ], stops: [ 0.1, 1, ]), borderGradient: const LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color(0xff3A3A3A), Color(0xFF3A3A3A), ], ), child: Padding( padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w), child: Column( // crossAxisAlignment: CrossAxisAlignment.start, children: [ text18W600(text), sizedBoxWidth(8.w), text14W400_979797(subtext), ], ), ), ); } Widget commoncontainer( {required String text, required String amount, required String rate, required double width}) { return GlassmorphicContainer( width: width, height: 83.h, borderRadius: 8, blur: 10, alignment: Alignment.center, border: 0.8, linearGradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Colors.white.withOpacity(0.1), const Color(0xFFFFFFFF).withOpacity(0.05), ], stops: [ 0.1, 1, ]), borderGradient: const LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, colors: [ Color(0xff3A3A3A), Color(0xFF3A3A3A), ], ), child: Padding( padding: EdgeInsets.symmetric(vertical: 10.h, horizontal: 10.w), child: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.center, children: [ text14W400_979797(text), sizedBoxWidth(8.w), text16W600(amount), sizedBoxWidth(8.w), SvgPicture.asset( 'assets/images/svg/Line 587.svg', height: 15.h, width: 15.w, ), ], ), sizedBoxHeight(8.w), text14W400_00FF19(rate) ], ), ), ); }