view.dart 6.36 KB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:wow_english/common/core/app_config_helper.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/pages/moduleSelect/state.dart';
import 'package:wow_english/pages/moduleSelect/widgets/BaseHomeHeaderWidget.dart';
import 'package:wow_english/pages/user/bloc/user_bloc.dart';

import '../../common/core/user_util.dart';
import '../../common/dialogs/show_dialog.dart';
import 'bloc.dart';
import 'event.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/route/route.dart';

class ModuleSelectPage extends StatelessWidget {
  const ModuleSelectPage({super.key});

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (BuildContext context) => ModuleSelectBloc()..add(InitEvent()),
      child: Builder(builder: (context) => _HomePageView()),
    );
  }
}

class _HomePageView extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MultiBlocListener(listeners: [
      BlocListener<UserBloc, UserState>(listener: (context, state) {
        debugPrint('WQF ModuleSelectPage BlocListener state: $state');
      }),
      BlocListener<ModuleSelectBloc, ModuleSelectState>(
        listener: (context, state) {},
      ),
    ], child: _homeView());
  }

  Widget _homeView() => BlocBuilder<ModuleSelectBloc, ModuleSelectState>(
          builder: (context, state) {
        return Scaffold(
          body: Container(
            color: Colors.white,
            child: Column(
              children: [
                const BaseHomeHeaderWidget(),
                Expanded(
                  child: Center(
                    child: Row(
                      children: [
                        Expanded(
                          child: GestureDetector(
                            onTap: () {
                              if (UserUtil.isLogined()) {
                                pushNamed(AppRouteName.home);
                              } else {
                                pushNamed(AppRouteName.login);
                              }
                            },
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: [
                                Stack(
                                    alignment: AlignmentDirectional.center,
                                    children: [
                                      Image.asset('bg_frame_module'.assetPng,
                                          width: 162.5.w, height: 203.5.h),
                                      Center(
                                        child: Image.asset(
                                            'pic_module_study'.assetPng,
                                            width: 140.5.w,
                                            height: 172.h),
                                      )
                                    ]),
                                10.verticalSpace,
                                Image.asset('label_module_study'.assetPng,
                                    width: 124.w, height: 34.h),
                              ],
                            ),
                          ),
                        ),
                        Expanded(
                          child: BlocBuilder<UserBloc, UserState>(
                              builder: (context, userState) {
                            final userBloc = BlocProvider.of<UserBloc>(context);
                            debugPrint(
                                'WQF ModuleSelectPage BlocBuilder state: $userState');
                            return GestureDetector(
                                onTap: () {
                                  //如果没登录先登录
                                  if (UserUtil.isLogined()) {
                                    if (AppConfigHelper.shouldHidePay()) {
                                      pushNamed(AppRouteName.games);
                                    } else {
                                      if (UserUtil.hasGamePermission()) {
                                        pushNamed(AppRouteName.games);
                                      } else {
                                        showTwoActionDialog('提示', '忽略', '去续费',
                                            '您的课程已到期,请快快续费继续学习吧!', leftTap: () {
                                          popPage();
                                        }, rightTap: () {
                                          popPage();
                                          pushNamed(AppRouteName.shop);
                                        });
                                      }
                                    }
                                  } else {
                                    pushNamed(AppRouteName.login);
                                  }
                                },
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: [
                                    Stack(
                                        alignment: AlignmentDirectional.center,
                                        children: [
                                          Image.asset(
                                              'bg_frame_module'.assetPng,
                                              width: 162.5.w,
                                              height: 203.5.h),
                                          Image.asset(
                                              'pic_module_game'.assetPng,
                                              width: 140.5.w,
                                              height: 172.h)
                                        ]),
                                    10.verticalSpace,
                                    Image.asset('label_module_game'.assetPng,
                                        width: 124.w, height: 34.h),
                                  ],
                                ));
                          }),
                        ),
                      ],
                    ),
                  ),
                )
              ],
            ),
          ),
        );
      });
}