95 lines
2.7 KiB
Dart
95 lines
2.7 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/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.isNotEmpty(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,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|