module_item_widget.dart 2.48 KB
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/utils/color_parser.dart';
import 'package:wow_english/common/widgets/ow_image_widget.dart';
import 'package:wow_english/models/course_module_entity.dart';

///阶段(模块)item布局
class ModuleItemWidget extends StatelessWidget {
  const ModuleItemWidget(
      {super.key, required this.isSelected, this.model, this.onClickEvent});

  ///是否被选中
  final bool isSelected;
  final CourseModuleEntity? model;
  final Function()? onClickEvent;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        if (!isSelected) {
          return;
        }
        onClickEvent?.call();
      },
      child: isSelected ? _selectWidget() : _unSelectWidget(),
    );
  }

  Widget _unSelectWidget() {
    return Container(
      padding: const EdgeInsets.all(20),
      decoration: BoxDecoration(
          image: DecorationImage(image: AssetImage('gendubeij'.assetPng))),
      child: OwImageWidget(
        name: model?.picUrl ?? '',
      ),
    );
  }

  Widget _selectWidget() {
    return Container(
      padding: const EdgeInsets.all(10),
      decoration: BoxDecoration(
        image: DecorationImage(
            image: AssetImage(
              'gendubeij'.assetPng,
            ),
            fit: BoxFit.fill),
      ),
      child: Column(
        mainAxisAlignment: MainAxisAlignment.spaceBetween,
        children: [
          Expanded(
            child: OwImageWidget(
              name: model?.picUrl ?? '',
            ),
          ),
          10.verticalSpace,
          Container(
            decoration: BoxDecoration(
                color: parseColor(model.getSafeThemeColor()),
                borderRadius: BorderRadius.circular(6.r),
                border: Border.all(color: const Color(0xFF333333), width: 1.0)),
            padding: EdgeInsets.symmetric(horizontal: 10.w),
            child: Column(
              children: [
                Text(
                  model?.getSafeName() ?? '',
                  style: TextStyle(color: Colors.white, fontSize: 12.sp),
                ),
                Text(
                  model?.des ?? '',
                  maxLines: 1,
                  style: TextStyle(color: Colors.white, fontSize: 12.sp),
                )
              ],
            ),
          )
        ],
      ),
    );
  }
}