You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
144 lines
5.6 KiB
Dart
144 lines
5.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_svg/flutter_svg.dart';
|
|
import 'package:shared_preferences/shared_preferences.dart';
|
|
import 'package:tangheem/api/user_api_client.dart';
|
|
import 'package:tangheem/app_state/app_state.dart';
|
|
import 'package:tangheem/classes/colors.dart';
|
|
import 'package:tangheem/classes/consts.dart';
|
|
import 'package:tangheem/classes/utils.dart';
|
|
import 'package:tangheem/extensions/int_extensions.dart';
|
|
import 'package:tangheem/extensions/string_extensions.dart';
|
|
import 'package:tangheem/extensions/widget_extensions.dart';
|
|
import 'package:tangheem/ui/dialogs/general_dialog.dart';
|
|
import 'package:tangheem/widgets/login_textfield_widget.dart';
|
|
|
|
class ChangePasswordScreen extends StatefulWidget {
|
|
static const String routeName = "/changePassword";
|
|
|
|
ChangePasswordScreen({Key key}) : super(key: key);
|
|
|
|
@override
|
|
_ChangePasswordScreenState createState() {
|
|
return _ChangePasswordScreenState();
|
|
}
|
|
}
|
|
|
|
class _ChangePasswordScreenState extends State<ChangePasswordScreen> {
|
|
final TextEditingController _currentPasswordController = TextEditingController();
|
|
final TextEditingController _passwordController = TextEditingController();
|
|
final TextEditingController _confirmPasswordController = TextEditingController();
|
|
|
|
@override
|
|
void initState() {
|
|
super.initState();
|
|
}
|
|
|
|
@override
|
|
void dispose() {
|
|
super.dispose();
|
|
}
|
|
|
|
void updatePassword(String email, String oldPassword, String password) async {
|
|
Utils.showLoading(context);
|
|
try {
|
|
await UserApiClient().updatePassword(email, oldPassword, password);
|
|
} catch (ex) {
|
|
if (mounted) Utils.handleException(ex, null);
|
|
Utils.hideLoading(context);
|
|
return;
|
|
} finally {
|
|
Utils.hideLoading(context);
|
|
}
|
|
SharedPreferences prefs = await SharedPreferences.getInstance();
|
|
await prefs.remove(GlobalConsts.userAuthData);
|
|
AppState().setAuthenticationModel(null);
|
|
await showDialog(
|
|
context: context,
|
|
barrierColor: Colors.white.withOpacity(0.2),
|
|
builder: (BuildContext context) => GeneralDialog(
|
|
message: "تم تغيير كلمة المرور بنجاح , الرجاء إعادة تسجيل الدخول من خلال الرابط المرسل إلى بريدك الإلكتروني",
|
|
backgroundColor: Color(0xff598A8D),
|
|
),
|
|
);
|
|
Navigator.pop(context);
|
|
}
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return SizedBox(
|
|
width: double.infinity,
|
|
child: Stack(
|
|
alignment: Alignment.topCenter,
|
|
children: [
|
|
Image.asset(
|
|
"assets/icons/new/home_dark.jpg",
|
|
fit: BoxFit.cover,
|
|
height: double.infinity,
|
|
opacity: const AlwaysStoppedAnimation(1),
|
|
),
|
|
Container(color: ColorConsts.darkText.withOpacity(0.8)),
|
|
Column(
|
|
mainAxisSize: MainAxisSize.min,
|
|
children: [
|
|
100.height,
|
|
Image.asset('assets/icons/new/Tangeem-logo-W.png', width: 50),
|
|
100.height,
|
|
Container(
|
|
width: 54,
|
|
height: 54,
|
|
decoration: BoxDecoration(
|
|
shape: BoxShape.circle,
|
|
color: ColorConsts.dark2Text,
|
|
),
|
|
child: SvgPicture.asset(
|
|
"assets/icons/new/user_acount.svg",
|
|
color: Colors.white,
|
|
),
|
|
),
|
|
14.height,
|
|
(AppState().userName ?? "").toText(18),
|
|
50.height,
|
|
"تغيير كلمة المرور".toText(20),
|
|
24.height,
|
|
LoginTextFieldWidget(hint: "كلمة المرور الحالية", controller: _currentPasswordController, iconData: Icons.lock_rounded, isPassword: true, isForChangePassword: true),
|
|
10.height,
|
|
LoginTextFieldWidget(hint: "كلمة المرور الجديدة", controller: _passwordController, iconData: Icons.lock_rounded, isForChangePassword: true),
|
|
10.height,
|
|
LoginTextFieldWidget(hint: "تأكيد كلمة المرور الجديدة", controller: _confirmPasswordController, iconData: Icons.lock_rounded, isPassword: true, isForChangePassword: true),
|
|
16.height,
|
|
Container(
|
|
height: 45,
|
|
// width: 165,
|
|
alignment: Alignment.center,
|
|
decoration: BoxDecoration(
|
|
borderRadius: BorderRadius.circular(32),
|
|
border: Border.all(color: ColorConsts.brownLightColor, width: 2),
|
|
),
|
|
child: "إعادة تعيين كلمة لمرور".toText(13),
|
|
).onPress(() {
|
|
if (_currentPasswordController.text.length < 1) {
|
|
Utils.showToast("يرجى إاخال كلمة المرور");
|
|
return;
|
|
}
|
|
if (_passwordController.text.length < 1) {
|
|
Utils.showToast("يرجى إاخال كلمة المرور");
|
|
return;
|
|
}
|
|
if (_confirmPasswordController.text.length < 1) {
|
|
Utils.showToast("يرجى تأكيد كلمة المرور");
|
|
return;
|
|
}
|
|
if (_passwordController.text != _confirmPasswordController.text) {
|
|
Utils.showToast("خطأ في تطابق كلمات المرور");
|
|
return;
|
|
}
|
|
updatePassword(AppState().userEmail, _currentPasswordController.text, _passwordController.text);
|
|
})
|
|
],
|
|
).paddingOnly(left: 65, right: 65),
|
|
],
|
|
),
|
|
);
|
|
}
|
|
}
|