ToneSnap_FSX_Flutter/lib/modules/sidea/widgets/my_voice_item.dart
fengshengxiong 7611e78244 1.变声加入广告和Firebase
2.音乐播放器首页完成数据加载展示
2024-06-26 15:32:21 +08:00

95 lines
2.8 KiB
Dart

// Author: fengshengxiong
// Date: 2024/6/5
// Description: 我的音频item
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:tone_snap/components/my_marquee_text.dart';
import 'package:tone_snap/data/sidea/models/voice_model.dart';
import 'package:tone_snap/generated/assets.dart';
import 'package:tone_snap/utils/obj_util.dart';
class MyVoiceItem extends StatelessWidget {
const MyVoiceItem({
super.key,
required this.item,
required this.onTapItem,
required this.onReName,
required this.onDelete,
});
final VoiceModel item;
final Function() onTapItem;
final Function() onReName;
final Function() onDelete;
@override
Widget build(BuildContext context) {
return InkWell(
onTap: onTapItem,
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 8.h),
child: Row(
children: [
ClipOval(
child: Image.asset(
ObjUtil.isNotEmptyStr(item.cover) ? item.cover! : Assets.sideAVoiceDefault,
width: 52.w,
height: 52.w,
fit: BoxFit.cover,
),
),
SizedBox(width: 12.w),
Expanded(
child: MyMarqueeText(
text: item.name,
textStyle: TextStyle(
color: Colors.white,
fontSize: 18.sp,
fontWeight: FontWeight.w500,
),
),
),
SizedBox(width: 12.w),
PopupMenuButton(
offset: Offset(0, 38.w),
color: Colors.white,
padding: EdgeInsets.zero,
itemBuilder: (context) {
return <PopupMenuEntry>[
PopupMenuItem(
onTap: onReName,
child: Center(
child: Text(
'Rename',
style: TextStyle(fontSize: 15.sp, fontWeight: FontWeight.w500),
),
),
),
PopupMenuItem(
onTap: onDelete,
child: Center(
child: Text(
'Delete',
style: TextStyle(fontSize: 15.sp, fontWeight: FontWeight.w500),
),
),
),
];
},
child: Padding(
padding: const EdgeInsets.all(6).w,
child: Image.asset(
Assets.sideAMore,
width: 32.w,
height: 32.w,
),
),
),
],
),
),
);
}
}