import 'package:flutter/material.dart'; import 'package:get/get.dart'; import '../../Controller/Dashboard/Dashboardcontroller.dart'; import '../../Controller/Home/Homecontroller.dart'; import '../../Controller/More/Morecontroller.dart'; import '../../Globalwidgets/textwidget.dart'; import '../../Globalwidgets/web_view.dart'; import '../../Helper/Constants/Colorconstants.dart'; import 'Notification/Notificationview.dart'; class MoreView extends StatelessWidget { MoreView({super.key}); final MoreController moreController = Get.put(MoreController()); final DashboardController dashboardController = Get.put(DashboardController()); final HomeController homeController = Get.put(HomeController()); @override Widget build(BuildContext context) { return GetBuilder( initState: (_){ moreController.getToken(); homeController.getTenantId(); }, builder: (controller) { return Scaffold( backgroundColor: Colors.grey.shade200, appBar: AppBar( leading: Padding( padding: const EdgeInsets.only(left: 14), child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ TextWidget( text: '${dashboardController.tenantInfo?.firstname}', fontSize : 18, fontWeight: FontWeight.w700, maxLines: 1, ), const SizedBox(height: 5,), TextWidget( text: '+91 ${dashboardController.tenantInfo?.primarycontact}', fontSize: 15, ) ], ), ), leadingWidth: double.infinity, backgroundColor: ColorConstants.secondaryColor, automaticallyImplyLeading: false, toolbarHeight: 65, ), body: SingleChildScrollView( child: Column( children: [ const SizedBox(height: 20,), MyAccountSegmentUI(moreController: moreController, homeController: homeController,), const SizedBox(height: 20,), // HelpAndSupport(moreController: moreController, homeController: homeController,), // const SizedBox(height: 20,), const PrivacyPolicySegment(), const SizedBox(height: 20,), TextWidget( text: 'App Version: ${controller.currentVersion}', fontSize: 14, fontWeight: FontWeight.w700, color: ColorConstants.darkGreyColor, ), const SizedBox(height: 50,), ], ), ), ); } ); } } class MyAccountSegmentUI extends StatelessWidget { const MyAccountSegmentUI({ super.key, required this.moreController, required this.homeController, }); final MoreController moreController; final HomeController homeController; @override Widget build(BuildContext context) { return Container( color: Colors.white, child: Padding( padding: const EdgeInsets.only(left: 15, right: 15), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10,), const TextWidget( text: 'My Account', fontWeight: FontWeight.bold, fontSize: 21, ), const SizedBox( height: 15, ), CustomListTile( leadingIcon: Icons.notifications_active, title: 'Notification', onTap: () { Get.to(() => NotificationView()); }, ), CustomListTile( leadingIcon: Icons.qr_code_scanner, title: 'Scanner', onTap: () { homeController.showQRBottomSheet(); }, ), CustomListTile( leadingIcon: Icons.logout, title: 'Logout', onTap: () { moreController.confirmLogout(context); }, noNeedDivider: true, ), ], ), ), ); } } class HelpAndSupport extends StatelessWidget { const HelpAndSupport({ super.key, required this.moreController, required this.homeController, }); final MoreController moreController; final HomeController homeController; @override Widget build(BuildContext context) { return Container( color: Colors.white, child: Padding( padding: const EdgeInsets.only(left: 15, right: 15), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10,), const TextWidget( text: 'Help And Support', fontWeight: FontWeight.bold, fontSize: 21, ), const SizedBox( height: 15, ), CustomListTile( leadingIcon: Icons.headphones, title: 'Create Request', onTap: () { Get.to(() => NotificationView()); }, ), CustomListTile( leadingIcon: Icons.support_agent_outlined, title: 'Requested Support', noNeedDivider: true, onTap: () { homeController.showQRBottomSheet(); }, ), ], ), ), ); } } class PrivacyPolicySegment extends StatelessWidget { const PrivacyPolicySegment({ super.key, }); @override Widget build(BuildContext context) { return Container( color: Colors.white, child: Padding( padding: const EdgeInsets.only(left: 15, right: 15), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ const SizedBox(height: 10,), const TextWidget( text: 'Policy and FAQ', fontWeight: FontWeight.bold, fontSize: 21, ), const SizedBox( height: 15, ), CustomListTile( leadingIcon: Icons.question_answer, title: "FAQ's", onTap: () { Get.to(() => const WebViewApp( url: 'https://nearle.in/faq', appBarText: "FAQ's", )); }, ), CustomListTile( leadingIcon: Icons.rule, title: "Term's and conditions", onTap: () { Get.to(() => const WebViewApp( url: 'https://nearle.in/terms', appBarText: 'Terms and conditions', ), ); }, ), CustomListTile( leadingIcon: Icons.privacy_tip, title: 'Privacy Policy', noNeedDivider: true, onTap: () { Get.to(() => const WebViewApp( url: 'https://nearle.in/privacy', appBarText: 'Privacy Policy', )); }, ), ], ), ), ); } } class CustomListTile extends StatelessWidget { final IconData leadingIcon; final String title; final VoidCallback onTap; final bool? noNeedDivider; const CustomListTile({ super.key, required this.leadingIcon, required this.title, required this.onTap, this.noNeedDivider, }); @override Widget build(BuildContext context) { return Column( children: [ ListTile( contentPadding: EdgeInsets.zero, visualDensity: const VisualDensity(horizontal: -4), // Decrease space leading: CircleAvatar( radius: 18, backgroundColor: ColorConstants.primaryColor.withOpacity(0.1), child: Icon( leadingIcon, color: ColorConstants.primaryColor, size: 20, ), ), trailing: const Icon(Icons.arrow_forward_ios, size: 17), title: TextWidget( text: title, fontSize: 16, // fontWeight: FontWeight.bold, ), onTap: onTap, // Action when the ListTile is tapped ), (noNeedDivider ?? false) ? const SizedBox() : Divider( thickness: 0.5, // color: ColorConstants.lightGrey, ), ], ); } }