Announcement, group, my community, communityinfo page done

This commit is contained in:
cj201199
2024-05-31 11:58:38 +05:30
parent 51e6a40c34
commit a99a3f3577
28 changed files with 1757 additions and 559 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1020 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
assets/images/png/img34.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 MiB

BIN
assets/images/png/img45.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -3,9 +3,10 @@ import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:flutter_svg/svg.dart';
import 'package:get/get.dart';
import 'package:path/path.dart' as path;
import 'package:regroup/Utils/Common/sized_box.dart';
import 'package:regroup/Utils/texts.dart';
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
class TextInputField extends StatefulWidget {
TextInputField({Key? key, this.hinttext, this.controller, this.validator})
: super(key: key);
@@ -65,9 +66,7 @@ class _TextInputFieldState extends State<TextInputField> {
Widget MessageTextInputField(
String hinttext, TextEditingController controller, dynamic validator) {
return TextFormField(
inputFormatters: [
RemoveEmojiInputFormatter()
],
inputFormatters: [RemoveEmojiInputFormatter()],
// maxLength: 5,
autovalidateMode: AutovalidateMode.onUserInteraction,
maxLines: 5,
@@ -119,20 +118,105 @@ Widget MessageTextInputField(
);
}
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),
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),
),
),
);
}
Widget stackContainers({
required String number,
required List<String> containerImages,
}) {
return Row(
children: [
SizedBox(width: 12),
Stack(
clipBehavior: Clip.none,
children: [
Container(
height: 30,
width: 30,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Color(0xFFD90B2E),
border: Border.all(color: Color(0xFF2C3742), width: 1),
),
child: Center(
child: Text(
number,
style: TextStyle(
color: Colors.white,
fontWeight: FontWeight.w400,
fontSize: 8,
),
),
),
),
Positioned(
left: 20,
child: SizedBox(
height: 30,
width: 50,
child: Stack(
clipBehavior: Clip.none,
children: List.generate(containerImages.length, (index) {
return Positioned(
left: index * 22.0,
child: Container(
height: 30,
width: 30,
decoration: BoxDecoration(
shape: BoxShape.circle,
border: Border.all(color: Color(0xFF2C3742), width: 1),
),
child: CircleAvatar(
foregroundImage: AssetImage(containerImages[index]),
),
),
),
);
}
);
}),
),
),
),
],
),
],
);
}
Widget popupMenuItemWidget({
required void Function()? ontap,
required String text,
required String imageIcon,
}) {
return PopupMenuItem(
onTap: ontap,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 12.w),
child: Row(
children: [
text14w400white(text),
Spacer(),
Image.asset(
imageIcon,
height: 25.h,
width: 25.w,
)
],
),
),
);
}

View File

