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( listener: (context, state) { if (state is CheckCodeResultState) { final bloc = BlocProvider.of(context); bloc.exchangeSuccess = state.result; showDialog( context: context, barrierDismissible: !state.result, builder: (context) { return ExChangeResultDialog( resultType: state.result, onTap: () { popPage(data: {'exchange': bloc.exchangeSuccess}); }); }); } }, child: _exchangeLessonPageView(), ); } Widget _exchangeLessonPageView() => BlocBuilder( builder: (context, state) { final bloc = BlocProvider.of(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}); }, ), ), ], )); }); }