271 lines
13 KiB
Dart
271 lines
13 KiB
Dart
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() {
|
|
print(communityid);
|
|
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 GestureDetector(
|
|
onTap: () => FocusManager.instance.primaryFocus?.unfocus(),
|
|
child: 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!
|
|
.fullName ==
|
|
null ||
|
|
mainFollowersData
|
|
.iamPrincipal!
|
|
.fullName!
|
|
.isEmpty ==
|
|
true
|
|
? text16w400_FCFCFC("Regroup")
|
|
: text16w400_FCFCFC(
|
|
mainFollowersData
|
|
.iamPrincipal!
|
|
.fullName!),
|
|
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),
|
|
)
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|