diff --git a/assets/images/png/BottomBar/ActiveHome.png b/assets/images/png/BottomBar/ActiveHome.png new file mode 100644 index 0000000..41c3a24 Binary files /dev/null and b/assets/images/png/BottomBar/ActiveHome.png differ diff --git a/assets/images/png/BottomBar/inactiveCal.png b/assets/images/png/BottomBar/inactiveCal.png new file mode 100644 index 0000000..c6b93f6 Binary files /dev/null and b/assets/images/png/BottomBar/inactiveCal.png differ diff --git a/assets/images/png/BottomBar/inactiveChat.png b/assets/images/png/BottomBar/inactiveChat.png new file mode 100644 index 0000000..1622257 Binary files /dev/null and b/assets/images/png/BottomBar/inactiveChat.png differ diff --git a/assets/images/png/BottomBar/inactiveGroup.png b/assets/images/png/BottomBar/inactiveGroup.png new file mode 100644 index 0000000..6721252 Binary files /dev/null and b/assets/images/png/BottomBar/inactiveGroup.png differ diff --git a/assets/images/png/BottomBar/inactivePeople.png b/assets/images/png/BottomBar/inactivePeople.png new file mode 100644 index 0000000..70e8d48 Binary files /dev/null and b/assets/images/png/BottomBar/inactivePeople.png differ diff --git a/assets/images/png/Ellipse 43.png b/assets/images/png/Ellipse 43.png new file mode 100644 index 0000000..e4d646c Binary files /dev/null and b/assets/images/png/Ellipse 43.png differ diff --git a/assets/images/png/Frame 1000004089.png b/assets/images/png/Frame 1000004089.png new file mode 100644 index 0000000..e6441fe Binary files /dev/null and b/assets/images/png/Frame 1000004089.png differ diff --git a/assets/images/png/Frame 9.png b/assets/images/png/Frame 9.png new file mode 100644 index 0000000..0f2d325 Binary files /dev/null and b/assets/images/png/Frame 9.png differ diff --git a/assets/images/png/Group 1000004071.png b/assets/images/png/Group 1000004071.png new file mode 100644 index 0000000..8e325b6 Binary files /dev/null and b/assets/images/png/Group 1000004071.png differ diff --git a/assets/images/png/Group.png b/assets/images/png/Group.png new file mode 100644 index 0000000..1b38e00 Binary files /dev/null and b/assets/images/png/Group.png differ diff --git a/assets/images/png/Rectangle 22.png b/assets/images/png/Rectangle 22.png new file mode 100644 index 0000000..4dd2c56 Binary files /dev/null and b/assets/images/png/Rectangle 22.png differ diff --git a/assets/images/png/Rectangle 24.png b/assets/images/png/Rectangle 24.png new file mode 100644 index 0000000..461c9c6 Binary files /dev/null and b/assets/images/png/Rectangle 24.png differ diff --git a/assets/images/png/Rectangle 25.png b/assets/images/png/Rectangle 25.png new file mode 100644 index 0000000..7e4b9d0 Binary files /dev/null and b/assets/images/png/Rectangle 25.png differ diff --git a/assets/images/png/Rectangle 26.png b/assets/images/png/Rectangle 26.png new file mode 100644 index 0000000..ba33039 Binary files /dev/null and b/assets/images/png/Rectangle 26.png differ diff --git a/assets/images/png/Rectangle 27.png b/assets/images/png/Rectangle 27.png new file mode 100644 index 0000000..48e6b87 Binary files /dev/null and b/assets/images/png/Rectangle 27.png differ diff --git a/assets/images/png/Rectangle 28.png b/assets/images/png/Rectangle 28.png new file mode 100644 index 0000000..676de88 Binary files /dev/null and b/assets/images/png/Rectangle 28.png differ diff --git a/assets/images/png/Rectangle 29.png b/assets/images/png/Rectangle 29.png new file mode 100644 index 0000000..ba00357 Binary files /dev/null and b/assets/images/png/Rectangle 29.png differ diff --git a/assets/images/png/Rectangle 30.png b/assets/images/png/Rectangle 30.png new file mode 100644 index 0000000..f88c1bb Binary files /dev/null and b/assets/images/png/Rectangle 30.png differ diff --git a/assets/images/png/Rectangle 31.png b/assets/images/png/Rectangle 31.png new file mode 100644 index 0000000..240bf8d Binary files /dev/null and b/assets/images/png/Rectangle 31.png differ diff --git a/assets/images/png/Rectangle 32.png b/assets/images/png/Rectangle 32.png new file mode 100644 index 0000000..1f0a861 Binary files /dev/null and b/assets/images/png/Rectangle 32.png differ diff --git a/assets/images/png/Vector (1).png b/assets/images/png/Vector (1).png new file mode 100644 index 0000000..294463b Binary files /dev/null and b/assets/images/png/Vector (1).png differ diff --git a/assets/images/png/Vector (5).png b/assets/images/png/Vector (5).png new file mode 100644 index 0000000..aa591b2 Binary files /dev/null and b/assets/images/png/Vector (5).png differ diff --git a/assets/images/png/Vector.png b/assets/images/png/Vector.png new file mode 100644 index 0000000..ad4199f Binary files /dev/null and b/assets/images/png/Vector.png differ diff --git a/assets/images/png/bi_download.png b/assets/images/png/bi_download.png new file mode 100644 index 0000000..93e0c24 Binary files /dev/null and b/assets/images/png/bi_download.png differ diff --git a/assets/images/png/community 1 (traced).png b/assets/images/png/community 1 (traced).png new file mode 100644 index 0000000..e65bf74 Binary files /dev/null and b/assets/images/png/community 1 (traced).png differ diff --git a/assets/images/png/f7_hand-thumbsup.png b/assets/images/png/f7_hand-thumbsup.png new file mode 100644 index 0000000..d5511d9 Binary files /dev/null and b/assets/images/png/f7_hand-thumbsup.png differ diff --git a/assets/images/png/f7_pin-fill (2).png b/assets/images/png/f7_pin-fill (2).png new file mode 100644 index 0000000..fad9bb0 Binary files /dev/null and b/assets/images/png/f7_pin-fill (2).png differ diff --git a/assets/images/png/heart 2.png b/assets/images/png/heart 2.png new file mode 100644 index 0000000..d9da9cf Binary files /dev/null and b/assets/images/png/heart 2.png differ diff --git a/assets/images/png/iconamoon_edit-thin.png b/assets/images/png/iconamoon_edit-thin.png new file mode 100644 index 0000000..0f78f7c Binary files /dev/null and b/assets/images/png/iconamoon_edit-thin.png differ diff --git a/assets/images/png/ion_search-outline.png b/assets/images/png/ion_search-outline.png new file mode 100644 index 0000000..8353d4f Binary files /dev/null and b/assets/images/png/ion_search-outline.png differ diff --git a/assets/images/png/menu.png b/assets/images/png/menu.png new file mode 100644 index 0000000..f6fff16 Binary files /dev/null and b/assets/images/png/menu.png differ diff --git a/assets/images/png/party-popper 2.png b/assets/images/png/party-popper 2.png new file mode 100644 index 0000000..12a7c87 Binary files /dev/null and b/assets/images/png/party-popper 2.png differ diff --git a/assets/images/png/share.png b/assets/images/png/share.png new file mode 100644 index 0000000..40251cf Binary files /dev/null and b/assets/images/png/share.png differ diff --git a/assets/images/png/sidemenu/Ellipse 52.png b/assets/images/png/sidemenu/Ellipse 52.png new file mode 100644 index 0000000..adb55a0 Binary files /dev/null and b/assets/images/png/sidemenu/Ellipse 52.png differ diff --git a/assets/images/png/sidemenu/Ellipse 53.png b/assets/images/png/sidemenu/Ellipse 53.png new file mode 100644 index 0000000..b7a92f8 Binary files /dev/null and b/assets/images/png/sidemenu/Ellipse 53.png differ diff --git a/assets/images/png/sidemenu/Vector (4).png b/assets/images/png/sidemenu/Vector (4).png new file mode 100644 index 0000000..1e252ab Binary files /dev/null and b/assets/images/png/sidemenu/Vector (4).png differ diff --git a/assets/images/png/sidemenu/f7_pin-fill (1).png b/assets/images/png/sidemenu/f7_pin-fill (1).png new file mode 100644 index 0000000..727f8c9 Binary files /dev/null and b/assets/images/png/sidemenu/f7_pin-fill (1).png differ diff --git a/assets/images/png/sidemenu/f7_pin-fill.png b/assets/images/png/sidemenu/f7_pin-fill.png new file mode 100644 index 0000000..9a42aa5 Binary files /dev/null and b/assets/images/png/sidemenu/f7_pin-fill.png differ diff --git a/assets/images/png/sidemenu/rowing 1 (traced).png b/assets/images/png/sidemenu/rowing 1 (traced).png new file mode 100644 index 0000000..f142cf0 Binary files /dev/null and b/assets/images/png/sidemenu/rowing 1 (traced).png differ diff --git a/assets/images/png/sidemenu/solar_cloud-outline.png b/assets/images/png/sidemenu/solar_cloud-outline.png new file mode 100644 index 0000000..64001e1 Binary files /dev/null and b/assets/images/png/sidemenu/solar_cloud-outline.png differ diff --git a/assets/images/png/uiw_like-o.png b/assets/images/png/uiw_like-o.png new file mode 100644 index 0000000..aae0bc6 Binary files /dev/null and b/assets/images/png/uiw_like-o.png differ diff --git a/lib/Common/CommonAppbar.dart b/lib/Common/CommonAppbar.dart new file mode 100644 index 0000000..ea07817 --- /dev/null +++ b/lib/Common/CommonAppbar.dart @@ -0,0 +1,85 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; + +class CommonAppbar extends StatelessWidget implements PreferredSizeWidget { + @override + Size get preferredSize => const Size.fromHeight(70); + + const CommonAppbar({ + Key? key, + required this.titleTxt, + this.showLeading = true, + this.customActionWidget, + this.onCustomActionPressed, + required Size preferredSize, + this.showEdit = false, + this.customBack, + this.editPageName, + }) : super(key: key); + + final String titleTxt; + final bool? showLeading; + final Widget? customActionWidget; + final VoidCallback? onCustomActionPressed; + final bool? showEdit; + final bool? customBack; + final String? editPageName; + + @override + Widget build(BuildContext context) { + return AppBar( + scrolledUnderElevation: 0.0, + backgroundColor: Colors.white, + elevation: 0, + automaticallyImplyLeading: false, + titleSpacing: 0, + title: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Text( + titleTxt, + softWrap: true, + overflow: TextOverflow.visible, + textAlign: TextAlign.start, + style: TextStyle( + fontFamily: 'DM Sans', + fontSize: 18.sp, + fontWeight: FontWeight.w500, + color: Color(0xFF090909), + ), + ), + ), + ], + ), + ), + leading: showLeading! + ? InkWell( + onTap: () { + Get.back(); + }, + child: Icon( + Icons.arrow_back, + color: Color(0xFF090909), + size: 27, + ), + ) + : null, + actions: [ + if (customActionWidget != null) + InkWell( + onTap: onCustomActionPressed, + child: Padding( + padding: EdgeInsets.only(right: 14.w), + child: customActionWidget, + ), + ), + ], + ); + } +} diff --git a/lib/Common/CommonBottomNavigationBar.dart b/lib/Common/CommonBottomNavigationBar.dart new file mode 100644 index 0000000..598eaf3 --- /dev/null +++ b/lib/Common/CommonBottomNavigationBar.dart @@ -0,0 +1,333 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:glassmorphism/glassmorphism.dart'; +import 'package:regroup/Common/controller/MainController.dart'; + +GlassmorphicContainer bottomnavigationbar(MainController _mainController) { + return GlassmorphicContainer( + width: double.infinity, + height: 83.h, + borderRadius: 2, + blur: 30, + alignment: Alignment.center, + border: 0, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Colors.white.withOpacity(0.04), + Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: const [ + 0.1, + 1, + ]), + borderGradient: const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Colors.transparent, + Colors.transparent, + ], + ), + child: BottomNavigationBar( + // backgroundColor: , + type: BottomNavigationBarType.fixed, + backgroundColor: const Color(0xFFFFFFFF).withOpacity(0), + showUnselectedLabels: true, + selectedItemColor: Colors.white, + unselectedItemColor: const Color(0xFF676767), + unselectedLabelStyle: TextStyle( + fontSize: 10.sp, + color: const Color(0xFF676767), + fontWeight: FontWeight.w400, + fontFamily: 'hiragino'), + selectedLabelStyle: TextStyle( + fontSize: 10.sp, + color: const Color(0xFFFFFFFF), + fontWeight: FontWeight.w400, + fontFamily: 'hiragino'), + currentIndex: _mainController.selectedIndex.value, + onTap: (index) { + _mainController.updateTab(index); + }, + items: [ + BottomNavigationBarItem( + icon: Image.asset( + 'assets/images/png/BottomBar/ActiveHome.png', + height: 26.h, + width: 26.w, + ), + // Icon( + // Icons.home, + // color: Color(0xFF676767), + // ), + activeIcon: Stack( + clipBehavior: Clip.none, + children: [ + if (_mainController.selectedIndex.value == 0) + Container( + height: 40.h, + width: 40.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: Color(0xFFD90B2E).withOpacity(0.16), + spreadRadius: 15, + blurRadius: 25, + offset: const Offset(0, 10), + ), + ], + ), + ), + Positioned( + left: 0, + right: 0, + top: -15, + child: Container( + height: 2.h, + width: 20.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.r), + color: Color(0xFFD90B2E)), + )), + Positioned( + top: 0, + bottom: 0, + right: 0, + left: 0, + child: Center( + child: Image.asset( + 'assets/images/png/BottomBar/ActiveHome.png', + height: 30.h, + width: 30.w, + ), + ), + ) + ], + ), + + // activeIcon: SvgPicture.asset('assets/image/svg/active_home.svg'), + label: 'Community', + ), + BottomNavigationBarItem( + icon: Image.asset( + 'assets/images/png/BottomBar/inactiveGroup.png', + height: 26.h, + width: 26.w, + ), + activeIcon: Stack( + clipBehavior: Clip.none, + children: [ + if (_mainController.selectedIndex.value == 1) + Container( + height: 40.h, + width: 40.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: Color(0xFFD90B2E).withOpacity(0.16), + spreadRadius: 15, + blurRadius: 25, + offset: const Offset(0, 10), + ), + ], + ), + ), + Positioned( + left: 0, + right: 0, + top: -15, + child: Container( + height: 2.h, + width: 20.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.r), + color: Color(0xFFD90B2E)), + )), + Positioned( + left: 0, + right: 0, + top: 0, + bottom: 0, + child: Center( + child: Image.asset( + 'assets/images/png/BottomBar/inactiveGroup.png', + height: 30.h, + width: 30.w, + ), + )), + ], + ), + + // SvgPicture.asset('assets/image/svg/active_shortTrade.svg'), + label: 'Group', + ), + BottomNavigationBarItem( + icon: Image.asset( + 'assets/images/png/BottomBar/inactiveCal.png', + height: 24.h, + width: 24.w, + ), + activeIcon: Stack( + clipBehavior: Clip.none, + children: [ + if (_mainController.selectedIndex.value == 2) + Container( + height: 40.h, + width: 40.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: Color(0xFFD90B2E).withOpacity(0.16), + spreadRadius: 15, + blurRadius: 25, + offset: const Offset(0, 10), + ), + ], + ), + ), + Positioned( + left: 0, + right: 0, + top: -15, + child: Container( + height: 2.h, + width: 20.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.r), + color: Color(0xFFD90B2E)), + )), + Positioned( + left: 0, + right: 0, + top: 0, + bottom: 0, + child: Center( + child: Image.asset( + 'assets/images/png/BottomBar/inactiveCal.png', + height: 28.h, + width: 28.w, + ), + )) + ], + ), + + // SvgPicture.asset('assets/image/svg/active_shortTrade.svg'), + label: 'Calender', + ), + BottomNavigationBarItem( + icon: Image.asset( + 'assets/images/png/BottomBar/inactiveChat.png', + height: 24.h, + width: 24.w, + ), + activeIcon: Stack( + clipBehavior: Clip.none, + children: [ + if (_mainController.selectedIndex.value == 3) + Container( + height: 40.h, + width: 40.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: Color(0xFFD90B2E).withOpacity(0.16), + spreadRadius: 15, + blurRadius: 25, + offset: const Offset(0, 10), + ), + ], + ), + ), + Positioned( + left: 0, + right: 0, + top: -15, + child: Container( + height: 2.h, + width: 20.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.r), + color: Color(0xFFD90B2E)), + )), + Positioned( + left: 0, + right: 0, + top: 0, + bottom: 0, + child: Center( + child: Image.asset( + 'assets/images/png/BottomBar/inactiveChat.png', + height: 28.h, + width: 28.w, + ), + )) + ], + ), + + // SvgPicture.asset('assets/image/svg/active_shortTrade.svg'), + label: 'Chats', + ), + BottomNavigationBarItem( + icon: Image.asset( + 'assets/images/png/BottomBar/inactivePeople.png', + height: 26.h, + width: 26.w, + ), + activeIcon: Stack( + clipBehavior: Clip.none, + children: [ + if (_mainController.selectedIndex.value == 4) + Container( + height: 40.h, + width: 40.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: Color(0xFFD90B2E).withOpacity(0.16), + spreadRadius: 15, + blurRadius: 25, + offset: const Offset(0, 10), + ), + ], + ), + ), + Positioned( + left: 0, + right: 0, + top: -15, + child: Container( + height: 2.h, + width: 20.w, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(10.r), + color: Color(0xFFD90B2E)), + )), + Positioned( + left: 0, + right: 0, + top: 0, + bottom: 0, + child: Center( + child: Image.asset( + 'assets/images/png/BottomBar/inactivePeople.png', + height: 30.h, + width: 30.w, + ), + )) + ], + ), + + // SvgPicture.asset('assets/image/svg/active_protfolio.svg'), + label: 'Profile', + ), + ], + ), + ); +} diff --git a/lib/Common/CommonDropDown.dart b/lib/Common/CommonDropDown.dart new file mode 100644 index 0000000..0e28d6b --- /dev/null +++ b/lib/Common/CommonDropDown.dart @@ -0,0 +1,174 @@ +// ignore_for_file: prefer_const_constructors + +import 'dart:ui'; + +import 'package:dropdown_button2/dropdown_button2.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/flutter_svg.dart'; + +class CommonDropdownBtn extends StatefulWidget { + const CommonDropdownBtn({ + required this.hint, + required this.items, + this.isEnabled = true, + this.islocation = false, + this.textcolor = false, + this.onItemSelected, + bool showAddButton = false, + super.key, + }); + final String hint; + final List? items; + final void Function(String)? onItemSelected; + final bool isEnabled; + final bool islocation; + final bool textcolor; + + @override + State createState() => _CommonDropdownBtnState(); +} + +class _CommonDropdownBtnState extends State { + final kInnerDecoration = BoxDecoration( + color: Colors.white, + border: Border.all(color: Colors.white), + borderRadius: BorderRadius.circular(30.r), + ); + late String label; + final List items = [ + 'Item1', + 'Item2', + 'Item3', + 'Item4', + 'Item5', + 'Item6', + 'Item7', + 'Item8', + ]; + String? selectedValue; + + @override + Widget build(BuildContext context) { + return DropdownButtonHideUnderline( + child: Row( + children: [ + widget.islocation + ? Padding( + padding: EdgeInsets.only(left: 4.w), + child: SvgPicture.asset("assets/svg/location.svg"), + ) + : SizedBox(), + Expanded( + child: DropdownButton2( + isExpanded: true, + hint: Row( + children: [ + // SizedBox( + // width: 4, + // ), + // widget.islocation + // ? SvgPicture.asset("assets/svg/location.svg") + // : SizedBox(), + + // widget.islocation ? sizedBoxWidth(4.w) : SizedBox(), + + Expanded( + child: Text( + widget.hint, + style: TextStyle( + fontSize: 12.sp, + fontFamily: 'hiragino', + //fontWeight: FontWeight.bold, + color: Colors.white, + fontWeight: FontWeight.w500), + overflow: TextOverflow.ellipsis, + ), + ), + ], + ), + items: widget.items! + .map((item) => DropdownMenuItem( + value: item, + child: Text( + item, + style: TextStyle( + color: Colors.white, + fontSize: 16.sp, + fontFamily: 'hiragino', + fontWeight: FontWeight.w500, + ), + overflow: TextOverflow.ellipsis, + ), + )) + .toList(), + value: selectedValue, + onChanged: (value) { + setState(() { + selectedValue = value as String; + }); + }, + buttonStyleData: ButtonStyleData( + height: 50.h, + width: double.infinity, + padding: EdgeInsets.only(left: 12.w, right: 4.w), + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xFFffffff).withOpacity(0.8), + Color(0xFFFFFFFF).withOpacity(0.8), + ], + stops: [ + 0.1, + 1, + ]), + borderRadius: BorderRadius.circular(30.r), + border: Border.all( + color: Color(0xff434A53), + ), + color: Color(0xFFFFFFFF).withOpacity(0.05), + ), + elevation: 0, + ), + iconStyleData: IconStyleData( + icon: Icon( + Icons.keyboard_arrow_down, + ), + iconSize: 23.sp, + iconEnabledColor: Color(0xFFFFFFFF), + iconDisabledColor: Color(0xFFFFFFFF), + ), + dropdownStyleData: DropdownStyleData( + maxHeight: 200, + width: 350, + padding: null, + // padding: EdgeInsets.symmetric(horizontal: 16.w), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(30), + // border: Border.all( + // color: Color(0xffCCCCCC), + // ), + color: Color(0xFF222935), + ), + elevation: 0, + // offset: const Offset(-20, 0), + scrollbarTheme: ScrollbarThemeData( + radius: const Radius.circular(40), + thickness: MaterialStateProperty.all(6), + thumbVisibility: MaterialStateProperty.all(true), + ), + ), + menuItemStyleData: const MenuItemStyleData( + height: 40, + padding: EdgeInsets.only(left: 14, right: 14), + + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/Common/CommonGlassmorphism.dart b/lib/Common/CommonGlassmorphism.dart new file mode 100644 index 0000000..8b61018 --- /dev/null +++ b/lib/Common/CommonGlassmorphism.dart @@ -0,0 +1,37 @@ +import 'package:flutter/material.dart'; +import 'package:glassmorphism/glassmorphism.dart'; + +Widget commonGlassContainer( + {required double width, + required double height, + required double borderradius, + required Widget customWidget}) { + return GlassmorphicContainer( + width: width, + height: height, + borderRadius: borderradius, + blur: 10, + alignment: Alignment.topCenter, + border: 0.9, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xFFFFFFFF).withOpacity(0.04), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: const [ + 0.1, + 1, + ], + ), + borderGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xff434A53), + Color(0xFF434A53), + ], + ), + child: customWidget); +} diff --git a/lib/Common/controller/CommonTextFormField.dart b/lib/Common/controller/CommonTextFormField.dart new file mode 100644 index 0000000..a09b58b --- /dev/null +++ b/lib/Common/controller/CommonTextFormField.dart @@ -0,0 +1,154 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:glassmorphism/glassmorphism.dart'; + +class CustomTextFormField extends StatefulWidget { + const CustomTextFormField({ + Key? key, + this.validator, + this.textEditingController, + this.hintText, + this.leadingIcon, + this.prefixIconColor = const Color(0xFF737373), + this.isInputPassword = false, + this.validatorText, + this.value, + this.readonly = false, + this.enabled = true, + this.maxlines = 1, + this.texttype, + this.inputFormatters, + this.onInput, + this.onTap, + this.textCapV, + this.suffixIcon, + }) : super(key: key); + + final dynamic validator; + final TextEditingController? textEditingController; + final String? hintText; + final Widget? leadingIcon; + final Color prefixIconColor; + final bool isInputPassword; + final String? validatorText; + final String? value; + final bool readonly; + final bool enabled; + final int maxlines; + final TextInputType? texttype; + final dynamic inputFormatters; + final Function(String)? onInput; + final VoidCallback? onTap; + final TextCapitalization? textCapV; + final Widget? suffixIcon; + + @override + State createState() => _CustomTextFormFieldState(); +} + +class _CustomTextFormFieldState extends State { + late bool obscureText; + + @override + void initState() { + super.initState(); + obscureText = widget.isInputPassword; + } + + @override + Widget build(BuildContext context) { + return GlassmorphicContainer( + width: double.infinity, + height: 50.h, + borderRadius: 30, + blur: 10, + alignment: Alignment.center, + border: 1, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFffffff).withOpacity(0.04), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: [ + 0.1, + 1, + ]), + borderGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xff434A53), + const Color(0xff434A53), + ], + ), + child: TextFormField( + textAlignVertical: TextAlignVertical.center, + cursorColor: Color(0xff4A73FB), + initialValue: widget.value, + readOnly: widget.readonly, + onTap: widget.onTap, + enabled: widget.enabled, + enableInteractiveSelection: false, + maxLines: widget.maxlines, + autovalidateMode: AutovalidateMode.onUserInteraction, + obscureText: obscureText, + controller: widget.textEditingController, + textCapitalization: widget.textCapV ?? TextCapitalization.none, + decoration: InputDecoration( + hintStyle: TextStyle(color: Colors.white), + hintText: widget.hintText, + prefixIconColor: widget.prefixIconColor, + // ignore: prefer_null_aware_operators + prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!, + suffixIcon: widget.isInputPassword + ? GestureDetector( + onTap: () => setState(() => obscureText = !obscureText), + child: obscureText + ? const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: Icon(Icons.remove_red_eye), + ), + ], + ) + : const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: Icon( + Icons.remove_red_eye_outlined, + color: Color(0xFF959595), + ), + ), + ], + ), + ) + : widget.suffixIcon == null + ? null + : widget.suffixIcon!, + border: InputBorder.none, + contentPadding: + const EdgeInsets.symmetric(horizontal: 10, vertical: 20), + ), + style: const TextStyle(color: Colors.white), + keyboardType: widget.texttype, + // validator: widget.validator ?? + // (value) { + // if (value == null || value.isEmpty) { + // return "Empty value"; + // } + // return null; + // }, + inputFormatters: widget.inputFormatters, + onChanged: (value) { + widget.onInput?.call(value); + }, + ), + ); + } +} diff --git a/lib/Common/controller/MainController.dart b/lib/Common/controller/MainController.dart new file mode 100644 index 0000000..6832ca5 --- /dev/null +++ b/lib/Common/controller/MainController.dart @@ -0,0 +1,18 @@ +import 'package:get/get.dart'; +import 'package:regroup/Feed%20Module/Main_Screens/Community/Community.dart'; + +class MainController extends GetxController { + var selectedIndex = 0.obs; + + var currentTab = [ + const CommunityScreen(), + const CommunityScreen(), + const CommunityScreen(), + const CommunityScreen(), + const CommunityScreen(), + ].obs; + + void updateTab(int index) { + selectedIndex.value = index; + } +} diff --git a/lib/Common/controller/MainScreen.dart b/lib/Common/controller/MainScreen.dart new file mode 100644 index 0000000..ba6cbe8 --- /dev/null +++ b/lib/Common/controller/MainScreen.dart @@ -0,0 +1,18 @@ +import 'package:flutter/material.dart'; +import 'package:get/get.dart'; +import 'package:regroup/Common/controller/MainController.dart'; + +final MainController mainController = Get.put(MainController()); + +class MainScreen extends StatelessWidget { + const MainScreen({super.key}); + @override + Widget build(BuildContext context) { + return Obx(() { + return Scaffold( + body: mainController.currentTab[mainController.selectedIndex.value], + ); + }); + } + +} diff --git a/lib/Feed Module/Main_Screens/Community/Community.dart b/lib/Feed Module/Main_Screens/Community/Community.dart new file mode 100644 index 0000000..aaa290d --- /dev/null +++ b/lib/Feed Module/Main_Screens/Community/Community.dart @@ -0,0 +1,611 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_reaction_button/flutter_reaction_button.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:regroup/Common/CommonBottomNavigationBar.dart'; +import 'package:regroup/Common/CommonGlassmorphism.dart'; +import 'package:regroup/Common/controller/MainScreen.dart'; +import 'package:regroup/Feed%20Module/sidemenu/sidemenu.dart'; +import 'package:regroup/Utils/Common/blureffect.dart'; +import 'package:regroup/Utils/Common/sized_box.dart'; +import 'package:regroup/Utils/texts.dart'; +import 'package:regroup/resources/routes/route_name.dart'; + +class CommunityScreen extends StatefulWidget { + const CommunityScreen({super.key}); + + @override + State createState() => _CommunityScreenState(); +} + +final List titles = [ + 'Race', + 'Swimming', + 'Events', + 'Swimming', + 'Events', +]; + +class _CommunityScreenState extends State { + GlobalKey _scaffoldKey1 = GlobalKey(); + @override + Widget build(BuildContext context) { + return Scaffold( + key: _scaffoldKey1, + backgroundColor: Color(0xFF222935), + // drawerEnableOpenDragGesture: false, + drawer: SizedBox(width: 300.w, child: SideMenu()), + extendBody: true, + appBar: AppBar( + scrolledUnderElevation: 0.0, + backgroundColor: Color(0xff222935), + 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, + ), + ), + ), + title: Image.asset( + 'assets/images/png/Group.png', + width: 26.w, + height: 25.h, + ), + actions: [ + Image.asset( + 'assets/images/png/ion_search-outline.png', + height: 25.h, + width: 25.w, + ), + sizedBoxWidth(10.w), + Image.asset( + 'assets/images/png/Frame 9.png', + height: 25.h, + width: 25.w, + ), + sizedBoxWidth(16.w), + ], + ), + body: Stack(children: [ + const CommonBlurLeftRed(), + const CommonBlurRightRed(), + const CommonBlurLeft(), + const CommonBlurRight(), + Stack(children: [ + Padding( + padding: const EdgeInsets.symmetric(vertical: 16), + child: Column(children: [ + DefaultTabController( + length: 3, + // initialIndex: selectedIndex.value, + child: Column( + children: [ + MyTabBar(), + SizedBox( + height: 600.h, + child: TabBarView( + children: [ + feedTab(), + popularTab(), + latestTab(), + ], + ), + ), + ], + ), + ), + ])) + ]) + ]), + floatingActionButton: Container( + height: 55.h, + width: 55.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + boxShadow: [ + BoxShadow( + color: Color(0x40000000), // Hex color with 40% opacity + offset: Offset(0, 6), + blurRadius: 8, + ), + ], + ), + child: FloatingActionButton( + onPressed: () { + Get.toNamed(RouteName.postscreen); + }, + backgroundColor: Color(0xFFD90B2E), + autofocus: true, + shape: CircleBorder(), + child: Image.asset( + "assets/images/png/iconamoon_edit-thin.png", + height: 30.h, + width: 30.w, + ), + ), + ), + + bottomNavigationBar: bottomnavigationbar(mainController), + ); + } +} + +Widget feedTab() { + return SingleChildScrollView( + child: Column( + children: [ + normalcardtile(), + sizedBoxHeight(20.h), + tagCardTile(), + sizedBoxHeight(20.h), + normalcardtile(), + ], + ), + ); +} + +Widget normalcardtile() { + return Column( + children: [ + sizedBoxHeight(25.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CircleAvatar( + foregroundImage: AssetImage('assets/images/png/Ellipse 43.png'), + radius: 25.r, + ), + sizedBoxWidth(12.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + text16w400_FCFCFC('Edward Hackket'), + sizedBoxHeight(5.h), + Row( + children: [ + Image.asset( + 'assets/images/png/community 1 (traced).png', + height: 14.w, + width: 14.w, + ), + sizedBoxWidth(7.w), + text12w400_FCFCFC('Active alliance network'), + sizedBoxWidth(7.w), + Icon( + Icons.circle, + color: Color(0xFFFCFCFC), + size: 4.sp, + ), + sizedBoxWidth(6.w), + text12w400_FCFCFC('1 Hour ago'), + ], + ) + ], + ), + Spacer(), + PopupMenuButton( + surfaceTintColor: Color(0xFF222935), + constraints: BoxConstraints.tightFor(width: 176.w), + offset: Offset(0, 50), + color: Color(0xFF222935), + tooltip: "", + itemBuilder: (BuildContext context) => [ + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Row( + children: [ + Text( + 'Report Post', + style: TextStyle( + fontSize: 16.sp, + color: Colors.white, + fontWeight: FontWeight.w800, + fontFamily: "Nunito Sans", + ), + ), + Spacer(), + Image.asset( + "assets/images/png/Vector (5).png", + height: 15.h, + width: 15.w, + ) + ], + ), + ), + ), + PopupMenuDivider(), + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Row( + children: [ + Text( + 'Share post', + style: TextStyle( + fontSize: 16.sp, + color: Colors.white, + fontWeight: FontWeight.w800, + fontFamily: "Nunito Sans", + ), + ), + Spacer(), + Image.asset( + "assets/images/png/share.png", + height: 20.h, + width: 20.w, + ) + ], + ), + ), + ), + PopupMenuDivider(), + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 12.w), + child: Row( + children: [ + Text( + 'Pin', + style: TextStyle( + fontSize: 16.sp, + color: Colors.white, + fontWeight: FontWeight.w800, + fontFamily: "Nunito Sans", + ), + ), + Spacer(), + Image.asset( + "assets/images/png/f7_pin-fill (2).png", + height: 25.h, + width: 25.w, + ) + ], + ), + ), + ), + ], + child: Image.asset( + 'assets/images/png/Group 1000004071.png', + width: 4.w, + height: 18.h, + ), + ), + // GestureDetector( + // onTap: () {}, + // child: Image.asset( + // 'assets/images/png/Group 1000004071.png', + // width: 4.w, + // height: 18.h, + // ), + // ), + sizedBoxWidth(5.w) + ], + ), + ), + sizedBoxHeight(20.h), + Image.asset('assets/images/png/Rectangle 22.png'), + sizedBoxHeight(20.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column(children: [ + SizedBox( + height: 30.h, + child: ListView.builder( + scrollDirection: Axis.horizontal, + shrinkWrap: true, + itemCount: titles.length, + itemBuilder: (context, index) { + return Padding( + padding: EdgeInsets.only(right: 12.w), + child: GestureDetector( + onTap: () { + Get.toNamed(RouteName.cyclescreen); + }, + child: containertile(text: titles[index])), + ); + }, + ), + ), + sizedBoxHeight(20.h), + text16w400_FCFCFC( + "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."), + Row(children: [ + // commonGlassContainer( + // width: 30.w, + // height: 30.h, + // borderradius: 100, + // customWidget: Center( + // child: ReactionButton( + // itemSize: Size.fromHeight(20), + // onReactionChanged: (Reaction? reaction) { + // debugPrint('Selected value: ${reaction?.value}'); + // }, + // reactions: >[ + // Reaction( + // value: 'Party', + // icon: Image.asset( + // 'assets/images/png/party-popper 2.png', + // height: 17.h, + // width: 17.w, + // ), + // ), + // ], + // ), + // ), + + // sizedBoxWidth(7), + // text14w400_FCFCFC('20'), + Spacer(), + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'message', + icon: Image.asset( + 'assets/images/png/Vector.png', + height: 13.h, + width: 13.w, + ), + ), + ], + ), + ), + ), + sizedBoxWidth(12.w), + text14w400_FCFCFC('20'), + sizedBoxWidth(20.w), + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'message', + icon: Image.asset( + 'assets/images/png/Vector (1).png', + height: 12.h, + width: 12.w, + ), + ), + ], + ), + ), + ), + sizedBoxWidth(12.w), + text14w400_FCFCFC('10'), + ]), + sizedBoxHeight(30.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ReactionButton( + onReactionChanged: (reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: ?>[ + Reaction( + value: 'like', + previewIcon: _buildReactionsPreviewIcon( + 'assets/images/png/f7_hand-thumbsup.png'), + icon: _buildReactionsIcon( + 'assets/images/png/f7_hand-thumbsup.png'), + ), + Reaction( + value: 'heart', + previewIcon: _buildReactionsPreviewIcon( + 'assets/images/png/heart 2.png'), + icon: _buildReactionsIcon( + 'assets/images/png/heart 2.png'), + ), + Reaction( + value: 'party', + previewIcon: _buildReactionsPreviewIcon( + 'assets/images/png/party-popper 2.png'), + icon: _buildReactionsIcon( + 'assets/images/png/party-popper 2.png'), + ), + + // Add more reactions here if needed + ], + placeholder: Reaction( + value: 'like', + icon: _buildReactionsIcon( + 'assets/images/png/f7_hand-thumbsup.png'), + ), + selectedReaction: Reaction( + value: 'like', + icon: _buildReactionsIcon( + 'assets/images/png/f7_hand-thumbsup.png'), + ), + boxColor: Colors.white, + boxElevation: 5, + boxRadius: 50, + itemsSpacing: 8, + itemScale: 0.3, + itemSize: Size(40.w, 40.h), + boxPadding: EdgeInsets.all(4), + boxAnimationDuration: Duration(milliseconds: 200), + itemAnimationDuration: Duration(milliseconds: 100), + hoverDuration: Duration(milliseconds: 400), + toggle: false, + direction: ReactionsBoxAlignment.ltr, + child: _buildReactionsIcon( + 'assets/images/png/uiw_like-o.png', + ), + ), + ], + ), + ], + ), + sizedBoxHeight(8.h), + text11w400_FCFCFC('Like') + ], + ), + Column( + children: [ + Image.asset( + 'assets/images/png/Vector.png', + height: 19.h, + width: 19.w, + ), + sizedBoxHeight(8.h), + text11w400_FCFCFC('Comment') + ], + ), + Column( + children: [ + Image.asset( + 'assets/images/png/Frame 1000004089.png', + height: 19.h, + width: 19.w, + ), + sizedBoxHeight(8.h), + text11w400_FCFCFC('Save') + ], + ) + ], + ) + ]), + ), + ], + ); +} + +Widget _buildReactionsPreviewIcon(String assetPath) { + return Padding( + padding: const EdgeInsets.all(8.0), + child: Image.asset( + assetPath, + height: 40.h, + width: 40.w, + ), + ); +} + +Widget _buildReactionsIcon(String assetPath) { + return Image.asset( + assetPath, + height: 19.h, + width: 19.w, + ); +} + +Widget tagCardTile() { + return commonGlassContainer( + width: double.infinity, + height: 580.h, + borderradius: 1, + customWidget: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + sizedBoxHeight(16.h), + Padding( + padding: EdgeInsets.only(left: 16.w), + child: text16w400_FCFCFC('#Announcement'), + ), + normalcardtile(), + ], + )); +} + +Widget containertile({required String text}) { + return commonGlassContainer( + width: 100.w, + height: 30.h, + borderradius: 30.r, + customWidget: Padding( + padding: EdgeInsets.symmetric(horizontal: 10.w), + child: Center(child: text14w400_FCFCFC(text)), + )); +} + +Widget popularTab() { + return SingleChildScrollView( + child: Column( + children: [ + Column( + children: [ + normalcardtile(), + sizedBoxHeight(20.h), + normalcardtile(), + ], + ), + ], + ), + ); +} + +Widget latestTab() { + return Column( + children: [], + ); +} + +class MyTabBar extends StatelessWidget { + // Set the desired height + + @override + Widget build(BuildContext context) { + return TabBar( + dividerColor: Color(0xFFFFFFFF).withOpacity(0.07), + labelStyle: TextStyle( + fontSize: 14.sp, + color: Color(0xFFFCFCFC), + fontWeight: FontWeight.w400, + fontFamily: 'Helvetica'), + indicatorSize: TabBarIndicatorSize.tab, + indicatorColor: const Color(0xFFD90B2E), + // labelColor: Colors.white, + indicatorWeight: 2.h, + dividerHeight: 2.h, + unselectedLabelColor: Color(0xFFFCFCFC), + overlayColor: MaterialStateProperty.all(const Color(0xFFD90B2E)), + tabs: const [ + Tab( + text: 'Feed', + ), + Tab( + text: 'Popular', + ), + Tab( + text: 'Latest', + ), + ]); + } +} diff --git a/lib/Feed Module/Main_Screens/Community/CycleScreen.dart b/lib/Feed Module/Main_Screens/Community/CycleScreen.dart new file mode 100644 index 0000000..5550204 --- /dev/null +++ b/lib/Feed Module/Main_Screens/Community/CycleScreen.dart @@ -0,0 +1,354 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_reaction_button/flutter_reaction_button.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:regroup/Common/CommonGlassmorphism.dart'; +import 'package:regroup/Feed%20Module/Main_Screens/Community/Community.dart'; +import 'package:regroup/Utils/Common/CommonAppbar.dart'; +import 'package:regroup/Utils/Common/blureffect.dart'; +import 'package:regroup/Utils/Common/sized_box.dart'; +import 'package:regroup/Utils/texts.dart'; + +class CycleScreen extends StatefulWidget { + const CycleScreen({super.key}); + + @override + State createState() => _CycleScreenState(); +} + +class _CycleScreenState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Color(0xFF222935), + extendBody: true, + appBar: CommonAppbar( + titleTxt: "Cycle", + customActionWidget: Image.asset( + "assets/images/png/sidemenu/f7_pin-fill.png", + height: 26.h, + width: 26.w, + )), + body: Stack(children: [ + const CommonBlurLeftRed(), + const CommonBlurRightRed(), + const CommonBlurLeft(), + const CommonBlurRight(), + Positioned( + child: Column(children: [ + sizedBoxHeight(10.h), + DefaultTabController( + length: 2, + // initialIndex: selectedIndex.value, + child: Column( + children: [ + CycleTabBar(), + SizedBox( + height: 670.h, + child: TabBarView( + children: [ + CyclepopularTab(), + CyclelatestTab(), + ], + ), + ), + ], + )) + ])) + ])); + } +} + +Widget CyclepopularTab() { + return SingleChildScrollView( + child: Column(children: [ + normalcardtile(), + sizedBoxHeight(30.h), + normalcardtile(), + ]), + ); +} + +Widget CyclelatestTab() { + return SingleChildScrollView( + child: Column(children: [ + normalcardtile(), + ]), + ); +} + +Widget normalcardtile() { + return Column( + children: [ + sizedBoxHeight(25.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CircleAvatar( + foregroundImage: AssetImage('assets/images/png/Ellipse 43.png'), + radius: 25.r, + ), + sizedBoxWidth(12.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + text16w400_FCFCFC('Edward Hackket'), + sizedBoxHeight(5.h), + Row( + children: [ + Image.asset( + 'assets/images/png/community 1 (traced).png', + height: 14.w, + width: 14.w, + ), + sizedBoxWidth(7.w), + text12w400_FCFCFC('Active alliance network'), + sizedBoxWidth(7.w), + Icon( + Icons.circle, + color: Color(0xFFFCFCFC), + size: 4.sp, + ), + sizedBoxWidth(6.w), + text12w400_FCFCFC('1 Hour ago'), + ], + ) + ], + ), + Spacer(), + Image.asset( + 'assets/images/png/Group 1000004071.png', + width: 4.w, + height: 18.h, + ), + sizedBoxWidth(5.w) + ], + ), + ), + sizedBoxHeight(20.h), + Image.asset('assets/images/png/Rectangle 22.png'), + sizedBoxHeight(20.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column(children: [ + SizedBox( + height: 30.h, + child: ListView.builder( + scrollDirection: Axis.horizontal, + shrinkWrap: true, + itemCount: titles.length, + itemBuilder: (context, index) { + return Padding( + padding: EdgeInsets.only(right: 12.w), + child: containertile(text: titles[index]), + ); + }, + ), + ), + sizedBoxHeight(20.h), + text16w400_FCFCFC( + "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."), + Row(children: [ + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'like', + icon: Image.asset( + 'assets/images/png/f7_hand-thumbsup.png', + height: 17.h, + width: 17.w, + ), + ), + ], + ), + ), + ), + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'Favourite', + icon: Image.asset( + 'assets/images/png/heart 2.png', + height: 17.h, + width: 17.w, + ), + ), + ], + ), + ), + ), + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'Party', + icon: Image.asset( + 'assets/images/png/party-popper 2.png', + height: 17.h, + width: 17.w, + ), + ), + ], + ), + ), + ), + sizedBoxWidth(7), + text14w400_FCFCFC('20'), + Spacer(), + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'message', + icon: Image.asset( + 'assets/images/png/Vector.png', + height: 13.h, + width: 13.w, + ), + ), + ], + ), + ), + ), + sizedBoxWidth(12.w), + text14w400_FCFCFC('20'), + sizedBoxWidth(20.w), + commonGlassContainer( + width: 30.w, + height: 30.h, + borderradius: 100, + customWidget: Center( + child: ReactionButton( + itemSize: Size.fromHeight(20), + onReactionChanged: (Reaction? reaction) { + debugPrint('Selected value: ${reaction?.value}'); + }, + reactions: >[ + Reaction( + value: 'message', + icon: Image.asset( + 'assets/images/png/Vector (1).png', + height: 12.h, + width: 12.w, + ), + ), + ], + ), + ), + ), + sizedBoxWidth(12.w), + text14w400_FCFCFC('10'), + ]), + sizedBoxHeight(30.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Column( + children: [ + GestureDetector( + onTap: () {}, + child: Image.asset( + 'assets/images/png/uiw_like-o.png', + height: 19.h, + width: 19.w, + ), + ), + sizedBoxHeight(8.h), + text11w400_FCFCFC('Like') + ], + ), + Column( + children: [ + Image.asset( + 'assets/images/png/Vector.png', + height: 19.h, + width: 19.w, + ), + sizedBoxHeight(8.h), + text11w400_FCFCFC('Comment') + ], + ), + Column( + children: [ + Image.asset( + 'assets/images/png/Frame 1000004089.png', + height: 19.h, + width: 19.w, + ), + sizedBoxHeight(8.h), + text11w400_FCFCFC('Save') + ], + ) + ], + ) + ]), + ), + ], + ); +} + +class CycleTabBar extends StatelessWidget { + // Set the desired height + + @override + Widget build(BuildContext context) { + return TabBar( + dividerColor: Color(0xFFFFFFFF).withOpacity(0.07), + labelStyle: TextStyle( + fontSize: 14.sp, + color: Color(0xFFFCFCFC), + fontWeight: FontWeight.w400, + fontFamily: 'Helvetica'), + indicatorSize: TabBarIndicatorSize.tab, + indicatorColor: const Color(0xFFD90B2E), + // labelColor: Colors.white, + indicatorWeight: 2.h, + dividerHeight: 2.h, + unselectedLabelColor: Color(0xFFFCFCFC), + overlayColor: MaterialStateProperty.all(const Color(0xFFD90B2E)), + tabs: const [ + Tab( + text: 'Popular', + ), + Tab( + text: 'Latest', + ), + ]); + } +} diff --git a/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart b/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart new file mode 100644 index 0000000..6d879a2 --- /dev/null +++ b/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart @@ -0,0 +1,15 @@ +import 'package:flutter/cupertino.dart'; + +class PostDetailsScreen extends StatefulWidget { + const PostDetailsScreen({super.key}); + + @override + State createState() => _PostDetailsScreenState(); +} + +class _PostDetailsScreenState extends State { + @override + Widget build(BuildContext context) { + return const Placeholder(); + } +} \ No newline at end of file diff --git a/lib/Feed Module/Main_Screens/Community/PostScreen.dart b/lib/Feed Module/Main_Screens/Community/PostScreen.dart new file mode 100644 index 0000000..27cc000 --- /dev/null +++ b/lib/Feed Module/Main_Screens/Community/PostScreen.dart @@ -0,0 +1,158 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_reaction_button/flutter_reaction_button.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:get/get.dart'; +import 'package:regroup/Common/CommonDropDown.dart'; +import 'package:regroup/Common/CommonGlassmorphism.dart'; +import 'package:regroup/Utils/Common/CommonAppbar.dart'; +import 'package:regroup/Utils/Common/CustomTextformfield.dart'; +import 'package:regroup/Utils/Common/blureffect.dart'; +import 'package:regroup/Utils/Common/sized_box.dart'; +import 'package:regroup/Utils/texts.dart'; + +class PostScreen extends StatefulWidget { + const PostScreen({super.key}); + + @override + State createState() => _PostScreenState(); +} + +class _PostScreenState extends State { + var selectedContainerIndices = {}.obs; + + void toggleSelectedIndex(int index) { + if (selectedContainerIndices.contains(index)) { + selectedContainerIndices.remove(index); + } else { + selectedContainerIndices.add(index); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Color(0xFF222935), + extendBody: true, + appBar: CommonAppbar( + titleTxt: "Create a post", + ), + body: Stack(children: [ + const CommonBlurLeftRed(), + const CommonBlurRightRed(), + const CommonBlurLeft(), + const CommonBlurRight(), + Positioned.fill( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + sizedBoxHeight(20.h), + text16w400_FCFCFC("Caption"), + sizedBoxHeight(20.h), + const CustomTextFormField2( + maxlines: 3, + ), + sizedBoxHeight(25.h), + text16w400_FCFCFC("Media"), + sizedBoxHeight(20.h), + commonGlassContainer( + width: double.infinity, + height: 130.h, + borderradius: 10.r, + customWidget: Padding( + padding: EdgeInsets.symmetric(vertical: 16.h), + child: Column( + children: [ + Image.asset( + "assets/images/png/bi_download.png", + height: 36.h, + width: 36.w, + ), + sizedBoxHeight(10.h), + text14w400_FCFCFC("Upload image"), + sizedBoxHeight(8.h), + text8w400_8A8A8A( + "Allowed file extensions: jpg, png, gif Max file size: 10 MB"), + ], + ), + )), + sizedBoxHeight(25.h), + text16w400_FCFCFC("Tags"), + sizedBoxHeight(25.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + containerTile(text: "# Race", index: 0), + containerTile(text: "# Swimming", index: 1), + containerTile(text: "# Cycle", index: 2), + ], + ), + sizedBoxHeight(16.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + containerTile(text: "# Race", index: 3), + containerTile(text: "# Swimming", index: 4), + containerTile(text: "# Cycle", index: 5), + ], + ), + sizedBoxHeight(30.h), + text16w400_FCFCFC("CTA Title"), + sizedBoxHeight(25.h), + CustomTextFormField(), + sizedBoxHeight(30.h), + text16w400_FCFCFC("Post as"), + sizedBoxHeight(25.h), + CommonDropdownBtn(hint: '', items: [ + 'Active alliance network', + 'Fitfam federation', + 'The athletic town' + ]), + sizedBoxHeight(30.h), + text16w400_FCFCFC("Post as"), + sizedBoxHeight(25.h), + CommonDropdownBtn(hint: '', items: [ + 'Active alliance network', + 'Fitfam federation', + 'The athletic town' + ]), + + sizedBoxHeight(100.h), + ]), + ), + )) + ])); + } + + + + Widget containerTile({ + required String text, + required int index, + }) { + return Obx(() { + return GestureDetector( + onTap: () { + toggleSelectedIndex(index); + }, + child: Container( + height: 35, + decoration: BoxDecoration( + color: selectedContainerIndices.contains(index) + ? Color(0xFFD90B2E).withOpacity(0.4) + : Color(0xFFFFFFFF).withOpacity(0.2), + borderRadius: BorderRadius.circular(30), + border: selectedContainerIndices.contains(index) + ? Border.all(color: Color(0xFFD90B2E), width: 1) + : null), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 20), + child: Center(child: text14w400_FCFCFC(text)), + ), + ), + ); + }); + } +} diff --git a/lib/Feed Module/sidemenu/SavedPosts/SavedPosts.dart b/lib/Feed Module/sidemenu/SavedPosts/SavedPosts.dart new file mode 100644 index 0000000..2dd808b --- /dev/null +++ b/lib/Feed Module/sidemenu/SavedPosts/SavedPosts.dart @@ -0,0 +1,75 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:regroup/Utils/Common/CommonAppbar.dart'; +import 'package:regroup/Utils/Common/blureffect.dart'; +import 'package:regroup/Utils/Common/sized_box.dart'; + +class SavedPosts extends StatefulWidget { + const SavedPosts({super.key}); + + @override + State createState() => _SavedPostsState(); +} + +class _SavedPostsState extends State { + final List images = [ + 'assets/images/png/Rectangle 24.png', + 'assets/images/png/Rectangle 25.png', + 'assets/images/png/Rectangle 26.png', + 'assets/images/png/Rectangle 27.png', + 'assets/images/png/Rectangle 28.png', + 'assets/images/png/Rectangle 29.png', + 'assets/images/png/Rectangle 30.png', + 'assets/images/png/Rectangle 31.png', + 'assets/images/png/Rectangle 32.png', + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + // key: _scaffoldKey1, + backgroundColor: Color(0xFF222935), + extendBody: true, + appBar: CommonAppbar( + titleTxt: "Saved posts", + ), + body: Stack(children: [ + const CommonBlurLeftRed(), + const CommonBlurRightRed(), + const CommonBlurLeft(), + const CommonBlurRight(), + Positioned.fill( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + children: [ + sizedBoxHeight(40.h), + Container( + height: 600.h, + child: GridView.builder( + scrollDirection: Axis.vertical, + gridDelegate: + const SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + mainAxisSpacing: 8, + crossAxisSpacing: 8, + childAspectRatio: 1, + ), + itemCount: images.length, + itemBuilder: (context, index) { + return Container( + width: 115.w, + height: 115.h, + child: Image.asset( + images[index], + width: 115.w, + height: 115.h, + fit: BoxFit.cover, + )); + }), + ) + ], + ))), + ])); + } +} diff --git a/lib/Feed Module/sidemenu/sidemenu.dart b/lib/Feed Module/sidemenu/sidemenu.dart new file mode 100644 index 0000000..8c4c92c --- /dev/null +++ b/lib/Feed Module/sidemenu/sidemenu.dart @@ -0,0 +1,330 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:get/get.dart'; +import 'package:regroup/Common/CommonGlassmorphism.dart'; +import 'package:regroup/Utils/Common/sized_box.dart'; +import 'package:regroup/Utils/texts.dart'; +import 'package:regroup/resources/routes/route_name.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +class SideMenu extends StatefulWidget { + const SideMenu({super.key}); + + @override + State createState() => _SideMenuState(); +} + +class _SideMenuState extends State { + @override + void initState() { + // TODO: implement initState + super.initState(); + } + + final RxBool isPinned = false.obs; + + List sideBarData = [ + { + "imagePath": "assets/images/svg/sidemenu/Faq.svg", + "text": "FAQ’s", + }, + { + "imagePath": "assets/images/svg/sidemenu/contact.svg", + "text": "Contact Us" + }, + { + "imagePath": "assets/images/svg/sidemenu/rate.svg", + "text": "Rate this app" + }, + { + "imagePath": "assets/images/svg/sidemenu/terms.svg", + "text": "Terms & Conditions" + }, + { + "imagePath": "assets/images/svg/sidemenu/privacy.svg", + "text": "Privacy Policy" + }, + {"imagePath": "assets/images/svg/sidemenu/about.svg", "text": "About Us"}, + { + "imagePath": "assets/images/svg/sidemenu/settingmenu.svg", + "text": "Settings" + }, + {"imagePath": "assets/images/svg/sidemenu/logout.svg", "text": "Logout"}, + ]; + + Color sideBarBackgroundColor = const Color(0xFF222935); + Color whitecolor = Colors.white; + + var selectedIndices = {}.obs; + + void toggleSelectedIndex(int index) { + if (selectedIndices.contains(index)) { + selectedIndices.remove(index); + } else { + selectedIndices.add(index); + } + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: Color(0xFF222935), + body: ListView(children: [ + Padding( + padding: EdgeInsets.only(left: 16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + sizedBoxHeight(40.h), + text18w400_FCFCFC("Social pages"), + sizedBoxHeight(30.h), + text16w400_FCFCFC("Pinned"), + sizedBoxHeight(25.h), + ], + ), + ), + firstRowTile( + text: "Row bridge", + leadingimage: "assets/images/png/sidemenu/rowing 1 (traced).png", + index: 1), + firstRowTile( + text: "Advice", + leadingimage: + "assets/images/png/sidemenu/solar_cloud-outline.png", + index: 2), + firstRowTile( + text: "Crush", + leadingimage: "assets/images/png/sidemenu/Vector (4).png", + index: 3), + ListTile( + leading: CircleAvatar( + radius: 15.r, + foregroundImage: + AssetImage("assets/images/png/sidemenu/Ellipse 52.png"), + ), + title: text14w400_FCFCFC("Ryan Dorwart"), + trailing: Image.asset( + "assets/images/png/sidemenu/f7_pin-fill (1).png", + width: 19.w, + height: 19.h, + ), + onTap: () {}, + ), + ListTile( + leading: CircleAvatar( + radius: 15.r, + foregroundImage: + AssetImage("assets/images/png/sidemenu/Ellipse 53.png"), + ), + title: text14w400_FCFCFC("Ahmad Rhiel Madsen"), + trailing: Image.asset( + "assets/images/png/sidemenu/f7_pin-fill (1).png", + width: 19.w, + height: 19.h, + ), + onTap: () {}, + ), + sizedBoxHeight(18.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Container( + height: 1, + margin: EdgeInsets.symmetric(vertical: 10.h), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: Color.fromRGBO(255, 255, 255, 0.3), + width: 1.w, + ), + ), + ), + ), + ), + sizedBoxHeight(18.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Row( + children: [ + text16w400_FCFCFC("Communities"), + Spacer(), + text14w400_FCFCFC("View all"), + ], + ), + ), + sizedBoxHeight(20.h), + firstRowTile( + text: "Row bridge", + leadingimage: "assets/images/png/sidemenu/rowing 1 (traced).png", + index: 4), + firstRowTile( + text: "Advice", + leadingimage: + "assets/images/png/sidemenu/solar_cloud-outline.png", + index: 5), + firstRowTile( + text: "Crush", + leadingimage: "assets/images/png/sidemenu/Vector (4).png", + index: 6), + firstRowTile( + text: "Row bridge", + leadingimage: "assets/images/png/sidemenu/rowing 1 (traced).png", + index: 7), + sizedBoxHeight(18.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Container( + height: 1, + margin: EdgeInsets.symmetric(vertical: 10.h), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: Color.fromRGBO(255, 255, 255, 0.3), + width: 1.w, + ), + ), + ), + ), + ), + sizedBoxHeight(16.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Row( + children: [ + text16w400_FCFCFC("Saved post"), + Spacer(), + GestureDetector( + onTap: () { + Get.toNamed(RouteName.savedposts); + }, + child: text14w400_FCFCFC("View all")), + ], + ), + ), + sizedBoxHeight(80.h), + ])); + } + + Widget firstRowTile({ + required String text, + required String leadingimage, + required int index, + }) { + return ListTile( + leading: commonGlassContainer( + width: 29.w, + height: 29.h, + borderradius: 100, + customWidget: Center( + child: Image.asset( + leadingimage, + width: 13.w, + height: 13.h, + ), + )), + title: text14w400_FCFCFC(text), + trailing: Obx( + () { + return selectedIndices.contains(index) + ? Image.asset( + "assets/images/png/sidemenu/f7_pin-fill.png", + width: 19, + height: 19, + ) + : Image.asset( + "assets/images/png/sidemenu/f7_pin-fill (1).png", + width: 19, + height: 19, + ); + }, + ), + onTap: () { + toggleSelectedIndex(index); + }, + ); + } + +// LogOutdialog(context) { +// return showDialog( +// // barrierDismissible: false, +// context: context, +// builder: (context) => Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// AlertDialog( +// insetPadding: EdgeInsets.symmetric(horizontal: 16.w), +// backgroundColor: +// Get.isDarkMode ? Colors.black : const Color(0XFF1B243D), +// contentPadding: EdgeInsets.fromLTRB(29.w, 44.h, 29.w, 35.h), +// shape: RoundedRectangleBorder( +// borderRadius: BorderRadius.all(Radius.circular(5.r)), +// ), +// content: Column( +// mainAxisAlignment: MainAxisAlignment.center, +// crossAxisAlignment: CrossAxisAlignment.center, +// children: [ +// Container( +// height: 87.h, +// width: 80.w, +// decoration: const BoxDecoration( +// shape: BoxShape.circle, color: Color(0xFFC18948)), +// child: Align( +// alignment: Alignment.topLeft, +// child: Container( +// height: 79.h, +// width: 73.w, +// decoration: BoxDecoration( +// shape: BoxShape.circle, +// color: const Color(0xFFE8C69F).withOpacity(0.5), +// ), +// child: Center( +// child: SvgPicture.asset( +// 'assets/images/svg/apps 1.svg', +// // fit: BoxFit.fill, +// ), +// ), +// ), +// ), +// ), +// sizedBoxHeight(30.h), +// Text( +// "Are you sure you want to logout ?", +// textAlign: TextAlign.center, +// style: TextStyle( +// fontFamily: "hiragino", +// fontWeight: FontWeight.w400, +// fontSize: 20.sp, +// color: const Color(0xFFFFFFFF)), +// ), +// sizedBoxHeight(40.h), +// Row( +// mainAxisAlignment: MainAxisAlignment.spaceBetween, +// children: [ +// SizedBox( +// width: 140.w, +// child: CommonYesNoBtn( +// yesonTap: () async { +// SharedPreferences prefs = +// await SharedPreferences.getInstance(); +// await prefs.clear(); +// Get.offNamed(RouteName.loginscreen); +// }, +// )), +// SizedBox( +// width: 140.w, +// child: CommonYesNoBtn( +// noonTap: () { +// Get.back(); +// }, +// ), +// ), +// ], +// ) +// ], +// ), +// ), +// ], +// ), +// ); +// } +} diff --git a/lib/Utils/Common/CommonAppbar.dart b/lib/Utils/Common/CommonAppbar.dart index d3da29f..9b11b03 100644 --- a/lib/Utils/Common/CommonAppbar.dart +++ b/lib/Utils/Common/CommonAppbar.dart @@ -1,101 +1,234 @@ // ignore_for_file: non_constant_identifier_names, file_names, prefer_const_constructors +// import 'package:flutter/material.dart'; +// import 'package:flutter_screenutil/flutter_screenutil.dart'; +// import 'package:get/get.dart'; + import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:get/get.dart'; +import 'package:regroup/Common/CommonGlassmorphism.dart'; +import 'package:regroup/Utils/Common/sized_box.dart'; class CommonAppbar extends StatelessWidget implements PreferredSizeWidget { @override Size get preferredSize => Size.fromHeight(height); - const CommonAppbar( - {Key? key, - required this.titleTxt, - this.showLeading = true, - this.customBack, - this.aifBack, - this.profileverifyback, - this.backPageName = '', - this.height = 105}) - : super(key: key); + const CommonAppbar({ + Key? key, + required this.titleTxt, + this.showLeading = true, + this.customActionWidget, + this.onCustomActionPressed, + this.showEdit = false, + this.customBack, + this.editPageName, + this.height = 80, + }) : super(key: key); final String titleTxt; final bool? showLeading; + final Widget? customActionWidget; + final VoidCallback? onCustomActionPressed; + final bool? showEdit; final bool? customBack; - final bool? aifBack; - - final String? backPageName; + final String? editPageName; final double height; - final bool? profileverifyback; @override Widget build(BuildContext context) { return PreferredSize( - preferredSize: Size.fromHeight(130), + preferredSize: Size.fromHeight(80), child: AppBar( scrolledUnderElevation: 0.0, - backgroundColor: Color(0xFFFFF3E4), + backgroundColor: Color(0xFF222935), elevation: 0, - leadingWidth: 56.w, - leading: Padding( - padding: EdgeInsets.only(left: 16.w, top: 20.h), - child: GestureDetector( - onTap: () { - // aifBack == true - // ? - // Get.back() - // : - // customBack ?? false ? Get.toNamed(backPageName!) : - // profileverifyback == true - // ? - // Get.offNamed( - // RouteName.investorprofile) - // : - Get.back(); - }, - child: Container( - height: 40.h, - width: 40.w, - decoration: const BoxDecoration( - color: Color(0xFFFFE3BF), - shape: BoxShape.circle, + automaticallyImplyLeading: false, + titleSpacing: 0, + title: showLeading! + ? Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Text( + titleTxt, + softWrap: true, + overflow: TextOverflow.visible, + textAlign: TextAlign.start, + style: TextStyle( + fontFamily: 'Helvetica', + fontSize: 20.sp, + fontWeight: FontWeight.w400, + color: Color(0xFFFCFCFC), + ), + ), + ), + ], + ), + ), + ) + : SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Text( + titleTxt, + softWrap: true, + overflow: TextOverflow.visible, + textAlign: TextAlign.start, + style: TextStyle( + fontFamily: 'Helvetica', + fontSize: 20.sp, + fontWeight: FontWeight.w400, + color: Color(0xFFFCFCFC), + ), + ), + ), + ], + ), ), + leading: showLeading! + ? InkWell( + onTap: () { + Get.back(); + }, + child: Row( + children: [ + sizedBoxWidth(10.w), + commonGlassContainer( + width: 40.w, + height: 40.h, + borderradius: 100, + customWidget: Center( + child: Icon( + Icons.arrow_back, + color: Colors.white, + size: 20.sp, + ), + ), + ), + ], + )) + : null, + actions: [ + if (customActionWidget != null) + InkWell( + onTap: onCustomActionPressed, child: Padding( - padding: EdgeInsets.only(left: 8.w), - child: Icon( - Icons.arrow_back_ios, - color: Colors.black, - size: 25.r, - ), + padding: EdgeInsets.only(right: 14.w), + child: customActionWidget, ), ), - ), - ), - flexibleSpace: FlexibleSpaceBar( - centerTitle: false, - titlePadding: EdgeInsets.all(0), - title: Padding( - padding: EdgeInsets.only(left: 16.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - titleTxt, - style: TextStyle( - color: Color(0xFF1A1A1A), - fontSize: 22, - fontFamily: 'Georgia'), - maxLines: 2, - softWrap: true, - ), - // newTextfield( - // FontWeight.w400, 0) - ], - ), - ), - ), + ], ), ); } } + + + + + + + + + + + + + + + +// class CommonAppbar extends StatelessWidget implements PreferredSizeWidget { +// @override +// Size get preferredSize => Size.fromHeight(height); +// const CommonAppbar( +// {Key? key, +// required this.titleTxt, +// this.showLeading = true, +// this.customBack, +// this.aifBack, +// this.profileverifyback, +// this.backPageName = '', +// this.height = 80}) +// : super(key: key); + +// final String titleTxt; +// final bool? showLeading; +// final bool? customBack; +// final bool? aifBack; + +// final String? backPageName; +// final double height; +// final bool? profileverifyback; + +// @override +// Widget build(BuildContext context) { +// return PreferredSize( +// preferredSize: Size.fromHeight(130), +// child: AppBar( +// scrolledUnderElevation: 0.0, +// backgroundColor: Color(0xFF222935), +// elevation: 0, +// leadingWidth: 56.w, +// leading: Padding( +// padding: EdgeInsets.only(left: 16.w, top: 20.h), +// child: GestureDetector( +// onTap: () { +// Get.back(); +// }, +// child: Container( +// height: 40.h, +// width: 40.w, +// decoration: const BoxDecoration( +// color: Color(0xFFFFE3BF), +// shape: BoxShape.circle, +// ), +// child: Padding( +// padding: EdgeInsets.only(left: 8.w), +// child: Icon( +// Icons.arrow_back_ios, +// color: Colors.black, +// size: 25.r, +// ), +// ), +// ), +// ), +// ), +// flexibleSpace: FlexibleSpaceBar( +// titlePadding: EdgeInsets.all(0), +// title: Padding( +// padding: EdgeInsets.only(left: 16.w), +// child: Column( +// crossAxisAlignment: CrossAxisAlignment.start, +// mainAxisAlignment: MainAxisAlignment.end, +// children: [ +// Text( +// titleTxt, +// style: TextStyle( +// color: Color(0xFF1A1A1A), +// fontSize: 22, +// fontFamily: 'Georgia'), +// maxLines: 2, +// softWrap: true, +// ), +// // newTextfield( +// // FontWeight.w400, 0) +// ], +// ), +// ), +// ), +// ), +// ); +// } +// } diff --git a/lib/Utils/Common/CustomTextformfield.dart b/lib/Utils/Common/CustomTextformfield.dart index b50a58b..e9d0740 100644 --- a/lib/Utils/Common/CustomTextformfield.dart +++ b/lib/Utils/Common/CustomTextformfield.dart @@ -3,57 +3,53 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:glassmorphism/glassmorphism.dart'; import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart'; class CustomTextFormField extends StatefulWidget { - CustomTextFormField({ + const CustomTextFormField({ Key? key, this.validator, - this.inputFormatters, + this.textEditingController, this.hintText, + this.leadingIcon, + this.prefixIconColor = const Color(0xFF737373), + this.isInputPassword = false, this.validatorText, this.value, - this.textEditingController, - this.leadingIcon, this.readonly = false, this.enabled = true, - this.textCapital = false, - this.isInputPassword = false, - this.outlineColor = Colors.black, - this.bgColor = const Color(0xFFFFF3E4), - this.prefixIconColor = const Color(0xFF737373), + this.maxlines = 1, this.texttype, + this.inputFormatters, this.onInput, this.onTap, - this.maxlines = 1, + this.suffixIcon, }) : super(key: key); - dynamic validator; + final dynamic validator; final TextEditingController? textEditingController; final String? hintText; + final Widget? leadingIcon; + final Color prefixIconColor; + final bool isInputPassword; final String? validatorText; final String? value; - final Widget? leadingIcon; - final bool isInputPassword; final bool readonly; final bool enabled; - final bool textCapital; - final dynamic inputFormatters; - final Color outlineColor; - final Color bgColor; - final Color prefixIconColor; - final TextInputType? texttype; - Function(String)? onInput; - final VoidCallback? onTap; final int maxlines; + final TextInputType? texttype; + final dynamic inputFormatters; + final Function(String)? onInput; + final VoidCallback? onTap; + final Widget? suffixIcon; @override - State createState() => _CustomtextFormFieldState(); + State createState() => _CustomTextFormFieldState(); } -class _CustomtextFormFieldState extends State { +class _CustomTextFormFieldState extends State { late bool obscureText; - var emojiFormatter = RemoveEmojiInputFormatter(); @override void initState() { @@ -63,108 +59,257 @@ class _CustomtextFormFieldState extends State { @override Widget build(BuildContext context) { - List allFormatters = [emojiFormatter]; -if (widget.inputFormatters != null) { - allFormatters.addAll(widget.inputFormatters); -} - return TextFormField( - textCapitalization: widget.textCapital - ? TextCapitalization.characters - : TextCapitalization.none, - onTap: widget.onTap, - style: TextStyle( - fontSize: 16.sp, + return GlassmorphicContainer( + width: double.infinity, + height: 50, + borderRadius: 30, + blur: 10, + alignment: Alignment.bottomCenter, + border: 0.8, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFffffff).withOpacity(0.04), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: [ + 0.1, + 1, + ]), + borderGradient: const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xff434A53), + Color(0xFF434A53), + ], ), - initialValue: widget.value, - readOnly: widget.readonly, - enabled: widget.enabled, - //enableInteractiveSelection: false, - maxLines: widget.maxlines, - cursorColor: Colors.black, - autovalidateMode: AutovalidateMode.onUserInteraction, - obscureText: obscureText, - controller: widget.textEditingController, - decoration: InputDecoration( - labelStyle: const TextStyle(color: Colors.black), - errorStyle: TextStyle( - fontSize: 13.sp, - color: Color.fromARGB(255, 245, 130, 122), - ), - contentPadding: EdgeInsets.symmetric(vertical: 10, horizontal: 20), - filled: true, - fillColor: widget.bgColor, - border: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(color: Color(0xFFE8C69F80), width: 1), - ), - enabledBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(color: Color(0xFFE8C69F80), width: 1), - ), - focusedBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(color: Color(0xFFE8C69F80), width: 1), - ), - errorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(color: Colors.red, width: 1), - ), - focusedErrorBorder: OutlineInputBorder( - borderRadius: BorderRadius.circular(5), - borderSide: const BorderSide(color: Colors.red, width: 1), - ), - hintStyle: const TextStyle( - color: Color(0xFF737373), - fontSize: 14, - fontWeight: FontWeight.w400, - fontFamily: "DM Sans"), - hintText: widget.hintText, - prefixIconColor: widget.prefixIconColor, - // ignore: prefer_null_aware_operators - prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!, - suffixIcon: widget.isInputPassword - ? GestureDetector( - onTap: () => setState(() => obscureText = !obscureText), - child: obscureText - ? const Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(right: 20.0), - child: Icon( - Icons.remove_red_eye, - color: Color(0xFF959595), + child: TextFormField( + cursorColor: Colors.red, + initialValue: widget.value, + readOnly: widget.readonly, + onTap: widget.onTap, + enabled: widget.enabled, + enableInteractiveSelection: false, + maxLines: widget.maxlines, + autovalidateMode: AutovalidateMode.onUserInteraction, + obscureText: obscureText, + controller: widget.textEditingController, + + decoration: InputDecoration( + hintText: widget.hintText, + prefixIconColor: widget.prefixIconColor, + + hintStyle: TextStyle( + fontSize: 16.sp, + color: Colors.white, + fontWeight: FontWeight.w400, + fontFamily: 'hiragino'), + + // ignore: prefer_null_aware_operators + prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!, + suffixIcon: widget.isInputPassword + ? GestureDetector( + onTap: () => setState(() => obscureText = !obscureText), + child: obscureText + ? const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: Icon(Icons.remove_red_eye), ), - ), - ], - ) - : const Column( - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(right: 20.0), - child: Icon( - Icons.remove_red_eye_outlined, - color: Color(0xFF959595), + ], + ) + : const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: Icon( + Icons.remove_red_eye_outlined, + color: Color(0xFF959595), + ), ), - ), - ], - ), - ) - : null, + ], + ), + ) + : widget.suffixIcon == null + ? null + : widget.suffixIcon!, + border: InputBorder.none, + contentPadding: + const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + ), + style: const TextStyle(color: Colors.white), + keyboardType: widget.texttype, + // validator: widget.validator ?? + // (value) { + // if (value == null || value.isEmpty) { + // return "Empty value"; + // } + // return null; + // }, + inputFormatters: widget.inputFormatters, + onChanged: (value) { + widget.onInput?.call(value); + }, + ), + ); + } +} + +class CustomTextFormField2 extends StatefulWidget { + const CustomTextFormField2({ + Key? key, + this.validator, + this.textEditingController, + this.hintText, + this.leadingIcon, + this.prefixIconColor = const Color(0xFF737373), + this.isInputPassword = false, + this.validatorText, + this.value, + this.readonly = false, + this.enabled = true, + this.maxlines = 1, + this.texttype, + this.inputFormatters, + this.onInput, + this.onTap, + this.suffixIcon, + }) : super(key: key); + + final dynamic validator; + final TextEditingController? textEditingController; + final String? hintText; + final Widget? leadingIcon; + final Color prefixIconColor; + final bool isInputPassword; + final String? validatorText; + final String? value; + final bool readonly; + final bool enabled; + final int maxlines; + final TextInputType? texttype; + final dynamic inputFormatters; + final Function(String)? onInput; + final VoidCallback? onTap; + final Widget? suffixIcon; + + @override + State createState() => _CustomTextFormField2State(); +} + +class _CustomTextFormField2State extends State { + late bool obscureText; + + @override + void initState() { + super.initState(); + obscureText = widget.isInputPassword; + } + + @override + Widget build(BuildContext context) { + return GlassmorphicContainer( + width: double.infinity, + height: 100.h, + borderRadius: 10, + blur: 10, + alignment: Alignment.bottomCenter, + border: 0.8, + linearGradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + const Color(0xFFffffff).withOpacity(0.04), + const Color(0xFFFFFFFF).withOpacity(0.05), + ], + stops: [ + 0.1, + 1, + ]), + borderGradient: const LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color(0xff434A53), + Color(0xFF434A53), + ], + ), + child: TextFormField( + cursorColor: Colors.red, + initialValue: widget.value, + readOnly: widget.readonly, + onTap: widget.onTap, + enabled: widget.enabled, + enableInteractiveSelection: false, + maxLines: widget.maxlines, + autovalidateMode: AutovalidateMode.onUserInteraction, + obscureText: obscureText, + controller: widget.textEditingController, + + decoration: InputDecoration( + hintText: widget.hintText, + prefixIconColor: widget.prefixIconColor, + + hintStyle: TextStyle( + fontSize: 16.sp, + color: Colors.white, + fontWeight: FontWeight.w400, + fontFamily: 'hiragino'), + + // ignore: prefer_null_aware_operators + prefixIcon: widget.leadingIcon == null ? null : widget.leadingIcon!, + suffixIcon: widget.isInputPassword + ? GestureDetector( + onTap: () => setState(() => obscureText = !obscureText), + child: obscureText + ? const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: Icon(Icons.remove_red_eye), + ), + ], + ) + : const Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 20.0), + child: Icon( + Icons.remove_red_eye_outlined, + color: Color(0xFF959595), + ), + ), + ], + ), + ) + : widget.suffixIcon == null + ? null + : widget.suffixIcon!, + border: InputBorder.none, + contentPadding: + const EdgeInsets.symmetric(horizontal: 10, vertical: 10), + ), + style: const TextStyle(color: Colors.white), + keyboardType: widget.texttype, + // validator: widget.validator ?? + // (value) { + // if (value == null || value.isEmpty) { + // return "Empty value"; + // } + // return null; + // }, + inputFormatters: widget.inputFormatters, + onChanged: (value) { + widget.onInput?.call(value); + }, ), - keyboardType: widget.texttype, - validator: widget.validator ?? - (value) { - if (value == null || value.isEmpty) { - return "Empty value"; - } - return null; - }, - inputFormatters: allFormatters, - onChanged: (value) { - widget.onInput?.call(value); - }, ); } } diff --git a/lib/Utils/Common/blureffect.dart b/lib/Utils/Common/blureffect.dart index 8c6d674..6510f93 100644 --- a/lib/Utils/Common/blureffect.dart +++ b/lib/Utils/Common/blureffect.dart @@ -2,6 +2,66 @@ import 'dart:ui'; import 'package:flutter/material.dart'; +class CommonBlurLeftRed extends StatelessWidget { + const CommonBlurLeftRed({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Positioned( + top: 100, + left: -50, + child: Container( + height: 200, + width: 200, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Color(0x4CD90B2E).withOpacity(0.5), + ), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, + ), + ), + ), + ); + } +} + +class CommonBlurRightRed extends StatelessWidget { + const CommonBlurRightRed({ + super.key, + }); + + @override + Widget build(BuildContext context) { + return Positioned( + top: 200, + right: -50, + child: Container( + height: 200, + width: 200, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Color(0x4CD90B2E).withOpacity(0.5), + ), + child: BackdropFilter( + filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), + child: Container( + height: 200, + width: 200, + color: Colors.transparent, + ), + ), + ), + ); + } +} + class CommonBlurLeft extends StatelessWidget { const CommonBlurLeft({ super.key, @@ -10,14 +70,14 @@ class CommonBlurLeft extends StatelessWidget { @override Widget build(BuildContext context) { return Positioned( - top: 150, + top: 450, left: -50, child: Container( height: 200, width: 200, decoration: BoxDecoration( shape: BoxShape.circle, - color: Color(0xFF001D54).withOpacity(0.5), + color: Color(0xFF009DAB).withOpacity(0.50), ), child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), @@ -40,14 +100,14 @@ class CommonBlurRight extends StatelessWidget { @override Widget build(BuildContext context) { return Positioned( - top: 450, + top: 600, right: -50, child: Container( height: 200, width: 200, decoration: BoxDecoration( shape: BoxShape.circle, - color: Color(0xFF001D54).withOpacity(0.5), + color: Color(0xFF009DAB).withOpacity(0.50), ), child: BackdropFilter( filter: ImageFilter.blur(sigmaX: 30, sigmaY: 30), diff --git a/lib/Utils/texts.dart b/lib/Utils/texts.dart index 55c6665..dc266f3 100644 --- a/lib/Utils/texts.dart +++ b/lib/Utils/texts.dart @@ -16,10 +16,9 @@ Widget text22400white(String text) { textAlign: TextAlign.center, style: TextStyle( fontSize: 22.sp, - color: AppColors.white, - fontWeight: FontWeight.w400, - fontFamily: 'Helvetica' - ), + color: AppColors.white, + fontWeight: FontWeight.w400, + fontFamily: 'Helvetica'), ); } @@ -42,8 +41,6 @@ Widget text20Blackw600(String text) { ); } - - Widget textA4856_20500(String text) { return Text( text, @@ -133,3 +130,69 @@ Widget txt20Black(txt) { style: TextStyle(fontSize: 20.sp, color: const Color(0xff000000)), ); } + +Widget text16w400_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 16.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text12w400_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 12.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text11w400_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 11.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text18w400_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 18.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text14w400_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 14.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text8w400_8A8A8A(String text) { + return Text( + text, + style: TextStyle( + fontSize: 8.sp, + color: Color(0xFF8A8A8A), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} diff --git a/lib/main.dart b/lib/main.dart index 18a301b..1a897bc 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -112,18 +112,18 @@ class _MyAppState extends State with WidgetsBindingObserver { // setState(() { // _connectionStatus = result; // }); - - if (result.contains(ConnectivityResult.wifi) || result.contains(ConnectivityResult.mobile)) { - setState(() { - _connectionStatus = result; - Get.back(result: true); - }); + if (result.contains(ConnectivityResult.wifi) || + result.contains(ConnectivityResult.mobile)) { + setState(() { + _connectionStatus = result; + Get.back(result: true); + }); } else { - setState(() { - _connectionStatus = result; - Get.toNamed(RouteName.nointernet); - }); + setState(() { + _connectionStatus = result; + Get.toNamed(RouteName.nointernet); + }); // Get.toNamed(RouteName.nointernet); } // ignore: avoid_print @@ -196,18 +196,17 @@ class _MyAppState extends State with WidgetsBindingObserver { @override Widget build(BuildContext context) { - return - ScreenUtilInit( + return ScreenUtilInit( builder: (BuildContext context, Widget? child) => GetMaterialApp( title: 'Regroup', theme: ThemeData( - primarySwatch: - // createPrimarySwatch(Color(0xFF737373)), - Colors.grey, + primarySwatch: + // createPrimarySwatch(Color(0xFF737373)), + Colors.grey, fontFamily: 'Cambria', ), debugShowCheckedModeBanner: false, - initialRoute: RouteName.splashScreen, + initialRoute: RouteName.mainscreen, //initialRoute: RouteName.mainScreen, getPages: AppRoutes.appRoutes(), @@ -216,4 +215,3 @@ class _MyAppState extends State with WidgetsBindingObserver { ); } } - diff --git a/lib/resources/routes/route_name.dart b/lib/resources/routes/route_name.dart index d7e4fa4..67ccfcd 100644 --- a/lib/resources/routes/route_name.dart +++ b/lib/resources/routes/route_name.dart @@ -3,5 +3,18 @@ class RouteName { static const String onboarding1 = '/onboarding1'; static const String loginScreen = '/loginScreen'; static const String nointernet = '/nointernet'; + static const String communityScreen = '/communityScreen'; + static const String mainscreen = '/mainscreen'; + static const String sidemenu = '/sidemenu'; + static const String savedposts = '/savedposts'; + static const String cyclescreen = '/cyclescreen'; + static const String postscreen = '/postscreen'; + static const String postdetailsScreen = '/postdetailsScreen'; + + + + + + } \ No newline at end of file diff --git a/lib/resources/routes/routes.dart b/lib/resources/routes/routes.dart index 235a325..3d78734 100644 --- a/lib/resources/routes/routes.dart +++ b/lib/resources/routes/routes.dart @@ -1,4 +1,11 @@ import 'package:get/get_navigation/src/routes/get_route.dart'; +import 'package:regroup/Common/controller/MainScreen.dart'; +import 'package:regroup/Feed%20Module/Main_Screens/Community/Community.dart'; +import 'package:regroup/Feed%20Module/Main_Screens/Community/CycleScreen.dart'; +import 'package:regroup/Feed%20Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart'; +import 'package:regroup/Feed%20Module/Main_Screens/Community/PostScreen.dart'; +import 'package:regroup/Feed%20Module/sidemenu/SavedPosts/SavedPosts.dart'; +import 'package:regroup/Feed%20Module/sidemenu/sidemenu.dart'; import 'package:regroup/Utils/Common/NoInternet.dart'; import 'package:regroup/onboarding/onboarding1.dart'; import 'package:regroup/onboarding/splashscreen.dart'; @@ -6,19 +13,45 @@ import 'package:regroup/resources/routes/route_name.dart'; class AppRoutes { static appRoutes() => [ - GetPage( + GetPage( name: RouteName.splashScreen, - page: () => - const SplashScreen(), + page: () => const SplashScreen(), ), GetPage( name: RouteName.onboarding1, - page: () => - const Onboarding1(), + page: () => const Onboarding1(), ), GetPage( name: RouteName.nointernet, page: () => const NoInternet(), ), - ]; -} \ No newline at end of file + GetPage( + name: RouteName.communityScreen, + page: () => const CommunityScreen(), + ), + GetPage( + name: RouteName.mainscreen, + page: () => const MainScreen(), + ), + GetPage( + name: RouteName.sidemenu, + page: () => const SideMenu(), + ), + GetPage( + name: RouteName.savedposts, + page: () => const SavedPosts(), + ), + GetPage( + name: RouteName.cyclescreen, + page: () => const CycleScreen(), + ), + GetPage( + name: RouteName.postscreen, + page: () => const PostScreen(), + ), + GetPage( + name: RouteName.postdetailsScreen, + page: () => const PostDetailsScreen(), + ), + ]; +} diff --git a/pubspec.lock b/pubspec.lock index 4839982..34436a9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -137,6 +137,14 @@ packages: url: "https://pub.dev" source: hosted version: "5.4.3+1" + dropdown_button2: + dependency: "direct main" + description: + name: dropdown_button2 + sha256: b0fe8d49a030315e9eef6c7ac84ca964250155a6224d491c1365061bc974a9e1 + url: "https://pub.dev" + source: hosted + version: "2.3.9" fake_async: dependency: transitive description: @@ -222,6 +230,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.19" + flutter_reaction_button: + dependency: "direct main" + description: + name: flutter_reaction_button + sha256: "9fe67f6e6dac65c5ee864c2ab03550b25e7fc82b9a800c885a87f85abe2c03c6" + url: "https://pub.dev" + source: hosted + version: "3.0.0+3" flutter_screenutil: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 98fade5..d2f9dbd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -54,6 +54,8 @@ dependencies: device_info_plus: ^9.1.2 permission_handler: ^11.3.1 glassmorphism: ^3.0.0 + dropdown_button2: ^2.3.9 + flutter_reaction_button: any dev_dependencies: flutter_test: @@ -82,6 +84,8 @@ flutter: - assets/images/ - assets/icons/ - assets/images/png/ + - assets/images/png/BottomBar/ + - assets/images/png/sidemenu/ - assets/images/svg/ # - images/a_dot_ham.jpeg