Houshan-Basa/lib/ui/screens/auth/code/gift_code_screen.dart

126 lines
4.9 KiB
Dart

// ignore_for_file: use_build_context_synchronously
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:go_router/go_router.dart';
import 'package:hoshan/core/routes/route_generator.dart';
import 'package:hoshan/data/model/home_args.dart';
import 'package:hoshan/ui/screens/auth/code/bloc/check_code_bloc.dart';
import 'package:hoshan/ui/screens/splash/cubit/user_info_cubit.dart';
import 'package:hoshan/ui/theme/colors.dart';
import 'package:hoshan/ui/theme/text.dart';
import 'package:hoshan/ui/widgets/components/button/loading_button.dart';
import 'package:hoshan/ui/widgets/components/dropdown/hint_tooltip.dart';
import 'package:hoshan/ui/widgets/components/text/auth_text_field.dart';
class GiftCodeScreen extends StatefulWidget {
const GiftCodeScreen({super.key});
@override
State<GiftCodeScreen> createState() => _GiftCodeScreenState();
}
class _GiftCodeScreenState extends State<GiftCodeScreen> {
final TextEditingController textEditingController = TextEditingController();
@override
Widget build(BuildContext context) {
return BlocConsumer<CheckCodeBloc, CheckCodeState>(
listener: (context, state) async {
if (state is CheckCodeSucceess) {
await context.read<UserInfoCubit>().getUserInfo();
context.go(Routes.giftCredit,
extra: HomeArgs(message: state.message, freeCredit: 50));
}
},
builder: (context, state) {
return Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const HintTooltip(
hint:
'کد معرف هوشان یک کد یکتا است که در صورت به اشتراک‌گذاری این اپلیکیشن توسط دوستانتان با شما، از طریق پیامک برایتان ارسال می‌شود.'),
const SizedBox(
width: 4,
),
Text(
'آیا کد معرف دارید؟ اگر کد معرف دارید، وارد کنید.',
textDirection: TextDirection.rtl,
style: AppTextStyles.body5
.copyWith(color: Theme.of(context).colorScheme.onSurface),
),
],
),
const SizedBox(
height: 12,
),
Padding(
padding: const EdgeInsets.all(16.0),
child: AuthTextField(
controller: textEditingController,
label: 'کد معرف',
enabled: state is! CheckCodeLoading,
error: state is CheckCodeFail
? Text(
state.error,
style: AppTextStyles.body5
.copyWith(color: AppColors.red.defaultShade),
)
: null,
),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16.0),
child: Column(
children: [
LoadingButton(
width: MediaQuery.sizeOf(context).width,
height: 48,
radius: 360,
loading: state is CheckCodeLoading,
color: Theme.of(context).colorScheme.primary,
onPressed: () {
if (textEditingController.text.isEmpty ||
state is CheckCodeLoading) {
return;
}
context.read<CheckCodeBloc>().add(
VerifyGiftCode(code: textEditingController.text));
},
child: Text(
'تایید',
style: AppTextStyles.body4.copyWith(color: Colors.white),
),
),
const SizedBox(
height: 12,
),
LoadingButton(
width: MediaQuery.sizeOf(context).width,
height: 48,
radius: 360,
isOutlined: true,
color: Theme.of(context).colorScheme.primary,
onPressed: () async {
if (state is CheckCodeLoading) return;
await context.read<UserInfoCubit>().getUserInfo();
context.go(Routes.giftCredit,
extra: HomeArgs(freeCredit: 50));
},
child: Text(
'ورود به اپلیکیشن',
style: AppTextStyles.body4.copyWith(
color: Theme.of(context).colorScheme.primary),
),
),
],
),
)
],
);
},
);
}
}