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}); @override State createState() => _PostDetailsScreenState(); } class _PostDetailsScreenState extends State { @override Widget build(BuildContext context) { 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(16.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) ]))) ])); } Widget postCards() { final List titles = [ 'Cycle', 'Marathon', 'Events', 'Swimming', 'Events', ]; return Column( children: [ sizedBoxHeight(16.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, ); } }