home_tab_header_widget.dart 4.38 KB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/core/user_util.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/pages/user/bloc/user_bloc.dart';
import 'package:wow_english/utils/image_util.dart';

import '../../../models/course_entity.dart';
import '../courese_module_model.dart';

enum HeaderActionType {
  //视频跟读
  video,
  //阶段选择
  phase,
  //磨耳朵
  listen,
  //购买
  shop,
  //个人信息
  user
}

class HomeTabHeaderWidget extends StatelessWidget {
  const HomeTabHeaderWidget({super.key,this.entity, this.actionTap});

  final CourseEntity? entity;
  final Function(HeaderActionType type)? actionTap;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<UserBloc,UserState>(
      builder: (context,state) {
        return Container(
            height: 45,
            width: double.infinity,
            color:  CourseModuleModel(entity?.courseModuleCode??'Phase-1').color,
            padding: EdgeInsets.symmetric(horizontal: 9.5.w),
            child: Row(
              children: [
                ScreenUtil().bottomBarHeight.horizontalSpace,
                GestureDetector(
                  onTap: () => actionTap?.call(HeaderActionType.user),
                  child: Container(
                    decoration: BoxDecoration(
                      border: Border.all(
                        width: 1.0,
                        color: const Color(0xFF140C10),
                      ),
                      borderRadius: BorderRadius.circular(21),
                    ),
                    child: CircleAvatar(
                      radius: 21,
                      backgroundImage: ImageUtil.getImageProviderOnDefault(UserUtil.getUser()?.avatarUrl),
                    ),
                  ),
                ),
                GestureDetector(
                  onTap: () {
                    if (actionTap != null) {
                      actionTap!(HeaderActionType.user);
                    }
                  },
                  child: Container(
                    margin: const EdgeInsets.only(left: 7),
                    padding: const EdgeInsets.all(4.0),
                    decoration: BoxDecoration(
                      color: Colors.white,
                      borderRadius: BorderRadius.circular(2),
                      border: Border.all(width: 1.0, color: const Color(0xFF140C10), style: BorderStyle.solid),
                    ),
                    child: Text(
                      UserUtil.getUser()?.name ?? '未登录',
                      style: TextStyle(color: const Color(0xFF333333), fontSize: 16.sp),
                    ),
                  ),
                ),
                20.horizontalSpace,
                Expanded(
                    child: Text(
                      CourseModuleModel(entity?.courseModuleCode??'Phase-1').courseModuleTitle,
                      textAlign: TextAlign.left,
                      style: const TextStyle(color: Colors.white, fontSize: 30.0),
                    )),
                // IconButton(
                //     onPressed: () {
                //       if (actionTap != null) {
                //         actionTap!(HeaderActionType.video);
                //       }
                //     },
                //     icon: Image.asset('video'.assetPng)),
                IconButton(
                    onPressed: () {
                      if (actionTap != null) {
                        actionTap!(HeaderActionType.phase);
                      }
                    },
                    icon: Image.asset('home'.assetPng)),
                IconButton(
                    onPressed: () {
                      if (actionTap != null) {
                        actionTap!(HeaderActionType.listen);
                      }
                    },
                    icon: Image.asset('listen'.assetPng)),
                IconButton(
                    onPressed: (){
                      if(actionTap != null) {
                        actionTap!(HeaderActionType.shop);
                      }
                    },
                    icon: Image.asset('shop'.assetPng)
                ),
                ScreenUtil().bottomBarHeight.horizontalSpace,
              ],
            )
        );
      },
    );
  }
}