@@ -141,13 +141,13 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
),
style: const TextStyle(color: Colors.white),
keyboardType: widget.texttype,
// validator: widget.validator ??
// (value) {
// if (value == null || value.isEmpty) {
// return "Empty value";
// }
// return null;
// },
validator: widget.validator ??
(value) {
if (value == null || value.isEmpty) {
return "Empty value";
}
return null;
},
inputFormatters: widget.inputFormatters,
onChanged: (value) {
widget.onInput?.call(value);

View File

@@ -153,6 +153,16 @@ Widget feedTab() {
}
Widget normalcardtile() {
var mainImage = 'assets/images/png/uiw_like-o.png'.obs;
void updateImage(String reaction) {
if (reaction == 'like') {
mainImage.value = 'assets/images/png/f7_hand-thumbsup.png';
} else if (reaction == 'heart') {
mainImage.value = 'assets/images/png/heart 2.png';
} else if (reaction == 'party') {
mainImage.value = 'assets/images/png/party-popper 2.png';
}
}
return Column(
children: [
sizedBoxHeight(25.h),
@@ -284,17 +294,16 @@ Widget normalcardtile() {
height: 18.h,
),
),
sizedBoxWidth(5.w)
],
),
),
sizedBoxHeight(20.h),
GestureDetector(
onTap: () {
Get.toNamed(RouteName.postdetailsScreen);
},
child: Image.asset('assets/images/png/Rectangle 22.png')),
onTap: () {
Get.toNamed(RouteName.postdetailsScreen);
},
child: Image.asset('assets/images/png/Rectangle 22.png')),
sizedBoxHeight(20.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
@@ -321,11 +330,9 @@ Widget normalcardtile() {
text16w400_FCFCFC(
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s . . ."),
Row(children: [
Spacer(),
commonGlassContainer(
border: 0.9,
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
@@ -352,8 +359,7 @@ Widget normalcardtile() {
text14w400_FCFCFC('20'),
sizedBoxWidth(20.w),
commonGlassContainer(
border: 0.9,
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
@@ -391,61 +397,62 @@ Widget normalcardtile() {
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ReactionButton<String>(
onReactionChanged: (reaction) {
debugPrint('Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>?>[
Reaction<String>(
Obx(() {
return ReactionButton<String>(
onReactionChanged: (reaction) {
updateImage(reaction?.value ?? 'like');
debugPrint(
'Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>?>[
Reaction<String>(
value: 'like',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/f7_hand-thumbsup.png'),
icon: _buildReactionsIcon(
'assets/images/png/f7_hand-thumbsup.png'),
),
Reaction<String>(
value: 'heart',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/heart 2.png'),
icon: _buildReactionsIcon(
'assets/images/png/heart 2.png'),
),
Reaction<String>(
value: 'party',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/party-popper 2.png'),
icon: _buildReactionsIcon(
'assets/images/png/party-popper 2.png'),
),
],
// placeholder: Reaction<String>(
// value: 'like',
// icon: _buildReactionsIcon(
// 'assets/images/png/f7_hand-thumbsup.png'),
// ),
selectedReaction: Reaction<String>(
value: 'like',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/f7_hand-thumbsup.png'),
icon: _buildReactionsIcon(
'assets/images/png/f7_hand-thumbsup.png'),
),
Reaction<String>(
value: 'heart',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/heart 2.png'),
icon: _buildReactionsIcon(
'assets/images/png/heart 2.png'),
),
Reaction<String>(
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<String>(
value: 'like',
icon: _buildReactionsIcon(
'assets/images/png/f7_hand-thumbsup.png'),
),
selectedReaction: Reaction<String>(
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',
),
),
boxColor: Colors.white,
boxElevation: 5,
boxRadius: 50,
itemsSpacing: 8,
itemScale: 0.3,
itemSize: Size(40.0, 40.0),
boxPadding: EdgeInsets.all(4),
boxAnimationDuration: Duration(milliseconds: 200),
itemAnimationDuration:
Duration(milliseconds: 100),
hoverDuration: Duration(milliseconds: 400),
toggle: false,
direction: ReactionsBoxAlignment.ltr,
child: _buildReactionsIcon(mainImage.value),
);
})
],
),
],
@@ -482,6 +489,7 @@ Widget normalcardtile() {
),
],
);
}
Widget _buildReactionsPreviewIcon(String assetPath) {
@@ -505,8 +513,7 @@ Widget _buildReactionsIcon(String assetPath) {
Widget tagCardTile() {
return commonGlassContainer(
border: 0.9,
border: 0.9,
width: double.infinity,
height: 580.h,
borderradius: 1,
@@ -525,8 +532,7 @@ Widget tagCardTile() {
Widget containertile({required String text}) {
return commonGlassContainer(
border: 0.9,
border: 0.9,
width: 100.w,
height: 30.h,
borderradius: 30.r,

View File

@@ -8,6 +8,7 @@ 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 CycleScreen extends StatefulWidget {
const CycleScreen({super.key});
@@ -78,6 +79,17 @@ Widget CyclelatestTab() {
}
Widget normalcardtile() {
var mainImage = 'assets/images/png/uiw_like-o.png'.obs;
void updateImage(String reaction) {
if (reaction == 'like') {
mainImage.value = 'assets/images/png/f7_hand-thumbsup.png';
} else if (reaction == 'heart') {
mainImage.value = 'assets/images/png/heart 2.png';
} else if (reaction == 'party') {
mainImage.value = 'assets/images/png/party-popper 2.png';
}
}
return Column(
children: [
sizedBoxHeight(25.h),
@@ -118,17 +130,107 @@ Widget normalcardtile() {
],
),
Spacer(),
Image.asset(
'assets/images/png/Group 1000004071.png',
width: 4.w,
height: 18.h,
PopupMenuButton(
surfaceTintColor: Color(0xFF222935),
constraints: BoxConstraints.tightFor(width: 176.w),
offset: Offset(0, 50),
color: Color(0xFF222935),
tooltip: "",
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
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),
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),
@@ -142,7 +244,11 @@ Widget normalcardtile() {
itemBuilder: (context, index) {
return Padding(
padding: EdgeInsets.only(right: 12.w),
child: containertile(text: titles[index]),
child: GestureDetector(
onTap: () {
Get.toNamed(RouteName.cyclescreen);
},
child: containertile(text: titles[index])),
);
},
),
@@ -151,87 +257,9 @@ Widget normalcardtile() {
text16w400_FCFCFC(
"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,
customWidget: Center(
child: ReactionButton<String>(
itemSize: Size.fromHeight(20),
onReactionChanged: (Reaction<String>? reaction) {
debugPrint('Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>>[
Reaction<String>(
value: 'like',
icon: Image.asset(
'assets/images/png/f7_hand-thumbsup.png',
height: 17.h,
width: 17.w,
),
),
],
),
),
),
commonGlassContainer(
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
customWidget: Center(
child: ReactionButton<String>(
itemSize: Size.fromHeight(20),
onReactionChanged: (Reaction<String>? reaction) {
debugPrint('Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>>[
Reaction<String>(
value: 'Favourite',
icon: Image.asset(
'assets/images/png/heart 2.png',
height: 17.h,
width: 17.w,
),
),
],
),
),
),
commonGlassContainer(
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
customWidget: Center(
child: ReactionButton<String>(
itemSize: Size.fromHeight(20),
onReactionChanged: (Reaction<String>? reaction) {
debugPrint('Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>>[
Reaction<String>(
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,
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
@@ -258,8 +286,7 @@ Widget normalcardtile() {
text14w400_FCFCFC('20'),
sizedBoxWidth(20.w),
commonGlassContainer(
border: 0.9,
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
@@ -291,13 +318,71 @@ Widget normalcardtile() {
children: [
Column(
children: [
GestureDetector(
onTap: () {},
child: Image.asset(
'assets/images/png/uiw_like-o.png',
height: 19.h,
width: 19.w,
),
Row(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Obx(() {
return ReactionButton<String>(
onReactionChanged: (reaction) {
updateImage(reaction?.value ?? 'like');
debugPrint(
'Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>?>[
Reaction<String>(
value: 'like',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/f7_hand-thumbsup.png'),
icon: _buildReactionsIcon(
'assets/images/png/f7_hand-thumbsup.png'),
),
Reaction<String>(
value: 'heart',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/heart 2.png'),
icon: _buildReactionsIcon(
'assets/images/png/heart 2.png'),
),
Reaction<String>(
value: 'party',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/party-popper 2.png'),
icon: _buildReactionsIcon(
'assets/images/png/party-popper 2.png'),
),
],
// placeholder: Reaction<String>(
// value: 'like',
// icon: _buildReactionsIcon(
// 'assets/images/png/f7_hand-thumbsup.png'),
// ),
selectedReaction: Reaction<String>(
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.0, 40.0),
boxPadding: EdgeInsets.all(4),
boxAnimationDuration: Duration(milliseconds: 200),
itemAnimationDuration:
Duration(milliseconds: 100),
hoverDuration: Duration(milliseconds: 400),
toggle: false,
direction: ReactionsBoxAlignment.ltr,
child: _buildReactionsIcon(mainImage.value),
);
})
],
),
],
),
sizedBoxHeight(8.h),
text11w400_FCFCFC('Like')
@@ -333,6 +418,25 @@ Widget normalcardtile() {
);
}
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,
);
}
class CycleTabBar extends StatelessWidget {
// Set the desired height

View File

@@ -37,7 +37,7 @@ class _PostDetailsScreenState extends State<PostDetailsScreen> {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
sizedBoxHeight(25.h),
sizedBoxHeight(16.h),
postCards(),
sizedBoxHeight(30.h),
commonDivider(),
@@ -102,7 +102,7 @@ class _PostDetailsScreenState extends State<PostDetailsScreen> {
];
return Column(
children: [
sizedBoxHeight(25.h),
sizedBoxHeight(16.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: Row(
@@ -296,8 +296,7 @@ class _PostDetailsScreenState extends State<PostDetailsScreen> {
text14w400_FCFCFC('20'),
sizedBoxWidth(20.w),
commonGlassContainer(
border: 0.9,
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100,
@@ -432,8 +431,7 @@ class _PostDetailsScreenState extends State<PostDetailsScreen> {
Widget containertile({required String text}) {
return commonGlassContainer(
border: 0.9,
border: 0.9,
width: 100.w,
height: 30.h,
borderradius: 30.r,

View File

@@ -50,15 +50,15 @@ class _PostScreenState extends State<PostScreen> {
children: [
sizedBoxHeight(20.h),
text16w400_FCFCFC("Caption"),
sizedBoxHeight(20.h),
sizedBoxHeight(18.h),
const CustomTextFormField2(
maxlines: 3,
),
sizedBoxHeight(25.h),
text16w400_FCFCFC("Media"),
sizedBoxHeight(20.h),
commonGlassContainer( border: 0.9,
sizedBoxHeight(18.h),
commonGlassContainer(
border: 0.9,
width: double.infinity,
height: 130.h,
borderradius: 10.r,
@@ -81,6 +81,20 @@ class _PostScreenState extends State<PostScreen> {
)),
sizedBoxHeight(25.h),
text16w400_FCFCFC("Tags"),
sizedBoxHeight(18.h),
CustomTextFormField(
suffixIcon: Container(
height: 20.h,
width: 20.w,
child: Center(
child: Image.asset(
"assets/images/png/Frame 58575.png",
height: 20.h,
width: 20.w,
fit: BoxFit.cover,
),
),
)),
sizedBoxHeight(25.h),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
@@ -101,25 +115,24 @@ class _PostScreenState extends State<PostScreen> {
),
sizedBoxHeight(30.h),
text16w400_FCFCFC("CTA Title"),
sizedBoxHeight(25.h),
sizedBoxHeight(18.h),
CustomTextFormField(),
sizedBoxHeight(30.h),
text16w400_FCFCFC("Post as"),
sizedBoxHeight(25.h),
text16w400_FCFCFC("Post as"),
sizedBoxHeight(18.h),
CommonDropdownBtn(hint: '', items: [
'Active alliance network',
'Fitfam federation',
'The athletic town'
]),
sizedBoxHeight(30.h),
text16w400_FCFCFC("Post as"),
sizedBoxHeight(25.h),
text16w400_FCFCFC("Post in"),
sizedBoxHeight(18.h),
CommonDropdownBtn(hint: '', items: [
'Active alliance network',
'Fitfam federation',
'The athletic town'
]),
sizedBoxHeight(100.h),
]),
),
@@ -127,8 +140,6 @@ class _PostScreenState extends State<PostScreen> {
]));
}
Widget containerTile({
required String text,
required int index,

View File

@@ -0,0 +1,114 @@
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 Announcements extends StatefulWidget {
const Announcements({super.key});
@override
State<Announcements> createState() => _AnnouncementsState();
}
class _AnnouncementsState extends State<Announcements> {
List announcement = [
{
"imagepath": "assets/images/png/Ellipse 52.png",
"title": "Ryan Dorwat",
"date": "11-04-2024",
"subtitle":
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."
},
{
"imagepath": "assets/images/png/Ellipse 52.png",
"title": "Ryan Dorwat",
"date": "11-04-2024",
"subtitle":
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."
},
{
"imagepath": "assets/images/png/Ellipse 52.png",
"title": "Ryan Dorwat",
"date": "11-04-2024",
"subtitle":
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s."
},
];
@override
Widget build(BuildContext context) {
return Scaffold(
// key: _scaffoldKey1,
backgroundColor: Color(0xFF222935),
extendBody: true,
appBar: CommonAppbar(
titleTxt: "Announcements",
),
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),
Column(
children: List.generate(announcement.length, (index) {
return Column(
children: [
announcementWidget(
imagepath: announcement[index]["imagepath"],
title: announcement[index]["title"],
date: announcement[index]["date"],
subtitle: announcement[index]["subtitle"]),
sizedBoxHeight(16.h)
],
);
}),
)
]))))
]));
}
}
Widget announcementWidget({
required String imagepath,
required String title,
required String date,
required String subtitle,
}) {
return commonGlassContainer(
width: double.infinity,
height: 120.h,
borderradius: 10.r,
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 12.h),
child: Column(
children: [
Row(
children: [
CircleAvatar(
radius: 15.r,
foregroundImage: AssetImage(imagepath),
),
sizedBoxWidth(12.w),
text16w700_FCFCFC(title),
sizedBoxWidth(10.w),
text12w400_FCFCFC_blur(date),
],
),
sizedBoxHeight(16.w),
text14w400_FCFCFCblur(subtitle),
],
),
),
border: 1);
}

View File

@@ -0,0 +1,249 @@
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.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';
class Group extends StatefulWidget {
const Group({super.key});
@override
State<Group> createState() => _GroupState();
}
class _GroupState extends State<Group> {
List GroupData = [
{
"imagepath": "assets/images/png/img45.png",
"title": "Cardio crusaders circle",
"subtitle": "Iron titans fitness crew",
"members": "7 members"
},
{
"imagepath": "assets/images/png/Rectangle 25.png",
"title": "Strength squad syndicate",
"subtitle": "Iron titans fitness crew",
"members": "7 members"
},
{
"imagepath": "assets/images/png/img2.png",
"title": "Flexibility faction force",
"subtitle": "Iron titans fitness crew",
"members": "7 members"
},
];
@override
Widget build(BuildContext context) {
return Scaffold(
// key: _scaffoldKey1,
backgroundColor: Color(0xFF222935),
extendBody: true,
appBar: CommonAppbar(
titleTxt: "Groups",
),
body: Stack(children: [
const CommonBlurLeftRed(),
const CommonBlurRightRed(),
const CommonBlurLeft(),
const CommonBlurRight(),
Positioned.fill(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: SingleChildScrollView(
child: Column(
children: [
Column(
children: List.generate(GroupData.length, (index) {
return groupCard(
imagepath: GroupData[index]["imagepath"] ?? '',
title: GroupData[index]["title"] ?? '',
ontap: () {},
subtitle: GroupData[index]["subtitle"],
members: GroupData[index]["members"] ?? '');
}),
)
],
))))
]));
}
Widget groupCard({
required String imagepath,
required String title,
required void Function()? ontap,
required String members,
required String subtitle,
}) {
return Padding(
padding: EdgeInsets.only(bottom: 25.h),
child: GestureDetector(
onTap: ontap,
child: commonGlassContainer(
border: 0.9,
width: double.infinity,
height: 162.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(
backgroundImage: AssetImage(
imagepath,
),
),
),
sizedBoxWidth(13.w),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text18w700_FCFCFC(title),
sizedBoxHeight(10.h),
Row(
children: [
Image.asset(
'assets/images/png/community 1 (traced).png',
width: 18.w,
height: 18.h,
),
sizedBoxWidth(4.w),
text14w400_FCFCFCblur(subtitle)
],
),
],
),
Spacer(),
PopupMenuButton(
surfaceTintColor: Color(0xFF222935),
constraints: BoxConstraints.tightFor(width: 200.w),
offset: Offset(0, 30),
color: Color(0xFF222935),
tooltip: "",
itemBuilder: (BuildContext context) =>
<PopupMenuEntry>[
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(),
sizedBoxHeight(10.h),
Row(
children: [
stackContainers(
number: "+2",
containerImages: [
"assets/images/png/cimg3.png",
"assets/images/png/cimg2.png",
"assets/images/png/cimg3.png",
"assets/images/png/cimg2.png",
],
),
sizedBoxWidth(95.w),
text12w400_FCFCFC_blur(members),
],
)
],
),
)),
),
);
}
}

View File

@@ -0,0 +1,134 @@
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 CommunityInfo extends StatefulWidget {
const CommunityInfo({super.key});
@override
State<CommunityInfo> createState() => _CommunityInfoState();
}
class _CommunityInfoState extends State<CommunityInfo> {
@override
Widget build(BuildContext context) {
return Scaffold(
// key: _scaffoldKey1,
backgroundColor: Color(0xFF222935),
extendBody: true,
appBar: CommonAppbar(
titleTxt: "Community info page",
),
body: Stack(children: [
const CommonBlurLeftRed(),
const CommonBlurRightRed(),
const CommonBlurLeft(),
const CommonBlurRight(),
Positioned.fill(
child: SingleChildScrollView(
child: Column(children: [
Stack(clipBehavior: Clip.none, children: [
GestureDetector(
onTap: () {
Get.toNamed(RouteName.communityInfo);
},
child: 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(50.h),
Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
text20w700_FCFCFC("Active alliance network"),
sizedBoxHeight(20.h),
commonDivider(),
sizedBoxHeight(20.h),
text16w400_FCFCFC("About community"),
sizedBoxHeight(20.h),
text14w400_FCFCFCblur(
"Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book."),
sizedBoxHeight(30.h),
Row(
children: [
commonGlassContainer(
width: 35.w,
height: 35.h,
borderradius: 100.r,
customWidget: Center(
child: Image.asset(
"assets/images/png/Group 58645.png",
height: 17.h,
width: 13.w,
),
),
border: 0.5),
sizedBoxWidth(8.w),
text16w400_white("Elm street london, United Kingdom")
],
),
sizedBoxHeight(15.h),
Row(
children: [
commonGlassContainer(
width: 35.w,
height: 35.h,
borderradius: 100.r,
customWidget: Center(
child: Image.asset(
"assets/images/png/puzzle-pieces 1 (traced).png",
height: 19.h,
width: 20.w,
),
),
border: 0.5),
sizedBoxWidth(8.w),
text16w400_white("Sports")
],
)
]),
)
])))
]));
}
}

View File

@@ -0,0 +1,757 @@
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/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 CommunityDetails extends StatefulWidget {
const CommunityDetails({super.key});
@override
State<CommunityDetails> createState() => _CommunityDetailsState();
}
class _CommunityDetailsState extends State<CommunityDetails> {
@override
Widget build(BuildContext context) {
return Scaffold(
// key: _scaffoldKey1,
backgroundColor: Color(0xFF222935),
extendBody: true,
appBar: CommonAppbar(
titleTxt: "",
customActionWidget: PopupMenuButton(
surfaceTintColor: Color(0xFF222935),
constraints: BoxConstraints.tightFor(width: 180.w),
offset: Offset(0, 20),
color: Color(0xFF222935),
tooltip: "",
itemBuilder: (BuildContext context) => <PopupMenuEntry>[
PopupMenuItem(
onTap: () {},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: Row(
children: [
text14w400white("Invite"),
Spacer(),
Image.asset(
"assets/images/png/uiw_user-add.png",
height: 15.h,
width: 15.w,
)
],
),
),
),
PopupMenuDivider(),
PopupMenuItem(
onTap: () {},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: Row(
children: [
text14w400white("Share"),
Spacer(),
Image.asset(
"assets/images/png/share.png",
height: 20.h,
width: 20.w,
)
],
),
),
),
PopupMenuDivider(),
PopupMenuItem(
onTap: () {},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: Row(
children: [
text14w400white("Search"),
Spacer(),
Image.asset(
"assets/images/png/Frame 58575.png",
height: 18.h,
width: 18.w,
)
],
),
),
),
PopupMenuDivider(),
PopupMenuItem(
onTap: () {},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: Row(
children: [
text14w400white("Mute notification"),
Spacer(),
Image.asset(
"assets/images/png/Black1233.png",
height: 16.h,
width: 16.w,
)
],
),
),
),
PopupMenuDivider(),
PopupMenuItem(
onTap: () {},
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 8.w),
child: Row(
children: [
text14w400white("Pin"),
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',
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: [
GestureDetector(
onTap: () {
Get.toNamed(RouteName.communityInfo);
},
child: 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(
number: "+2",
containerImages: [
"assets/images/png/cimg3.png",
"assets/images/png/cimg2.png",
"assets/images/png/cimg3.png",
"assets/images/png/cimg2.png",
],
),
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),
GestureDetector(
onTap: () {
Get.toNamed(RouteName.group);
},
child: 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),
GestureDetector(
onTap: () {
Get.toNamed(RouteName.announcement);
},
child: 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: [
sizedBoxHeight(20.h),
normalcardtile(),
],
);
}
Widget eventstab() {
return Column(
children: [],
);
}
Widget normalcardtile() {
final List<String> titles = [
'Race',
'Swimming',
'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) => <PopupMenuEntry>[
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<String>(
itemSize: Size.fromHeight(20),
onReactionChanged: (Reaction<String>? reaction) {
debugPrint('Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>>[
Reaction<String>(
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<String>(
itemSize: Size.fromHeight(20),
onReactionChanged: (Reaction<String>? reaction) {
debugPrint('Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>>[
Reaction<String>(
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<String>(
onReactionChanged: (reaction) {
debugPrint(
'Selected value: ${reaction?.value}');
},
reactions: <Reaction<String>?>[
Reaction<String>(
value: 'like',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/f7_hand-thumbsup.png'),
icon: _buildReactionsIcon(
'assets/images/png/f7_hand-thumbsup.png'),
),
Reaction<String>(
value: 'heart',
previewIcon: _buildReactionsPreviewIcon(
'assets/images/png/heart 2.png'),
icon: _buildReactionsIcon(
'assets/images/png/heart 2.png'),
),
Reaction<String>(
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<String>(
value: 'like',
icon: _buildReactionsIcon(
'assets/images/png/f7_hand-thumbsup.png'),
),
selectedReaction: Reaction<String>(
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 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)),
));
}
}
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',
),
]);
}
}

View File

@@ -19,21 +19,28 @@ class MyCommunity extends StatefulWidget {
class _MyCommunityState extends State<MyCommunity> {
List JoinedcommunityData = [
{
"imagePath": "assets/images/png/Ellipse 34.png",
"imagePath": "assets/images/png/img2.png",
"text": "Active alliance network",
"members": "7 members"
},
{
"imagePath": "assets/images/png/Ellipse 35.png",
"text": "FitFam federation"
"imagePath": "assets/images/png/img34.png",
"text": "FitFam federation",
"members": "7 members"
},
];
List RequestcommunityData = [
{
"imagePath": "assets/images/png/Ellipse 36.png",
"imagePath": "assets/images/png/img45.png",
"text": "The athletic town",
"members": "7 members"
},
{
"imagePath": "assets/images/png/img2.png",
"text": "Football fever",
"members": "7 members"
},
{"imagePath": "assets/images/png/Ellipse 37.png", "text": "Football fever"},
];
@override
@@ -96,7 +103,9 @@ class _MyCommunityState extends State<MyCommunity> {
},
imagepath: JoinedcommunityData[index]
['imagePath'],
title: JoinedcommunityData[index]['text']);
title: JoinedcommunityData[index]['text'],
members: JoinedcommunityData[index]
['members']);
}),
),
text18w700_FCFCFC("Requested communities"),
@@ -108,7 +117,9 @@ class _MyCommunityState extends State<MyCommunity> {
ontap: () {},
imagepath: RequestcommunityData[index]
['imagePath'],
title: RequestcommunityData[index]['text']);
title: RequestcommunityData[index]['text'],
members: RequestcommunityData[index]
['members']);
}),
)
]),
@@ -120,16 +131,16 @@ class _MyCommunityState extends State<MyCommunity> {
required String imagepath,
required String title,
required void Function()? ontap,
required String members,
}) {
return Padding(
padding: EdgeInsets.only(bottom: 25.h),
child: GestureDetector(
onTap: ontap,
child: commonGlassContainer(
border: 0.9,
border: 0.9,
width: double.infinity,
height: 157.h,
height: 162.h,
borderradius: 10.r,
customWidget: Padding(
padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h),
@@ -145,14 +156,16 @@ class _MyCommunityState extends State<MyCommunity> {
shape: BoxShape.circle,
// color: Colors.amber,
),
child: Center(
child: Image.asset(imagepath, fit: BoxFit.cover)),
child:
// Center(
// child: Image.asset(imagepath, fit: BoxFit.cover)),
CircleAvatar(
backgroundImage: AssetImage(
imagepath,
),
),
),
// CircleAvatar(
// foregroundImage: AssetImage(
// imagepath,
// ),
// radius: 32.5.r),
sizedBoxWidth(13.w),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -162,8 +175,7 @@ class _MyCommunityState extends State<MyCommunity> {
Row(
children: [
commonGlassContainer(
border: 0.9,
border: 0.9,
width: 30.w,
height: 30.h,
borderradius: 100.r,
@@ -274,10 +286,27 @@ class _MyCommunityState extends State<MyCommunity> {
),
sizedBoxHeight(16.h),
commonDivider(),
sizedBoxHeight(10.h),
Row(
children: [
stackContainers(
number: "+2",
containerImages: [
"assets/images/png/cimg3.png",
"assets/images/png/cimg2.png",
"assets/images/png/cimg3.png",
"assets/images/png/cimg2.png",
],
),
sizedBoxWidth(95.w),
text12w400_FCFCFC_blur(members),
],
)
],
),
)),
),
);
}
}

View File

@@ -1,318 +0,0 @@
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<CommunityDetails> createState() => _CommunityDetailsState();
}
class _CommunityDetailsState extends State<CommunityDetails> {
@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',
),
]);
}
}

View File

@@ -96,7 +96,6 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
autovalidateMode: AutovalidateMode.onUserInteraction,
obscureText: obscureText,
controller: widget.textEditingController,
decoration: InputDecoration(
hintText: widget.hintText,
prefixIconColor: widget.prefixIconColor,
@@ -144,13 +143,13 @@ class _CustomTextFormFieldState extends State<CustomTextFormField> {
),
style: const TextStyle(color: Colors.white),
keyboardType: widget.texttype,
// validator: widget.validator ??
// (value) {
// if (value == null || value.isEmpty) {
// return "Empty value";
// }
// return null;
// },
validator: widget.validator ??
(value) {
if (value == null || value.isEmpty) {
return "Empty value";
}
return null;
},
inputFormatters: widget.inputFormatters,
onChanged: (value) {
widget.onInput?.call(value);
@@ -250,7 +249,6 @@ class _CustomTextFormField2State extends State<CustomTextFormField2> {
autovalidateMode: AutovalidateMode.onUserInteraction,
obscureText: obscureText,
controller: widget.textEditingController,
decoration: InputDecoration(
hintText: widget.hintText,
prefixIconColor: widget.prefixIconColor,
@@ -298,13 +296,13 @@ class _CustomTextFormField2State extends State<CustomTextFormField2> {
),
style: const TextStyle(color: Colors.white),
keyboardType: widget.texttype,
// validator: widget.validator ??
// (value) {
// if (value == null || value.isEmpty) {
// return "Empty value";
// }
// return null;
// },
validator: widget.validator ??
(value) {
if (value == null || value.isEmpty) {
return "Empty value";
}
return null;
},
inputFormatters: widget.inputFormatters,
onChanged: (value) {
widget.onInput?.call(value);

View File

@@ -166,6 +166,17 @@ Widget text16w400_FCFCFC(String text) {
);
}
Widget text16w700_FCFCFC(String text) {
return Text(
text,
style: TextStyle(
fontSize: 16.sp,
color: Color(0xFFFCFCFC),
fontFamily: 'Helvetica',
fontWeight: FontWeight.w700),
);
}
Widget text16w400_white(String text) {
return Text(
text,

View File

@@ -12,6 +12,12 @@ class RouteName {
static const String postdetailsScreen = '/postdetailsScreen';
static const String mycommunity = '/mycommunity';
static const String communityDetails = '/communityDetails';
static const String communityInfo = '/communityInfo';
static const String announcement = '/announcement';
static const String group = '/group';

View File

@@ -4,8 +4,11 @@ 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/Community/Announcements/View/Announcements.dart';
import 'package:regroup/Feed%20Module/sidemenu/Community/Group/view/Group.dart';
import 'package:regroup/Feed%20Module/sidemenu/Community/MyCommunity/Community_Info-Page/view/communityInfo.dart';
import 'package:regroup/Feed%20Module/sidemenu/Community/MyCommunity/View/CommunityDetails.dart';
import 'package:regroup/Feed%20Module/sidemenu/Community/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';
@@ -63,5 +66,17 @@ class AppRoutes {
name: RouteName.communityDetails,
page: () => const CommunityDetails(),
),
GetPage(
name: RouteName.communityInfo,
page: () => const CommunityInfo(),
),
GetPage(
name: RouteName.announcement,
page: () => const Announcements(),
),
GetPage(
name: RouteName.group,
page: () => const Group(),
),
];
}