course_unit_item.dart 2.47 KB
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/common/widgets/ow_image_widget.dart';

import '../../../models/course_unit_entity.dart';

///课程(单元)item布局
class CourseUnitItem extends StatelessWidget {
  const CourseUnitItem(
      {super.key, required this.unitEntity, required this.unitLesson});

  final CourseUnitEntity unitEntity;
  final CourseUnitDetail unitLesson;

  @override
  Widget build(BuildContext context) {
    return Padding(
        padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 24.h),
        child: Stack(
          children: [
            _normalItem(),
            _lockWidget(),
          ],
        ));
  }

  Widget _normalItem() {
    return Container(
      width: 165.w,
      padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 24.h),
      decoration: BoxDecoration(
        image: DecorationImage(
            image: AssetImage('gendubeij'.assetPng), fit: BoxFit.fill),
      ),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Expanded(
              child: Container(
            decoration: BoxDecoration(
                border: Border.all(
                  width: 2,
                  color: const Color(0xFF140C10),
                ),
                borderRadius: BorderRadius.circular(6)),
            child: OwImageWidget(
              name: unitLesson.coverUrl ?? '',
              fit: BoxFit.fitHeight,
            ),
          )),
          20.verticalSpace,
          SizedBox(
            height: 40.h,
            child: Text(
              unitLesson.name ?? '',
              maxLines: 2,
              overflow: TextOverflow.ellipsis,
              style: TextStyle(fontSize: 11.sp, color: const Color(0xFF140C10)),
            ),
          )
        ],
      ),
    );
  }

  ///锁定状态下蒙层视图
  Widget _lockWidget() {
    return Visibility(
      visible: unitLesson.lock ?? false,
      child: Container(
        width: 165.w,
        decoration: BoxDecoration(
            image: DecorationImage(
                image: AssetImage('gendubeij_mengban'.assetPng),
                fit: BoxFit.fill)),
        alignment: Alignment.center,
        child: Image.asset(
          'iv_lock'.assetPng,
          height: 54.h,
          width: 61.5.w,
        ),
      ),
    );
  }
}