Commit da2bb64cbeb76eb9b84a45b317d2825e214b45ed
1 parent
8d581dd2
fix: 修复兑换失败提示未展示后端信息
Showing
4 changed files
with
16 additions
and
5 deletions
lib/pages/shop/exchane/bloc/exchange_lesson_bloc.dart
| 1 | import 'package:flutter/cupertino.dart'; | 1 | import 'package:flutter/cupertino.dart'; |
| 2 | import 'package:flutter_bloc/flutter_bloc.dart'; | 2 | import 'package:flutter_bloc/flutter_bloc.dart'; |
| 3 | import 'package:wow_english/common/request/dao/user_dao.dart'; | 3 | import 'package:wow_english/common/request/dao/user_dao.dart'; |
| 4 | +import 'package:wow_english/common/request/exception.dart'; | ||
| 4 | import 'package:wow_english/utils/loading.dart'; | 5 | import 'package:wow_english/utils/loading.dart'; |
| 5 | 6 | ||
| 6 | import 'package:wow_english/common/core/user_util.dart'; | 7 | import 'package:wow_english/common/core/user_util.dart'; |
| @@ -57,7 +58,8 @@ class ExchangeLessonBloc | @@ -57,7 +58,8 @@ class ExchangeLessonBloc | ||
| 57 | }); | 58 | }); |
| 58 | } catch (e) { | 59 | } catch (e) { |
| 59 | exchangeSuccess = false; | 60 | exchangeSuccess = false; |
| 60 | - emitter(CheckCodeResultState(false)); | 61 | + final message = e is ApiException ? e.message : null; |
| 62 | + emitter(CheckCodeResultState(false, message: message)); | ||
| 61 | } | 63 | } |
| 62 | } | 64 | } |
| 63 | } | 65 | } |
lib/pages/shop/exchane/bloc/exchange_lesson_state.dart
| @@ -9,5 +9,6 @@ class CheckCodeTypeChangeState extends ExchangeLessonState {} | @@ -9,5 +9,6 @@ class CheckCodeTypeChangeState extends ExchangeLessonState {} | ||
| 9 | //验证兑换码结果 | 9 | //验证兑换码结果 |
| 10 | class CheckCodeResultState extends ExchangeLessonState { | 10 | class CheckCodeResultState extends ExchangeLessonState { |
| 11 | final bool result; | 11 | final bool result; |
| 12 | - CheckCodeResultState(this.result); | 12 | + final String? message; |
| 13 | + CheckCodeResultState(this.result, {this.message}); | ||
| 13 | } | 14 | } |
lib/pages/shop/exchane/exchange_lesson_page.dart
| @@ -3,7 +3,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; | @@ -3,7 +3,6 @@ import 'package:flutter_bloc/flutter_bloc.dart'; | ||
| 3 | import 'package:flutter_screenutil/flutter_screenutil.dart'; | 3 | import 'package:flutter_screenutil/flutter_screenutil.dart'; |
| 4 | import 'package:wow_english/common/extension/string_extension.dart'; | 4 | import 'package:wow_english/common/extension/string_extension.dart'; |
| 5 | import 'package:wow_english/common/widgets/textfield_customer_widget.dart'; | 5 | import 'package:wow_english/common/widgets/textfield_customer_widget.dart'; |
| 6 | -import 'package:wow_english/pages/home/event.dart'; | ||
| 7 | import 'package:wow_english/pages/shop/exchane/widegts/exchange_result_dialog.dart'; | 6 | import 'package:wow_english/pages/shop/exchane/widegts/exchange_result_dialog.dart'; |
| 8 | import 'package:wow_english/route/route.dart'; | 7 | import 'package:wow_english/route/route.dart'; |
| 9 | 8 | ||
| @@ -36,6 +35,7 @@ class _ExchangeLessonPage extends StatelessWidget { | @@ -36,6 +35,7 @@ class _ExchangeLessonPage extends StatelessWidget { | ||
| 36 | builder: (context) { | 35 | builder: (context) { |
| 37 | return ExChangeResultDialog( | 36 | return ExChangeResultDialog( |
| 38 | resultType: state.result, | 37 | resultType: state.result, |
| 38 | + message: state.message, | ||
| 39 | onTap: () { | 39 | onTap: () { |
| 40 | popPage(data: {'exchange': bloc.exchangeSuccess}); | 40 | popPage(data: {'exchange': bloc.exchangeSuccess}); |
| 41 | }); | 41 | }); |
lib/pages/shop/exchane/widegts/exchange_result_dialog.dart
| @@ -3,9 +3,15 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | @@ -3,9 +3,15 @@ import 'package:flutter_screenutil/flutter_screenutil.dart'; | ||
| 3 | import 'package:wow_english/common/extension/string_extension.dart'; | 3 | import 'package:wow_english/common/extension/string_extension.dart'; |
| 4 | 4 | ||
| 5 | class ExChangeResultDialog extends Dialog { | 5 | class ExChangeResultDialog extends Dialog { |
| 6 | - const ExChangeResultDialog({super.key,required this.resultType,required this.onTap}); | 6 | + const ExChangeResultDialog({ |
| 7 | + super.key, | ||
| 8 | + required this.resultType, | ||
| 9 | + required this.onTap, | ||
| 10 | + this.message, | ||
| 11 | + }); | ||
| 7 | final bool resultType; | 12 | final bool resultType; |
| 8 | final Function() onTap; | 13 | final Function() onTap; |
| 14 | + final String? message; | ||
| 9 | @override | 15 | @override |
| 10 | Widget build(BuildContext context) { | 16 | Widget build(BuildContext context) { |
| 11 | super.build(context); | 17 | super.build(context); |
| @@ -70,6 +76,8 @@ class ExChangeResultDialog extends Dialog { | @@ -70,6 +76,8 @@ class ExChangeResultDialog extends Dialog { | ||
| 70 | } | 76 | } |
| 71 | 77 | ||
| 72 | Widget _failWidget() { | 78 | Widget _failWidget() { |
| 79 | + final failMessage = | ||
| 80 | + message?.isNotEmpty == true ? message! : '兑换失败,请查看兑换码是否正确或兑换码是否在有效期内'; | ||
| 73 | return Column( | 81 | return Column( |
| 74 | mainAxisAlignment: MainAxisAlignment.spaceAround, | 82 | mainAxisAlignment: MainAxisAlignment.spaceAround, |
| 75 | children: [ | 83 | children: [ |
| @@ -79,7 +87,7 @@ class ExChangeResultDialog extends Dialog { | @@ -79,7 +87,7 @@ class ExChangeResultDialog extends Dialog { | ||
| 79 | width: 75.w, | 87 | width: 75.w, |
| 80 | ), | 88 | ), |
| 81 | Text( | 89 | Text( |
| 82 | - '兑换失败,请查看兑换码是否正确或兑换码是否在有效期内', | 90 | + failMessage, |
| 83 | textAlign: TextAlign.center, | 91 | textAlign: TextAlign.center, |
| 84 | style: TextStyle( | 92 | style: TextStyle( |
| 85 | color: const Color(0xFF333333), | 93 | color: const Color(0xFF333333), |