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> 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 createState() => _AudienceItemState(); } class _AudienceItemState extends State { @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; }), ), ], ), ); } }