import 'package:flutter/material.dart'; import 'package:flutter_screenutil/flutter_screenutil.dart'; import 'package:wow_english/common/extension/string_extension.dart'; class RepeatAfterItem extends StatelessWidget { const RepeatAfterItem({super.key, required this.starNumber, required this.unLock, required this.tapEvent}); //分数 final int starNumber; //是否解锁 final bool unLock; final Function() tapEvent; @override Widget build(BuildContext context) { return Padding( padding: EdgeInsets.symmetric( horizontal: 10.w ), child: GestureDetector( onTap: (){ if(unLock) { tapEvent(); } }, child: Stack( children: [ _modelInfoWidget(context), _lockWidget() ], ), ), ); } Widget _modelInfoWidget(BuildContext context) { return Container( width: 162.w, height: 235.h, decoration: BoxDecoration( image: DecorationImage( image: AssetImage( 'gendubeij'.assetPng ), fit: BoxFit.fill ) ), padding: EdgeInsets.symmetric(horizontal: 11.w,vertical: 13.h), alignment: Alignment.center, child: Column( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Image.network( 'https://img.liblibai.com/web/648331d033b41.png?image_process=format,webp&x-oss-process=image/resize,w_2980,m_lfit/format,webp', height: 100.h, width: 140.w, fit: BoxFit.fitWidth, ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Image.asset( starNumber >= 1 ? 'star_light'.assetPng:'star_dark'.assetPng, width: 23.w, height: 21.h, ), Image.asset( starNumber >= 2 ? 'star_light'.assetPng:'star_dark'.assetPng, width: 23.w, height: 21.h, ), Image.asset( starNumber >= 3 ? 'star_light'.assetPng:'star_dark'.assetPng, width: 23.w, height: 21.h, ), Image.asset( starNumber >= 4 ? 'star_light'.assetPng:'star_dark'.assetPng, width: 23.w, height: 21.h, ), Image.asset( starNumber >= 5 ? 'star_light'.assetPng:'star_dark'.assetPng, width: 23.w, height: 21.h, ), ], ), Container( height: 35.h, width: double.infinity, decoration: BoxDecoration( color: const Color(0xFFFFCC00), borderRadius: BorderRadius.circular(5.r), border: Border.all( width: 1.0, color: const Color(0xFF333333), ), ), alignment: Alignment.center, child: Text( 'video title', style: TextStyle( fontSize: 16.sp, color: const Color(0xFF333333) ), ), ) ], ), ); } Widget _lockWidget() { return Offstage( offstage: unLock, child: Container( width: 162.w, height: 235.h, decoration: BoxDecoration( image: DecorationImage( image: AssetImage( 'gendubeij_mengban'.assetPng ), fit: BoxFit.fill ) ), alignment: Alignment.center, child: Image.asset( 'listen_lock'.assetPng, height: 36.h, width: 41.w, ), ), ); } }