BaseHomeHeaderWidget.dart 4.12 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/app_config_helper.dart';
import 'package:wow_english/common/extension/string_extension.dart';

import '../../../common/core/user_util.dart';
import '../../../models/course_entity.dart';
import '../../../route/route.dart';
import '../../../utils/image_util.dart';
import '../../user/bloc/user_bloc.dart';

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

  final CourseEntity? entity;

  @override
  Widget build(BuildContext context) {
    return BlocBuilder<UserBloc, UserState>(
      builder: (context, state) {
        return Container(
            height: 45,
            width: double.infinity,
            decoration: BoxDecoration(
              image: DecorationImage(
                image: AssetImage('bg_header_sliver'.assetPng),
                fit: BoxFit.cover,
              ),
            ),
            padding: EdgeInsets.symmetric(horizontal: 9.5.w),
            child: Row(
              children: [
                ScreenUtil().bottomBarHeight.horizontalSpace,
                GestureDetector(
                  onTap: () => {onUserClick()},
                  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: () {
                    onUserClick();
                  },
                  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,
                const Expanded(
                    child: Text(
                  "WOW ENGLISH",
                  textAlign: TextAlign.left,
                  style: TextStyle(color: Colors.white, fontSize: 30.0),
                )),
                Offstage(
                    offstage: AppConfigHelper.shouldHidePay() ||
                        !UserUtil.isLogined(),
                    child: GestureDetector(
                      onTap: () => {
                        pushNamed(AppRouteName.shop),
                      },
                      child: Row(
                          children: <Widget>[
                        Image(
                            width: 20.0.w,
                            height: 20.0.h,
                            image: AssetImage('ic_countdown'.assetPng)),
                        // 替换为你的图片资源路径
                        const SizedBox(width: 6.0),
                        // 图片和文本之间的间隔
                        Text('还剩${UserUtil.getRemainingValidity()}天'),
                      ]),
                    )),
                ScreenUtil().bottomBarHeight.horizontalSpace,
              ],
            ));
      },
    );
  }
}

void onUserClick() {
  if (UserUtil.isLogined()) {
    pushNamed(AppRouteName.user);
  } else {
    pushNamed(AppRouteName.login);
  }
}