exchange_lesson_page.dart 5.36 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/extension/string_extension.dart';
import 'package:wow_english/common/widgets/textfield_customer_widget.dart';
import 'package:wow_english/pages/home/event.dart';
import 'package:wow_english/pages/shop/exchane/widegts/exchange_result_dialog.dart';
import 'package:wow_english/route/route.dart';

import '../../../common/widgets/we_app_bar.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) {
          final bloc = BlocProvider.of<ExchangeLessonBloc>(context);
          bloc.exchangeSuccess = state.result;
          showDialog<ExChangeResultDialog>(
              context: context,
              barrierDismissible: !state.result,
              builder: (context) {
                return ExChangeResultDialog(
                    resultType: state.result,
                    onTap: () {
                      popPage(data: {'exchange': bloc.exchangeSuccess});
                    });
              });
        }
      },
      child: _exchangeLessonPageView(),
    );
  }

  Widget _exchangeLessonPageView() =>
      BlocBuilder<ExchangeLessonBloc, ExchangeLessonState>(
          builder: (context, state) {
        final bloc = BlocProvider.of<ExchangeLessonBloc>(context);
        return Scaffold(
            resizeToAvoidBottomInset: false,
            body: Stack(
              children: [
                Container(
                  color: Colors.white,
                  child: Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      10.5.verticalSpace,
                      Padding(
                        padding: EdgeInsets.symmetric(horizontal: 15.w),
                        child: Center(
                          child: Image.asset(
                            'wow_ex_lesson'.assetPng,
                            width: 139.w,
                            height: 81.h,
                          ),
                        ),
                      ),
                      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,
                      ),
                    ],
                  ),
                ),
                Positioned(
                  top: 0,
                  left: 0,
                  right: 0,
                  child: WEAppBar(
                    backgroundColor: Colors.transparent,
                    onBack: () {
                      popPage(data: {'exchange': bloc.exchangeSuccess});
                    },
                  ),
                ),
              ],
            ));
      });
}