You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

141 lines
5.1 KiB

import 'package:cached_network_image/cached_network_image.dart';
import 'package:dating_touchme_app/generated/assets.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import '../../model/discover/audience_list_data.dart';
class AudienceItem extends StatefulWidget {
final Records item;
final List<Map<String, dynamic>> selectUserId;
final Function(String, int) selectChange;
bool enableIf;
int nowSex;
AudienceItem({
super.key,
required this.item,
required this.selectUserId,
required this.selectChange,
this.enableIf = false,
this.nowSex = 0,
});
@override
State<AudienceItem> createState() => _AudienceItemState();
}
class _AudienceItemState extends State<AudienceItem> {
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(vertical: 10.w),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(40.w)),
child: CachedNetworkImage(
imageUrl: "${widget.item.profilePhoto ?? ""}?x-oss-process=image/format,webp/resize,w_120",
width: 40.w,
height: 40.w,
imageBuilder: (context, imageProvider) => Container(
decoration: BoxDecoration(
image: DecorationImage(
image: imageProvider,
fit: BoxFit.cover,
),
),
),
),
),
SizedBox(width: 5.w,),
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
widget.item.nickName ?? "",
style: TextStyle(
fontSize: 12.w
),
),
Row(
children: [
Text(
"${widget.item.age ?? ""}",
style: TextStyle(
fontSize: 12.w,
color: const Color.fromRGBO(121, 121, 121, 1)
),
),
SizedBox(width: 10.w,),
if(widget.item?.genderCode == 1) Container(
width: 13.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(255, 237, 255, 1)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.imagesFemale,
width: 8.w,
height: 8.w,
),
],
),
),
if(widget.item?.genderCode == 0) Container(
width: 13.w,
height: 13.w,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(13.w)),
color: const Color.fromRGBO(237, 245, 255, 1)
),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Image.asset(
Assets.imagesMale,
width: 8.w,
height: 8.w,
),
],
),
),
],
),
],
)
],
),
Checkbox(
value: widget.selectUserId.indexWhere((e) => e["userId"] == widget.item.userId) != -1,
onChanged: widget.enableIf && (widget.nowSex == widget.item.genderCode) ? null : (value) {
widget.selectChange(widget.item.userId ?? "", widget.item.userManagementId ?? 0);
},
activeColor: const Color.fromRGBO(117, 98, 249, 1),
side: const BorderSide(color: Colors.grey),
shape: const CircleBorder(),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
fillColor: MaterialStateProperty.resolveWith((states) {
if (states.contains(MaterialState.disabled)) {
return const Color.fromRGBO(0, 0, 0, .1); // 禁用颜色
} else if(states.contains(MaterialState.selected)){
return const Color.fromRGBO(117, 98, 249, 1);
}
return Colors.white;
}),
),
],
),
);
}
}