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( 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( builder: (context, state){ final bloc = BlocProvider.of(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, ), ], ), ), ); }); }