import 'package:didvan/config/theme_data.dart'; import 'package:didvan/constants/app_icons.dart'; import 'package:didvan/models/view/action_sheet_data.dart'; import 'package:didvan/providers/server_data.dart'; import 'package:didvan/providers/user.dart'; import 'package:didvan/routes/routes.dart'; import 'package:didvan/utils/action_sheet.dart'; import 'package:didvan/views/authentication/authentication_state.dart'; import 'package:didvan/views/authentication/widgets/authentication_layout.dart'; import 'package:didvan/views/widgets/didvan/button.dart'; import 'package:didvan/views/widgets/didvan/text.dart'; import 'package:didvan/views/widgets/didvan/text_field.dart'; import 'package:didvan/views/widgets/ink_wrapper.dart'; import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; class PasswordInput extends StatefulWidget { const PasswordInput({Key? key}) : super(key: key); @override State createState() => _PasswordInputState(); } class _PasswordInputState extends State { final _formKey = GlobalKey(); @override Widget build(BuildContext context) { final AuthenticationState state = context.read(); return AuthenticationLayout( appBarTitle: 'ورود با ${state.username.contains('09') ? 'شماره موبایل' : 'نام کاربری'} ${state.username}', children: [ Form( key: _formKey, child: DidvanTextField( onChanged: (value) => state.password = value, onSubmitted: (value) => _onLogin(context), autoFocus: true, title: 'کلمه عبور', hintText: 'کلمه عبور', obsecureText: true, validator: (value) => value.length < 8 ? 'کلمه عبور نمی‌تواند از 8 کاراکتر کمتر باشد' : null, ), ), const SizedBox( height: 32, ), GestureDetector( onTap: () => state.currentPageIndex++, child: DidvanText( 'فراموشی رمز عبور', style: Theme.of(context).textTheme.titleSmall, color: Theme.of(context).colorScheme.primary, ), ), const Spacer(), DidvanButton( onPressed: () => _onLogin(context), title: 'ورود', ), const SizedBox( height: 48, ), ], ); } Future _onLogin(BuildContext context) async { if (!_formKey.currentState!.validate()) { return; } final state = context.read(); final userProvider = context.read(); final token = await state.login(userProvider); if (token != null) { await ServerDataProvider.getData(); if (mounted) { Future.delayed(Duration.zero, () => Navigator.of(context).pushReplacementNamed(Routes.home)); } _showResetPasswordDialog(); } } void _showResetPasswordDialog() { ActionSheetUtils.openDialog( data: ActionSheetData( content: const DidvanText( 'خوش آمدید!\nبرای امنیت بیشتر، رمز عبور خود را تغییر دهید.', ), onConfirmed: () => Navigator.of(ActionSheetUtils.context).pushNamed( Routes.authenticaion, arguments: true, ), isBackgroundDropBlur: false, confrimTitle: 'تغییر رمز عبور', onDismissed: Navigator.of(ActionSheetUtils.context).pop, dismissTitle: 'بعدا', ), ); _showCustomizeDialog(); } void _showCustomizeDialog() { ActionSheetUtils.openDialog( data: ActionSheetData( backgroundColor: Theme.of(context).colorScheme.background, isBackgroundDropBlur: true, content: Column( children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ InkWrapper( onPressed: Navigator.of(ActionSheetUtils.context).pop, child: const Icon( DidvanIcons.close_solid, size: 24, ), ), DidvanText( 'شخصی سازی محتوا', style: Theme.of(context).textTheme.displaySmall, color: Theme.of(context).colorScheme.text, ), const InkWrapper( child: Icon( DidvanIcons.close_regular, size: 24, color: Colors.transparent, ), ), ], ), const SizedBox( height: 12, ), const DidvanText( "کاربر گرامی\nلطفا جهت شخصی‌سازی و استفاده بهتر از برنامه، دسته‌بندی‌های مورد علاقه خود و زمان دریافت اعلانات را انتخاب نمایید.") ], ), hasDismissButton: false, onConfirmed: () => Navigator.of(ActionSheetUtils.context).pushNamed( Routes.favouritesStep, arguments: {"toTimer": true}, ), confrimTitle: 'تایید', ), ); } }