exchange_lesson_page.dart 4.88 KB
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:wow_english/common/extension/string_extension.dart';
import 'package:wow_english/common/widgets/textfield_customer_widget.dart';
import 'package:wow_english/route/route.dart';

import 'bloc/exchange_lesson_bloc.dart';

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

  @override
  Widget build(BuildContext context) {
    return BlocProvider(
      create: (context) => ExchangeLessonBloc(),
      child: _ExchangeLessonPage(),
    );
  }
}

class _ExchangeLessonPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return BlocListener<ExchangeLessonBloc,ExchangeLessonState>(
      listener: (context, state){
        if (state is CheckCodeResultState) {
          String title = state.result?'兑换成功':'兑换失败';
          EasyLoading.showToast(title);
          Navigator.of(context).pushNamed(AppRouteName.exList);
        }
      },
      child: _exchangeLessonPageView(),
    );
  }

  Widget _exchangeLessonPageView() => BlocBuilder<ExchangeLessonBloc,ExchangeLessonState>(
      builder: (context, state){
        final bloc = BlocProvider.of<ExchangeLessonBloc>(context);
        return Scaffold(
          resizeToAvoidBottomInset: false,
          body: Container(
            color: Colors.white,
            child: Column(
              mainAxisAlignment: MainAxisAlignment.center,
              children: [
                10.5.verticalSpace,
                Padding(
                  padding: EdgeInsets.symmetric(
                    horizontal: 15.w
                  ),
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      IconButton(
                        icon: Image.asset(
                          'back_around'.assetPng,
                          width: 40,
                          height: 40,
                        ),
                        color: Colors.white,
                        onPressed: () {
                         Navigator.pop(context);
                        },
                      ),
                      Image.asset(
                        'wow_ex_lesson'.assetPng,
                        width: 139.w,
                        height: 81.h,
                      ),
                      SizedBox.fromSize(
                        size: const Size(40.0, 40.0)
                      )
                    ],
                  ),
                ),
                Expanded(
                  child: Padding(
                    padding: EdgeInsets.symmetric(horizontal: 135.w),
                    child: Column(
                      mainAxisAlignment: MainAxisAlignment.center,
                      children: [
                        TextFieldCustomerWidget(
                          height: 55.h,
                          hitText: '请输入兑换码',
                          bgImageName: 'Input_layer_up',
                          textInputType: TextInputType.emailAddress,
                          controller: bloc.codeNumberController,
                          onChangeValue: (String value) {
                            bloc.add(CodeNumberChangeEvent());
                          },
                        ),
                        21.5.verticalSpace,
                        GestureDetector(
                          onTap: () {
                            if (bloc.checkCode) {
                              bloc.add(CheckCodeEvent());
                            }
                          },
                          child: Container(
                            decoration: BoxDecoration(
                              image: DecorationImage(
                                  image: AssetImage(
                                      bloc.checkCode ? 'ex_sure'.assetPng:'ex_dis'.assetPng
                                  ),
                                  fit: BoxFit.fill
                              ),
                            ),
                            padding: EdgeInsets.symmetric(horizontal:27.w,vertical: 14.h),
                            child: Text(
                              '兑换',
                              style: TextStyle(
                                fontSize: 16.sp,
                                color: Colors.white
                              ),
                            ),
                          ),
                        )
                      ],
                    ),
                  ),
                ),
                Image.asset(
                  'bottom_grass'.assetPng,
                ),
              ],
            ),
          ),
        );
      });
}