import 'dart:developer'; import 'package:didvan/providers/server_data_provider.dart'; import 'package:didvan/providers/user_provider.dart'; import 'package:didvan/routes/routes.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: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.subtitle2, 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) { log(token); await ServerDataProvider.getData(); Navigator.of(context).pushReplacementNamed(Routes.home); } } }