Merge pull request #123 from WDI-Ideas/createcommunity
meberes page in community details
This commit is contained in:
@@ -166,5 +166,8 @@ class ApiUrls {
|
||||
|
||||
static const getcommunitygroups = "${baseUrl}fetch-community-all-groups";
|
||||
|
||||
static const getcommunitymembers = "${baseUrl}fetch-community-all-members";
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -145,6 +145,9 @@ class RouteName {
|
||||
|
||||
static const String viewalluserspinned = '/viewallusersspinned';
|
||||
|
||||
static const String communitymembers = '/communitymembers';
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -73,6 +73,7 @@ import 'package:regroup/sidemenu/Community/Admin/PopupItem/Community%20settings/
|
||||
import 'package:regroup/sidemenu/Community/Announcements/AnnouncementRequest.dart';
|
||||
import 'package:regroup/sidemenu/Community/Announcements/ManageMembers.dart';
|
||||
import 'package:regroup/sidemenu/Community/Announcements/NewAnnouncement/NewAnnounceent.dart';
|
||||
import 'package:regroup/sidemenu/Community/Members/CommunityMembers.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/AddGroups.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/NewCommunity.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/View/RequestsScreen.dart';
|
||||
@@ -537,10 +538,18 @@ class AppRoutes {
|
||||
name: RouteName.viewalluserspinned,
|
||||
page: () => const Viewtusertags(),
|
||||
),
|
||||
|
||||
GetPage(
|
||||
name: RouteName.communitymembers,
|
||||
page: () => const CommunityMembers(),
|
||||
),
|
||||
|
||||
|
||||
GetPage(
|
||||
name: RouteName.requestscreen,
|
||||
page: () => const RequestsScreen(),
|
||||
),
|
||||
|
||||
|
||||
];
|
||||
}
|
||||
|
||||
@@ -19,36 +19,12 @@ class Group extends StatefulWidget {
|
||||
}
|
||||
|
||||
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"
|
||||
},
|
||||
];
|
||||
|
||||
late Future myfuture;
|
||||
int id = Get.arguments["id"];
|
||||
bool iscommunity = Get.arguments["iscommunity"];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
// TODO: implement initState
|
||||
|
||||
// myfuture = Sidegetmethod().getJoinedusergroups(id);
|
||||
super.initState();
|
||||
}
|
||||
|
||||
|
||||
266
lib/sidemenu/Community/Members/CommunityMembers.dart
Normal file
266
lib/sidemenu/Community/Members/CommunityMembers.dart
Normal file
@@ -0,0 +1,266 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:cached_network_image/cached_network_image.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
import 'package:flutter_screenutil/flutter_screenutil.dart';
|
||||
import 'package:get/get.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/sized_box.dart';
|
||||
import 'package:regroup/Utils/texts.dart';
|
||||
import 'package:regroup/resources/routes/route_name.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/Model/communityMebersModel.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/view_model/getmethod.dart';
|
||||
import 'package:remove_emoji_input_formatter/remove_emoji_input_formatter.dart';
|
||||
|
||||
class CommunityMembers extends StatefulWidget {
|
||||
const CommunityMembers({super.key});
|
||||
|
||||
@override
|
||||
State<CommunityMembers> createState() => _CommunityMembersState();
|
||||
}
|
||||
|
||||
class _CommunityMembersState extends State<CommunityMembers> {
|
||||
StreamController<CommunityMembersModel> searchcontroller = StreamController();
|
||||
|
||||
int communityid = Get.arguments["communityid"];
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
var updata = communityid;
|
||||
var updata2 = "";
|
||||
Getcommunity().getCommunityMemberssearch(updata, updata2,
|
||||
streamController: searchcontroller);
|
||||
|
||||
super.initState();
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
searchcontroller.close();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: const Color(0xFF222935),
|
||||
extendBody: true,
|
||||
appBar: const CommonAppbar(
|
||||
titleTxt: "Members",
|
||||
),
|
||||
resizeToAvoidBottomInset: false,
|
||||
body: Stack(children: [
|
||||
Container(
|
||||
decoration: const BoxDecoration(
|
||||
image: DecorationImage(
|
||||
image: AssetImage("assets/images/png/Ellipse 1496.png"),
|
||||
fit: BoxFit.fill)),
|
||||
),
|
||||
SingleChildScrollView(
|
||||
child: Column(children: [
|
||||
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 16.w),
|
||||
child: CustomTextFormField(
|
||||
leadingIcon: SizedBox(
|
||||
height: 23,
|
||||
width: 23,
|
||||
child: Center(
|
||||
child: Image.asset(
|
||||
"assets/images/png/ion_search-outline.png",
|
||||
height: 23,
|
||||
width: 23,
|
||||
),
|
||||
),
|
||||
),
|
||||
texttype: TextInputType.text,
|
||||
inputFormatters: [
|
||||
RemoveEmojiInputFormatter(),
|
||||
],
|
||||
onInput: (value) {
|
||||
Getcommunity().getCommunityMemberssearch(communityid, value,
|
||||
streamController: searchcontroller);
|
||||
},
|
||||
hintText: "Search people",
|
||||
),
|
||||
),
|
||||
sizedBoxHeight(25.h),
|
||||
StreamBuilder<CommunityMembersModel>(
|
||||
stream: searchcontroller.stream,
|
||||
builder: (ctx, snapshot) {
|
||||
if (snapshot.connectionState == ConnectionState.waiting) {
|
||||
// Display shimmer effect while waiting for data
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
} else if (snapshot.hasError) {
|
||||
// Handle error state
|
||||
return Center(
|
||||
child: Text(
|
||||
'${snapshot.error} occurred',
|
||||
style: const TextStyle(fontSize: 18),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
// Data has been loaded, show actual UI
|
||||
return communitymembersobj!.data.isEmpty
|
||||
? _buildNoDataBody(context)
|
||||
: ListView.separated(
|
||||
physics: const ScrollPhysics(),
|
||||
shrinkWrap: true,
|
||||
itemCount: communitymembersobj!.data.length,
|
||||
separatorBuilder:
|
||||
(BuildContext context, int index) {
|
||||
return commonDivider();
|
||||
},
|
||||
itemBuilder: (context, index) {
|
||||
var mainFollowersData =
|
||||
communitymembersobj!.data[index];
|
||||
return GestureDetector(
|
||||
onTap: () {
|
||||
mainFollowersData
|
||||
.iamPrincipal!.principalTypeXid ==
|
||||
1
|
||||
? Get.toNamed(
|
||||
RouteName.profiletabindguest,
|
||||
arguments: {
|
||||
"FolloweridIndex":
|
||||
mainFollowersData
|
||||
.iamPrincipalXid!,
|
||||
})
|
||||
: Get.toNamed(
|
||||
RouteName.profiletabbusguest,
|
||||
arguments: {
|
||||
"FolloweridIndex":
|
||||
mainFollowersData
|
||||
.iamPrincipalXid!,
|
||||
});
|
||||
},
|
||||
child: Column(
|
||||
children: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(
|
||||
vertical: 16.h, horizontal: 16.w),
|
||||
child: Row(
|
||||
children: [
|
||||
mainFollowersData.iamPrincipal!
|
||||
.profilePhoto ==
|
||||
null ||
|
||||
mainFollowersData
|
||||
.iamPrincipal!
|
||||
.profilePhoto!
|
||||
.isEmpty
|
||||
? CircleAvatar(
|
||||
backgroundImage: const AssetImage(
|
||||
'assets/images/png/Ellipse 43.png'),
|
||||
radius: 25.r,
|
||||
)
|
||||
: CircleAvatar(
|
||||
backgroundImage:
|
||||
CachedNetworkImageProvider(
|
||||
mainFollowersData
|
||||
.iamPrincipal!
|
||||
.profilePhoto!,
|
||||
),
|
||||
|
||||
// NetworkImage(
|
||||
// mainFollowersData
|
||||
// .iamPrincipal!
|
||||
// .profilePhoto!),
|
||||
radius: 25.r,
|
||||
child: CachedNetworkImage(
|
||||
cacheKey: mainFollowersData
|
||||
.iamPrincipalXid
|
||||
.toString(),
|
||||
maxHeightDiskCache: 100,
|
||||
maxWidthDiskCache: 100,
|
||||
imageUrl: mainFollowersData
|
||||
.iamPrincipal!
|
||||
.profilePhoto!,
|
||||
placeholder:
|
||||
(context, url) =>
|
||||
Container(),
|
||||
errorWidget:
|
||||
(context, url, error) =>
|
||||
Icon(Icons.error),
|
||||
imageBuilder: (context,
|
||||
imageProvider) =>
|
||||
CircleAvatar(
|
||||
backgroundImage:
|
||||
imageProvider,
|
||||
radius: 25.r,
|
||||
),
|
||||
),
|
||||
),
|
||||
sizedBoxWidth(10.w),
|
||||
Column(
|
||||
crossAxisAlignment:
|
||||
CrossAxisAlignment.start,
|
||||
children: [
|
||||
mainFollowersData.iamPrincipal!
|
||||
.userName ==
|
||||
null ||
|
||||
mainFollowersData
|
||||
.iamPrincipal!
|
||||
.userName!
|
||||
.isEmpty ==
|
||||
true
|
||||
? text16w400_FCFCFC("Regroup")
|
||||
: text16w400_FCFCFC(
|
||||
mainFollowersData
|
||||
.iamPrincipal!
|
||||
.userName!),
|
||||
sizedBoxHeight(4.h),
|
||||
mainFollowersData.iamPrincipal!
|
||||
.userName ==
|
||||
null ||
|
||||
mainFollowersData
|
||||
.iamPrincipal!
|
||||
.userName!
|
||||
.isEmpty ==
|
||||
true
|
||||
? text12w400_FCFCFC_blur(
|
||||
"regroup")
|
||||
: text12w400_FCFCFC_blur(
|
||||
mainFollowersData
|
||||
.iamPrincipal!
|
||||
.userName!)
|
||||
],
|
||||
),
|
||||
],
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
}
|
||||
},
|
||||
),
|
||||
])
|
||||
]),
|
||||
)
|
||||
]),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildNoDataBody(context) {
|
||||
return Center(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
Text(
|
||||
"No Members Found",
|
||||
style: TextStyle(
|
||||
color: Colors.white,
|
||||
fontSize: 16.sp,
|
||||
fontWeight: FontWeight.w600),
|
||||
)
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
class CommunityMembersModel {
|
||||
CommunityMembersModel({
|
||||
required this.status,
|
||||
required this.statusCode,
|
||||
required this.message,
|
||||
required this.data,
|
||||
});
|
||||
|
||||
final String? status;
|
||||
final int? statusCode;
|
||||
final String? message;
|
||||
final List<Datum> data;
|
||||
|
||||
factory CommunityMembersModel.fromJson(Map<String, dynamic> json){
|
||||
return CommunityMembersModel(
|
||||
status: json["status"],
|
||||
statusCode: json["status_code"],
|
||||
message: json["message"],
|
||||
data: json["data"] == null ? [] : List<Datum>.from(json["data"]!.map((x) => Datum.fromJson(x))),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Datum {
|
||||
Datum({
|
||||
required this.id,
|
||||
required this.iamPrincipalXid,
|
||||
required this.manageCommunityXid,
|
||||
required this.iamPrincipal,
|
||||
});
|
||||
|
||||
final int? id;
|
||||
final int? iamPrincipalXid;
|
||||
final int? manageCommunityXid;
|
||||
final IamPrincipal? iamPrincipal;
|
||||
|
||||
factory Datum.fromJson(Map<String, dynamic> json){
|
||||
return Datum(
|
||||
id: json["id"],
|
||||
iamPrincipalXid: json["iam_principal_xid"],
|
||||
manageCommunityXid: json["manage_community_xid"],
|
||||
iamPrincipal: json["iam_principal"] == null ? null : IamPrincipal.fromJson(json["iam_principal"]),
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class IamPrincipal {
|
||||
IamPrincipal({
|
||||
required this.id,
|
||||
required this.principalTypeXid,
|
||||
required this.userName,
|
||||
required this.profilePhoto,
|
||||
required this.isUserPinned,
|
||||
});
|
||||
|
||||
final int? id;
|
||||
final int? principalTypeXid;
|
||||
final String? userName;
|
||||
final String? profilePhoto;
|
||||
final bool? isUserPinned;
|
||||
|
||||
factory IamPrincipal.fromJson(Map<String, dynamic> json){
|
||||
return IamPrincipal(
|
||||
id: json["id"],
|
||||
principalTypeXid: json["principal_type_xid"],
|
||||
userName: json["user_name"],
|
||||
profilePhoto: json["profile_photo"],
|
||||
isUserPinned: json["is_user_pinned"],
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -4,11 +4,14 @@ import 'dart:developer';
|
||||
import 'package:regroup/Common/api_urls.dart';
|
||||
import 'package:regroup/Common/base_manager.dart';
|
||||
import 'package:regroup/Common/controller/data/network/network_api.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/Model/communityMebersModel.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/Model/communityaddgroupsModel.dart';
|
||||
import 'package:regroup/sidemenu/Community/MyCommunity/Model/communitygroupsModel.dart';
|
||||
|
||||
CommunityAddgroupsModel? communityaddgroupobj;
|
||||
CommunitygroupsModel? communitygroupspobj;
|
||||
CommunityMembersModel? communitymembersobj;
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -41,4 +44,19 @@ class Getcommunity {
|
||||
return response;
|
||||
}
|
||||
|
||||
Future<ResponseData<dynamic>> getCommunityMemberssearch(updata,updata2,
|
||||
{required StreamController<CommunityMembersModel> streamController}) async {
|
||||
final response =
|
||||
await NetworkApiServices().getApi(
|
||||
"${ApiUrls.getcommunitymembers}?manage_community_xid=$updata&search=$updata2",
|
||||
|
||||
);
|
||||
|
||||
if (response.status == ResponseStatus.SUCCESS) {
|
||||
communitymembersobj = CommunityMembersModel.fromJson(response.data);
|
||||
if (!streamController.isClosed) streamController.sink.add(communitymembersobj!);
|
||||
}
|
||||
return response;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1214,7 +1214,9 @@ packages:
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
sqflite:
|
||||
|
||||
dependency: transitive
|
||||
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d
|
||||
|
||||
@@ -77,6 +77,9 @@ dependencies:
|
||||
flutter_html: ^3.0.0-beta.2
|
||||
comment_tree: ^0.3.0
|
||||
flutter_keyboard_visibility: ^6.0.0
|
||||
|
||||
sqflite: ^2.3.3+1
|
||||
|
||||
cached_network_image: any
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user