import 'package:flutter/material.dart'; import 'package:skywood/main/lib_file.dart'; import 'package:skywood/pages/home/players/page/drama_detail_page.dart'; import 'package:skywood/pages/home/widgets/like_num_widget.dart'; import 'package:skywood/utils/tools/widgets/sky_common_widget.dart'; import '../../../utils/models/drama/skywood_drama.dart'; class RankListWidget extends StatelessWidget { const RankListWidget({super.key, required this.dramaList, }); final List dramaList; @override Widget build(BuildContext context) { return Stack( children: [ HelpImg.asset(ConstImg.homeRankBg, width: 325.w, height: 481.h), Positioned( left: 24.5.w, right: 24.5.w, top: 44.5.h, bottom: 34.5.h, child: ListView.separated( padding: EdgeInsets.only(right: 10.w), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemBuilder: (context, index) => _itemBuilder(index), separatorBuilder: (context, index) { return Divider( height: 1, thickness: 0.5, color: CommonColor.withValue('7A67C1'), ); }, itemCount: dramaList.length>6 ? 6:dramaList.length, ), ) ], ); } Widget _itemBuilder(int index) { SkywoodDrama drama = dramaList[index]; return SizedBox( height: 65.h, width: 296.w, child: Row( children: [ _rankIndex(index), HelpImg.network(drama.imageUrl, width: 40.w, height: 52.h, fit: BoxFit.cover), const SizedBox(width: 7), Expanded(child: SkyText(text: drama.name, fontSize: 13.w, fontFamily: 'Inter', fontWeight: FontWeight.w500, lineHeight: 1.23, color: CommonColor.black, maxLines: 2, )), SizedBox(width: 8.w), LikeNumWidget(watchTotal: drama.watchTotal) ], ), ).addInkWell(onTap: () { HelpNav.to(DramaDetailPage(dramaBean: drama)); }); } Widget _rankIndex(int index) { return SizedBox( width: 40.w, child: index < 3 ? _rank123(index) : SkyText(text: formatNumber(index + 1), fontSize: 15, color: CommonColor.black, fontFamily: 'Anton', fontWeight: FontWeight.bold, lineHeight: 1, ), ); } Widget _rank123(int index) { String img = ''; if (index == 0) img = ConstImg.rank1; if (index == 1) img = ConstImg.rank2; if (index == 2) img = ConstImg.rank3; return Padding(padding: EdgeInsets.only(right: 16.w), child: HelpImg.asset(img, width: 24.w), ); } String formatNumber(int number) { return number.toString().padLeft(2, '0'); } }