ToneSnap_FSX_Flutter/lib/modules/sideb/widgets/browse_item_atv.dart
fengshengxiong da21720c3c 1.首页增加下拉刷新
2.修改下载状态监听方式,实现全局同步
3.修复搜索无结果时页面报错
4.歌单页面点击播放全部和随机是播放当前歌单列表
2024-08-06 15:52:07 +08:00

112 lines
2.8 KiB
Dart

// Author: fengshengxiong
// Date: 2024/6/21
// Description: 首页单曲Item
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:tone_snap/components/network_image_widget.dart';
import 'package:tone_snap/data/models/music_model.dart';
import 'package:tone_snap/generated/assets.dart';
import 'package:tone_snap/modules/sideb/more_bottom_sheet/more_bottom_sheet_view.dart';
import 'package:tone_snap/utils/obj_util.dart';
class BrowseItemAtv extends StatelessWidget {
const BrowseItemAtv({super.key, required this.musicModel, required this.onTap});
final MusicModel musicModel;
final Function() onTap;
@override
Widget build(BuildContext context) {
return ClipRRect(
borderRadius: BorderRadius.circular(8).r,
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: onTap,
child: SizedBox(
height: 60.w,
child: Row(
children: [
_buildCover(),
_buildContent(),
_buildMore(),
],
),
),
),
),
);
}
Widget _buildCover() {
return NetworkImageWidget(
url: musicModel.coverUrl,
width: 60.w,
height: 60.w,
radius: 8.r,
);
}
Widget _buildContent() {
return Expanded(
child: Padding(
padding: const EdgeInsets.only(left: 12).w,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
ObjUtil.getStr(musicModel.title),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: Colors.white,
fontSize: 14.sp,
),
),
SizedBox(height: 4.h),
Text(
ObjUtil.getStr(musicModel.subtitle),
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
color: const Color(0xFF666666),
fontSize: 12.sp,
),
),
],
),
),
);
}
Widget _buildMore() {
return ClipOval(
child: Material(
color: Colors.transparent,
child: InkWell(
onTap: onTapMore,
child: Padding(
padding: const EdgeInsets.all(4).w,
child: Image.asset(
Assets.sideBMore,
width: 24.w,
height: 24.w,
),
),
),
),
);
}
void onTapMore() {
Get.bottomSheet(
MoreBottomSheetView(
musicModel: musicModel,
),
);
}
}