diff --git a/assets/images/png/Black (1).png b/assets/images/png/Black (1).png new file mode 100644 index 0000000..9cb72aa Binary files /dev/null and b/assets/images/png/Black (1).png differ diff --git a/assets/images/png/Black.png b/assets/images/png/Black.png new file mode 100644 index 0000000..fa718c2 Binary files /dev/null and b/assets/images/png/Black.png differ diff --git a/assets/images/png/Ellipse 34.png b/assets/images/png/Ellipse 34.png new file mode 100644 index 0000000..4f56909 Binary files /dev/null and b/assets/images/png/Ellipse 34.png differ diff --git a/assets/images/png/Ellipse 35.png b/assets/images/png/Ellipse 35.png new file mode 100644 index 0000000..181d666 Binary files /dev/null and b/assets/images/png/Ellipse 35.png differ diff --git a/assets/images/png/Ellipse 36.png b/assets/images/png/Ellipse 36.png new file mode 100644 index 0000000..a715e33 Binary files /dev/null and b/assets/images/png/Ellipse 36.png differ diff --git a/assets/images/png/Ellipse 37.png b/assets/images/png/Ellipse 37.png new file mode 100644 index 0000000..1123223 Binary files /dev/null and b/assets/images/png/Ellipse 37.png differ diff --git a/assets/images/png/Ellipse 48.png b/assets/images/png/Ellipse 48.png new file mode 100644 index 0000000..42b00d1 Binary files /dev/null and b/assets/images/png/Ellipse 48.png differ diff --git a/assets/images/png/Rectangle 25 (1).png b/assets/images/png/Rectangle 25 (1).png new file mode 100644 index 0000000..8f5f8cc Binary files /dev/null and b/assets/images/png/Rectangle 25 (1).png differ diff --git a/assets/images/png/cimg1.png b/assets/images/png/cimg1.png new file mode 100644 index 0000000..de4d0a0 Binary files /dev/null and b/assets/images/png/cimg1.png differ diff --git a/assets/images/png/cimg2.png b/assets/images/png/cimg2.png new file mode 100644 index 0000000..d465eb5 Binary files /dev/null and b/assets/images/png/cimg2.png differ diff --git a/assets/images/png/cimg3.png b/assets/images/png/cimg3.png new file mode 100644 index 0000000..f65cf31 Binary files /dev/null and b/assets/images/png/cimg3.png differ diff --git a/assets/images/png/cimg4.png b/assets/images/png/cimg4.png new file mode 100644 index 0000000..9dab05e Binary files /dev/null and b/assets/images/png/cimg4.png differ diff --git a/assets/images/png/iconoir_send.png b/assets/images/png/iconoir_send.png new file mode 100644 index 0000000..d540c63 Binary files /dev/null and b/assets/images/png/iconoir_send.png differ diff --git a/assets/images/png/img1.png b/assets/images/png/img1.png new file mode 100644 index 0000000..5180a42 Binary files /dev/null and b/assets/images/png/img1.png differ diff --git a/assets/images/png/img12.png b/assets/images/png/img12.png new file mode 100644 index 0000000..33d5d7d Binary files /dev/null and b/assets/images/png/img12.png differ diff --git a/assets/images/png/img2.png b/assets/images/png/img2.png new file mode 100644 index 0000000..b99dd01 Binary files /dev/null and b/assets/images/png/img2.png differ diff --git a/assets/images/png/logout 1 (traced).png b/assets/images/png/logout 1 (traced).png new file mode 100644 index 0000000..9f05a4d Binary files /dev/null and b/assets/images/png/logout 1 (traced).png differ diff --git a/assets/images/png/marketing 1 (traced).png b/assets/images/png/marketing 1 (traced).png new file mode 100644 index 0000000..9258106 Binary files /dev/null and b/assets/images/png/marketing 1 (traced).png differ diff --git a/assets/images/png/mingcute_eye-close-line.png b/assets/images/png/mingcute_eye-close-line.png new file mode 100644 index 0000000..3040e4d Binary files /dev/null and b/assets/images/png/mingcute_eye-close-line.png differ diff --git a/lib/Common/CommonAppbar.dart b/lib/Common/CommonAppbar.dart deleted file mode 100644 index ea07817..0000000 --- a/lib/Common/CommonAppbar.dart +++ /dev/null @@ -1,85 +0,0 @@ -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/CommonGlassmorphism.dart b/lib/Common/CommonGlassmorphism.dart index 8b61018..d1be50c 100644 --- a/lib/Common/CommonGlassmorphism.dart +++ b/lib/Common/CommonGlassmorphism.dart @@ -5,14 +5,16 @@ Widget commonGlassContainer( {required double width, required double height, required double borderradius, - required Widget customWidget}) { + required Widget customWidget, + required double border + }) { return GlassmorphicContainer( width: width, height: height, borderRadius: borderradius, blur: 10, alignment: Alignment.topCenter, - border: 0.9, + border: border, linearGradient: LinearGradient( begin: Alignment.topLeft, end: Alignment.bottomRight, diff --git a/lib/Common/CommonWidget.dart b/lib/Common/CommonWidget.dart index 534e695..56b7533 100644 --- a/lib/Common/CommonWidget.dart +++ b/lib/Common/CommonWidget.dart @@ -117,4 +117,22 @@ Widget MessageTextInputField( ), keyboardType: TextInputType.text, ); +} + +Widget commonDivider(){ + return Container( + height: 1.5.h, + width: double.infinity, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + Color.fromRGBO(255, 255, 255, 0.07), + Color.fromRGBO(255, 255, 255, 0.09), + ], + transform: GradientRotation(1.78), + ), + ), + ); } \ No newline at end of file diff --git a/lib/Common/controller/CommonTextFormField.dart b/lib/Common/controller/CommonTextFormField.dart index a09b58b..6032017 100644 --- a/lib/Common/controller/CommonTextFormField.dart +++ b/lib/Common/controller/CommonTextFormField.dart @@ -97,7 +97,11 @@ class _CustomTextFormFieldState extends State { controller: widget.textEditingController, textCapitalization: widget.textCapV ?? TextCapitalization.none, decoration: InputDecoration( - hintStyle: TextStyle(color: Colors.white), + hintStyle: TextStyle( + color: Color.fromRGBO(252, 252, 252, 0.5), + fontSize: 14, + fontFamily: "Helvetica", + fontWeight: FontWeight.w400), hintText: widget.hintText, prefixIconColor: widget.prefixIconColor, // ignore: prefer_null_aware_operators diff --git a/lib/Feed Module/Main_Screens/Community/Community.dart b/lib/Feed Module/Main_Screens/Community/Community.dart index aaa290d..d2d4fb6 100644 --- a/lib/Feed Module/Main_Screens/Community/Community.dart +++ b/lib/Feed Module/Main_Screens/Community/Community.dart @@ -284,20 +284,17 @@ Widget normalcardtile() { 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'), + GestureDetector( + onTap: () { + Get.toNamed(RouteName.postdetailsScreen); + }, + child: Image.asset('assets/images/png/Rectangle 22.png')), sizedBoxHeight(20.h), Padding( padding: EdgeInsets.symmetric(horizontal: 16.w), @@ -324,33 +321,11 @@ Widget normalcardtile() { 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( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, @@ -377,6 +352,8 @@ Widget normalcardtile() { text14w400_FCFCFC('20'), sizedBoxWidth(20.w), commonGlassContainer( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, @@ -528,6 +505,8 @@ Widget _buildReactionsIcon(String assetPath) { Widget tagCardTile() { return commonGlassContainer( + border: 0.9, + width: double.infinity, height: 580.h, borderradius: 1, @@ -546,6 +525,8 @@ Widget tagCardTile() { Widget containertile({required String text}) { return commonGlassContainer( + border: 0.9, + width: 100.w, height: 30.h, borderradius: 30.r, diff --git a/lib/Feed Module/Main_Screens/Community/CycleScreen.dart b/lib/Feed Module/Main_Screens/Community/CycleScreen.dart index 5550204..b9434fa 100644 --- a/lib/Feed Module/Main_Screens/Community/CycleScreen.dart +++ b/lib/Feed Module/Main_Screens/Community/CycleScreen.dart @@ -152,6 +152,8 @@ Widget normalcardtile() { "Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."), Row(children: [ commonGlassContainer( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, @@ -175,6 +177,8 @@ Widget normalcardtile() { ), ), commonGlassContainer( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, @@ -198,6 +202,8 @@ Widget normalcardtile() { ), ), commonGlassContainer( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, @@ -224,6 +230,8 @@ Widget normalcardtile() { text14w400_FCFCFC('20'), Spacer(), commonGlassContainer( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, @@ -250,6 +258,8 @@ Widget normalcardtile() { text14w400_FCFCFC('20'), sizedBoxWidth(20.w), commonGlassContainer( + border: 0.9, + width: 30.w, height: 30.h, borderradius: 100, diff --git a/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart b/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart index 6d879a2..35e91b6 100644 --- a/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart +++ b/lib/Feed Module/Main_Screens/Community/PostDetailScreen/View/PostDetailScreen.dart @@ -1,4 +1,15 @@ -import 'package:flutter/cupertino.dart'; +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/Common/CommonWidget.dart'; +import 'package:regroup/Common/controller/CommonTextFormField.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'; +import 'package:regroup/resources/routes/route_name.dart'; class PostDetailsScreen extends StatefulWidget { const PostDetailsScreen({super.key}); @@ -10,6 +21,444 @@ class PostDetailsScreen extends StatefulWidget { class _PostDetailsScreenState extends State { @override Widget build(BuildContext context) { - return const Placeholder(); + return Scaffold( + backgroundColor: Color(0xFF222935), + extendBody: true, + appBar: CommonAppbar( + titleTxt: "Post", + ), + body: Stack(children: [ + const CommonBlurLeftRed(), + const CommonBlurRightRed(), + const CommonBlurLeft(), + const CommonBlurRight(), + Positioned.fill( + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + sizedBoxHeight(25.h), + postCards(), + sizedBoxHeight(30.h), + commonDivider(), + sizedBoxHeight(30.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + CircleAvatar( + radius: 20.r, + foregroundImage: AssetImage( + "assets/images/png/Ellipse 48.png", + ), + ), + sizedBoxWidth(15.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + text12w400_FCFCFC_blur("Roger Saris"), + text14w400_FCFCFC( + "Lorem Ipsum has been the industry's standard dummy text 😍"), + text10w400_FCFCFC_blur("Reply. . . ") + ], + ), + ), + ], + ), + sizedBoxHeight(50.h), + CustomTextFormField( + hintText: "Add comment", + suffixIcon: Container( + height: 20.h, + width: 25.w, + child: Center( + child: Image.asset( + "assets/images/png/iconoir_send.png", + height: 20.h, + width: 25.w, + ), + ), + ), + ) + ], + ), + ), + sizedBoxHeight(85.h) + ]))) + ])); } -} \ No newline at end of file + + Widget postCards() { + final List titles = [ + 'Cycle', + 'Marathon', + 'Events', + 'Swimming', + 'Events', + ]; + 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, + ), + ), + sizedBoxWidth(5.w) + ], + ), + ), + sizedBoxHeight(20.h), + GestureDetector( + onTap: () { + // Get.toNamed(RouteName.postdetailsScreen); + }, + child: 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: [ + Spacer(), + commonGlassContainer( + border: 0.9, + 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( + border: 0.9, + + 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 containertile({required String text}) { + return commonGlassContainer( + border: 0.9, + + width: 100.w, + height: 30.h, + borderradius: 30.r, + customWidget: Padding( + padding: EdgeInsets.symmetric(horizontal: 10.w), + child: Center(child: text14w400_FCFCFC(text)), + )); + } + + 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, + ); + } +} diff --git a/lib/Feed Module/Main_Screens/Community/PostScreen.dart b/lib/Feed Module/Main_Screens/Community/PostScreen.dart index 27cc000..9a85cda 100644 --- a/lib/Feed Module/Main_Screens/Community/PostScreen.dart +++ b/lib/Feed Module/Main_Screens/Community/PostScreen.dart @@ -57,7 +57,8 @@ class _PostScreenState extends State { sizedBoxHeight(25.h), text16w400_FCFCFC("Media"), sizedBoxHeight(20.h), - commonGlassContainer( + commonGlassContainer( border: 0.9, + width: double.infinity, height: 130.h, borderradius: 10.r, diff --git a/lib/Feed Module/sidemenu/MyCommunity/View/CommunityDetails.dart b/lib/Feed Module/sidemenu/MyCommunity/View/CommunityDetails.dart new file mode 100644 index 0000000..f0bf8ab --- /dev/null +++ b/lib/Feed Module/sidemenu/MyCommunity/View/CommunityDetails.dart @@ -0,0 +1,318 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; +import 'package:regroup/Common/CommonGlassmorphism.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 CommunityDetails extends StatefulWidget { + const CommunityDetails({super.key}); + + @override + State createState() => _CommunityDetailsState(); +} + +class _CommunityDetailsState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + // key: _scaffoldKey1, + backgroundColor: Color(0xFF222935), + extendBody: true, + appBar: CommonAppbar( + titleTxt: "", + customActionWidget: Image.asset( + 'assets/images/png/Group 1000004071.png', + height: 22.h, + width: 4.w, + )), + body: Stack(children: [ + const CommonBlurLeftRed(), + const CommonBlurRightRed(), + const CommonBlurLeft(), + const CommonBlurRight(), + Positioned.fill( + child: SingleChildScrollView( + child: Column(children: [ + Stack(clipBehavior: Clip.none, children: [ + SizedBox( + height: 130.h, + width: double.infinity, + child: Image.asset( + "assets/images/png/img1.png", + fit: BoxFit.cover, + ), + ), + Positioned( + bottom: -35.h, + left: 20.w, + child: Container( + width: 85.r, + height: 85.r, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: Color.fromRGBO(255, 255, 255, 0.5), + width: 1, + ), + boxShadow: [ + BoxShadow( + color: Color.fromRGBO(0, 0, 0, 0.25), + blurRadius: 12, + offset: Offset(0, 6), + ), + ], + ), + child: CircleAvatar( + radius: 42.5.r, + foregroundImage: AssetImage("assets/images/png/img2.png"), + ), + )) + ]), + sizedBoxHeight(40.h), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + children: [ + Row( + children: [ + text20w700_FCFCFC("Active alliance network"), + Spacer(), + commonGlassContainer( + width: 35.w, + height: 35.h, + borderradius: 100, + customWidget: Center( + child: Image.asset( + "assets/images/png/img12.png", + height: 18.w, + width: 18.w, + )), + border: 0.5), + sizedBoxWidth(8.w), + text16w400_FCFCFCblur("Public"), + ], + ), + sizedBoxHeight(20.h), + commonGlassContainer( + width: double.infinity, + height: 51.h, + borderradius: 10.r, + customWidget: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row( + children: [ + stackContainers(), + sizedBoxWidth(90.w), + text16w400_white('7 members'), + Spacer(), + Icon( + Icons.arrow_forward, + size: 20.sp, + color: Colors.white, + ), + sizedBoxWidth(16.w), + ], + ), + ], + ), + border: 1.w), + sizedBoxHeight(20.h), + commonGlassContainer( + width: double.infinity, + height: 51.h, + borderradius: 10.r, + customWidget: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row(children: [ + Image.asset( + "assets/images/png/Black.png", + height: 23.h, + width: 31.w, + ), + sizedBoxWidth(15.w), + text16w400white('10 groups'), + Spacer(), + Icon( + Icons.arrow_forward, + size: 20.sp, + color: Colors.white, + ), + ]), + ], + ), + ), + border: 1), + sizedBoxHeight(20.h), + commonGlassContainer( + width: double.infinity, + height: 51.h, + borderradius: 10.r, + customWidget: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Row(children: [ + Image.asset( + "assets/images/png/marketing 1 (traced).png", + height: 23.h, + width: 31.w, + ), + sizedBoxWidth(15.w), + text16w400white('Announcements'), + Spacer(), + Container( + height: 21.h, + width: 43.w, + decoration: BoxDecoration( + color: Color(0xFFD90B2E), + borderRadius: BorderRadius.circular(30.r)), + child: Center(child: text12w400_FCFCFC("11")), + ) + ]), + ], + ), + ), + border: 1), + sizedBoxHeight(35.h), + Container( + height: 40.h, + width: 200.w, + decoration: BoxDecoration( + color: Color(0xFFD90B2E), + borderRadius: BorderRadius.circular(30.r)), + child: + Center(child: text14w400white("Leave the community")), + ), + sizedBoxHeight(50.h), + ], + ), + ), + DefaultTabController( + length: 2, + // initialIndex: selectedIndex.value, + child: Column( + children: [ + MyTabBar(), + SizedBox( + height: 600.h, + child: TabBarView( + children: [ + poststab(), + eventstab(), + ], + ), + ), + ], + ), + ), + ]))) + ])); + } + + Widget poststab() { + return Column( + children: [], + ); + } + + Widget eventstab() { + return Column( + children: [], + ); + } + + Widget stackContainers() { + List containerimages = [ + { + "imagePath": "assets/images/png/cimg3.png", + }, + { + "imagePath": "assets/images/png/cimg2.png", + }, + { + "imagePath": "assets/images/png/cimg3.png", + }, + { + "imagePath": "assets/images/png/cimg2.png", + }, + ]; + return Row( + children: [ + sizedBoxWidth(12.w), + Stack(clipBehavior: Clip.none, children: [ + Container( + height: 30.h, + width: 30.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: Color(0xFFD90B2E), + border: Border.all(color: Color(0xFF2C3742), width: 1.w)), + child: Center(child: text8w400_white("+2")), + ), + Positioned( + left: 20, + child: SizedBox( + height: 20, + width: 50, + child: Stack( + clipBehavior: Clip.none, + children: List.generate(containerimages.length, (index) { + return Positioned( + left: index * 22.w, + child: Container( + height: 30.h, + width: 30.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: Color(0xFF2C3742), width: 1.w)), + child: CircleAvatar( + foregroundImage: + AssetImage(containerimages[index]["imagePath"]), + )), + ); + }), + ), + )) + ]), + ], + ); + } +} + +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: 'Posts', + ), + Tab( + text: 'Events', + ), + ]); + } +} diff --git a/lib/Feed Module/sidemenu/MyCommunity/View/MyCommunity.dart b/lib/Feed Module/sidemenu/MyCommunity/View/MyCommunity.dart new file mode 100644 index 0000000..c1f3bdd --- /dev/null +++ b/lib/Feed Module/sidemenu/MyCommunity/View/MyCommunity.dart @@ -0,0 +1,283 @@ +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/Common/CommonWidget.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'; +import 'package:regroup/resources/routes/route_name.dart'; + +class MyCommunity extends StatefulWidget { + const MyCommunity({super.key}); + + @override + State createState() => _MyCommunityState(); +} + +class _MyCommunityState extends State { + List JoinedcommunityData = [ + { + "imagePath": "assets/images/png/Ellipse 34.png", + "text": "Active alliance network", + }, + { + "imagePath": "assets/images/png/Ellipse 35.png", + "text": "FitFam federation" + }, + ]; + + List RequestcommunityData = [ + { + "imagePath": "assets/images/png/Ellipse 36.png", + "text": "The athletic town", + }, + {"imagePath": "assets/images/png/Ellipse 37.png", "text": "Football fever"}, + ]; + + @override + Widget build(BuildContext context) { + return Scaffold( + // key: _scaffoldKey1, + backgroundColor: Color(0xFF222935), + extendBody: true, + appBar: CommonAppbar( + titleTxt: "My Community", + customActionWidget: Row( + children: [ + Container( + height: 30.h, + width: 30.w, + decoration: BoxDecoration( + color: Color(0xFFD90B2E), + boxShadow: [ + BoxShadow( + color: Color(0xFF000000).withOpacity(0.25), + offset: Offset(0, 6), + blurRadius: 8, + ), + ], + shape: BoxShape.circle), + child: Icon( + Icons.add, + color: Colors.white, + ), + ), + sizedBoxWidth(12.w), + Image.asset( + "assets/images/png/Frame 9.png", + height: 22.h, + width: 22.w, + ) + ], + ), + ), + 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: [ + text18w700_FCFCFC("Joined communities"), + sizedBoxHeight(15.h), + Column( + children: List.generate(JoinedcommunityData.length, + (index) { + return communityCard( + ontap: () { + Get.toNamed(RouteName.communityDetails); + }, + imagepath: JoinedcommunityData[index] + ['imagePath'], + title: JoinedcommunityData[index]['text']); + }), + ), + text18w700_FCFCFC("Requested communities"), + sizedBoxHeight(20.h), + Column( + children: List.generate(RequestcommunityData.length, + (index) { + return communityCard( + ontap: () {}, + imagepath: RequestcommunityData[index] + ['imagePath'], + title: RequestcommunityData[index]['text']); + }), + ) + ]), + ))) + ])); + } + + Widget communityCard({ + required String imagepath, + required String title, + required void Function()? ontap, + }) { + return Padding( + padding: EdgeInsets.only(bottom: 25.h), + child: GestureDetector( + onTap: ontap, + child: commonGlassContainer( + border: 0.9, + + width: double.infinity, + height: 157.h, + borderradius: 10.r, + customWidget: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: Column( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: 65.h, + width: 65.h, + decoration: BoxDecoration( + shape: BoxShape.circle, + // color: Colors.amber, + ), + child: Center( + child: Image.asset(imagepath, fit: BoxFit.cover)), + ), + // CircleAvatar( + // foregroundImage: AssetImage( + // imagepath, + // ), + // radius: 32.5.r), + sizedBoxWidth(13.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + text18w700_FCFCFC(title), + sizedBoxHeight(10.h), + Row( + children: [ + commonGlassContainer( + border: 0.9, + + width: 30.w, + height: 30.h, + borderradius: 100.r, + customWidget: Center( + child: Image.asset( + "assets/images/png/Black.png", + height: 12.h, + width: 16.w, + ), + )), + sizedBoxWidth(15.w), + text14w400_FCFCFCblur("10 groups") + ], + ), + ], + ), + Spacer(), + PopupMenuButton( + surfaceTintColor: Color(0xFF222935), + constraints: BoxConstraints.tightFor(width: 200.w), + offset: Offset(0, 30), + color: Color(0xFF222935), + tooltip: "", + itemBuilder: (BuildContext context) => + [ + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: + EdgeInsets.symmetric(horizontal: 8.w), + child: Row( + children: [ + text14w400_FCFCFC("Mute community"), + Spacer(), + Image.asset( + "assets/images/png/Black (1).png", + height: 18.h, + width: 18.w, + ) + ], + ), + ), + ), + PopupMenuDivider(), + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: + EdgeInsets.symmetric(horizontal: 8.w), + child: Row( + children: [ + text14w400_FCFCFC("Hide post"), + Spacer(), + Image.asset( + "assets/images/png/mingcute_eye-close-line.png", + height: 20.h, + width: 20.w, + ) + ], + ), + ), + ), + PopupMenuDivider(), + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: + EdgeInsets.symmetric(horizontal: 8.w), + child: Row( + children: [ + text14w400_FCFCFC("Pin"), + Spacer(), + Image.asset( + "assets/images/png/f7_pin-fill (2).png", + height: 25.h, + width: 25.w, + ) + ], + ), + ), + ), + PopupMenuDivider(), + PopupMenuItem( + onTap: () {}, + child: Padding( + padding: + EdgeInsets.symmetric(horizontal: 8.w), + child: Row( + children: [ + text14w400_FCFCFC("Leave community"), + Spacer(), + Image.asset( + "assets/images/png/logout 1 (traced).png", + height: 18.h, + width: 18.w, + ) + ], + ), + ), + ), + ], + child: Image.asset( + "assets/images/png/Group 1000004071.png", + height: 13.h, + width: 3.w, + )), + ], + ), + sizedBoxHeight(16.h), + commonDivider(), + ], + ), + )), + ), + ); + } +} diff --git a/lib/Feed Module/sidemenu/sidemenu.dart b/lib/Feed Module/sidemenu/sidemenu.dart index 8c4c92c..cfe2603 100644 --- a/lib/Feed Module/sidemenu/sidemenu.dart +++ b/lib/Feed Module/sidemenu/sidemenu.dart @@ -148,7 +148,11 @@ class _SideMenuState extends State { children: [ text16w400_FCFCFC("Communities"), Spacer(), - text14w400_FCFCFC("View all"), + GestureDetector( + onTap: () { + Get.toNamed(RouteName.mycommunity); + }, + child: text14w400_FCFCFC("View all")), ], ), ), @@ -212,6 +216,8 @@ class _SideMenuState extends State { }) { return ListTile( leading: commonGlassContainer( + border: 0.9, + width: 29.w, height: 29.h, borderradius: 100, diff --git a/lib/Utils/Common/CommonAppbar.dart b/lib/Utils/Common/CommonAppbar.dart index 9b11b03..332b794 100644 --- a/lib/Utils/Common/CommonAppbar.dart +++ b/lib/Utils/Common/CommonAppbar.dart @@ -106,6 +106,7 @@ class CommonAppbar extends StatelessWidget implements PreferredSizeWidget { children: [ sizedBoxWidth(10.w), commonGlassContainer( + border: 0.9, width: 40.w, height: 40.h, borderradius: 100, diff --git a/lib/Utils/texts.dart b/lib/Utils/texts.dart index dc266f3..bc9129e 100644 --- a/lib/Utils/texts.dart +++ b/lib/Utils/texts.dart @@ -94,6 +94,30 @@ Widget text16400Black(String text, {TextAlign? textAlign}) { ), ); } +Widget text16w400white(String text, {TextAlign? textAlign}) { + return Text( + text, + textAlign: textAlign, + style: TextStyle( + fontSize: 16.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400, + color: AppColors.white, + ), + ); +} +Widget text14w400white(String text, {TextAlign? textAlign}) { + return Text( + text, + textAlign: textAlign, + style: TextStyle( + fontSize: 14.sp, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400, + color: AppColors.white, + ), + ); +} Widget text20White(String text, {TextAlign? textAlign}) { return Text( @@ -142,6 +166,28 @@ Widget text16w400_FCFCFC(String text) { ); } +Widget text16w400_white(String text) { + return Text( + text, + style: TextStyle( + fontSize: 16.sp, + color: Colors.white, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text16w400_FCFCFCblur(String text) { + return Text( + text, + style: TextStyle( + fontSize: 16.sp, + color: Color(0xFFFCFCFC).withOpacity(0.8), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + Widget text12w400_FCFCFC(String text) { return Text( text, @@ -153,6 +199,39 @@ Widget text12w400_FCFCFC(String text) { ); } +Widget text20w700_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 20.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w700), + ); +} + +Widget text12w400_FCFCFC_blur(String text) { + return Text( + text, + style: TextStyle( + fontSize: 12.sp, + color: Color(0xFFFCFCFC).withOpacity(0.8), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + +Widget text10w400_FCFCFC_blur(String text) { + return Text( + text, + style: TextStyle( + fontSize: 10.sp, + color: Color(0xFFFCFCFC).withOpacity(0.8), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + Widget text11w400_FCFCFC(String text) { return Text( text, @@ -175,6 +254,17 @@ Widget text18w400_FCFCFC(String text) { ); } +Widget text18w700_FCFCFC(String text) { + return Text( + text, + style: TextStyle( + fontSize: 18.sp, + color: Color(0xFFFCFCFC), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w700), + ); +} + Widget text14w400_FCFCFC(String text) { return Text( text, @@ -186,6 +276,17 @@ Widget text14w400_FCFCFC(String text) { ); } +Widget text14w400_FCFCFCblur(String text) { + return Text( + text, + style: TextStyle( + fontSize: 14.sp, + color: Color(0xFFFCFCFC).withOpacity(0.8), + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} + Widget text8w400_8A8A8A(String text) { return Text( text, @@ -196,3 +297,14 @@ Widget text8w400_8A8A8A(String text) { fontWeight: FontWeight.w400), ); } + +Widget text8w400_white(String text) { + return Text( + text, + style: TextStyle( + fontSize: 8.sp, + color: Colors.white, + fontFamily: 'Helvetica', + fontWeight: FontWeight.w400), + ); +} diff --git a/lib/resources/routes/route_name.dart b/lib/resources/routes/route_name.dart index 67ccfcd..150e476 100644 --- a/lib/resources/routes/route_name.dart +++ b/lib/resources/routes/route_name.dart @@ -10,6 +10,10 @@ class RouteName { static const String cyclescreen = '/cyclescreen'; static const String postscreen = '/postscreen'; static const String postdetailsScreen = '/postdetailsScreen'; + static const String mycommunity = '/mycommunity'; + static const String communityDetails = '/communityDetails'; + + diff --git a/lib/resources/routes/routes.dart b/lib/resources/routes/routes.dart index 3d78734..2359058 100644 --- a/lib/resources/routes/routes.dart +++ b/lib/resources/routes/routes.dart @@ -4,6 +4,8 @@ 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/MyCommunity/View/CommunityDetails.dart'; +import 'package:regroup/Feed%20Module/sidemenu/MyCommunity/View/MyCommunity.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'; @@ -49,9 +51,17 @@ class AppRoutes { name: RouteName.postscreen, page: () => const PostScreen(), ), - GetPage( + GetPage( name: RouteName.postdetailsScreen, page: () => const PostDetailsScreen(), ), + GetPage( + name: RouteName.mycommunity, + page: () => const MyCommunity(), + ), + GetPage( + name: RouteName.communityDetails, + page: () => const CommunityDetails(), + ), ]; }