privacy policy check added.

design_3.0_latest
Sikander Saleem 8 months ago
parent 880f1eb1f0
commit 0a06ad9fe3

@ -1,143 +1,4 @@
//older code...
// import 'package:flutter/material.dart';
// import 'package:fluttertoast/fluttertoast.dart';
// import 'package:provider/provider.dart';
// import 'package:shared_preferences/shared_preferences.dart';
// import 'package:test_sa/controllers/providers/settings/app_settings.dart';
// import 'package:test_sa/extensions/context_extension.dart';
// import 'package:test_sa/extensions/int_extensions.dart';
// import 'package:test_sa/extensions/text_extensions.dart';
// import 'package:test_sa/extensions/widget_extensions.dart';
// import 'package:test_sa/new_views/app_style/app_color.dart';
// import 'package:test_sa/new_views/pages/land_page/land_page.dart';
//
// import '../../controllers/providers/api/user_provider.dart';
// import '../../controllers/providers/settings/setting_provider.dart';
// import '../../controllers/validator/validator.dart';
// import '../../models/user.dart';
// import '../common_widgets/app_filled_button.dart';
// import '../common_widgets/app_text_form_field.dart';
//
// class LoginPage extends StatefulWidget {
// static const String routeName = "/login_page";
//
// const LoginPage({Key? key}) : super(key: key);
//
// @override
// State<LoginPage> createState() => _LoginPageState();
// }
//
// class _LoginPageState extends State<LoginPage> {
// final User _user = User();
// UserProvider _userProvider;
// SettingProvider _settingProvider;
// final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
//
// bool rememberMe = false;
//
// @override
// Widget build(BuildContext context) {
// _userProvider = Provider.of<UserProvider>(context);
// if (_settingProvider == null) {
// _settingProvider = Provider.of<SettingProvider>(context);
// rememberMe = _settingProvider.rememberMe;
// if (rememberMe) {
// _user.userName = _settingProvider.username;
// _user.password = _settingProvider.password;
// }
// }
//
// return Form(
// key: _formKey,
// child: Scaffold(
// body: Column(
// children: [
// SingleChildScrollView(
// child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
// crossAxisAlignment: CrossAxisAlignment.start,
// children: [
// Hero(tag: "logo", child: "logo".toSvgAsset(height: 64)),
// 64.height,
// context.translation.login.heading2(context).custom(fontWeight: FontWeight.w600, color: context.isDark ? AppColor.primary50 : AppColor.neutral50),
// context.translation.enterCredsToLogin.heading6(context).custom(color: context.isDark ? AppColor.neutral10 : AppColor.neutral20),
// 32.height,
// AppTextFormField(
// initialValue: _user?.userName,
// validator: (value) => Validator.hasValue(value) ? null : context.translation.requiredField,
// labelText: context.translation.username,
// textInputType: TextInputType.text,
// onSaved: (value) {
// _user.userName = value;
// },
// ),
// 16.height,
// AppTextFormField(
// initialValue: _user?.password,
// labelText: context.translation.password,
// obscureText: true,
// validator: (value) => Validator.isValidPassword(value)
// ? null
// : value.isEmpty
// ? context.translation.requiredField
// : context.translation.passwordLengthMessage,
// onSaved: (value) {
// _user.password = value;
// },
// ),
// 8.height,
// Row(
// children: [
// Checkbox(
// value: rememberMe,
// activeColor: AppColor.blueStatus(context),
// onChanged: (value) {
// setState(() {
// rememberMe = value;
// });
// }),
// "Remember Me".bodyText(context).custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral50).expanded,
// ],
// ),
// 16.height,
// Align(
// alignment: AlignmentDirectional.centerEnd,
// child: InkWell(
// onTap: () {
// /// TODO [zaid] : push to another screen
// },
// child: context.translation.forgotPassword.bodyText(context).custom(color: AppColor.primary50, fontWeight: FontWeight.w500),
// ),
// ),
// ],
// ),
// ).center.expanded,
// AppFilledButton(label: context.translation.login, maxWidth: true, onPressed: _login),
// ],
// ).paddingOnly(start: 16, end: 16, bottom: 24, top: 24),
// ),
// );
// }
//
// Future<void> _login() async {
// if (!_formKey.currentState.validate()) return;
// _formKey.currentState.save();
// int status = await _userProvider.login(context: context, user: _user);
// if (status >= 200 && status < 300 && _userProvider.user.isAuthenticated ?? false) {
// await _settingProvider.setUser(_userProvider.user);
// (await SharedPreferences.getInstance()).remove(ASettings.localAuth);
// await _settingProvider.setRememberMe(_user.userName, _user.password, rememberMe);
//
// /// The below line for the new design
// // Navigator.pushNamed(context, LandPage.routeName);
// Navigator.pushNamed(context, LandPage.routeName);
// } else {
// Fluttertoast.showToast(msg: _userProvider.user?.message ?? context.translation.failedToCompleteRequest);
// }
// }
// }
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:fluttertoast/fluttertoast.dart';
import 'package:provider/provider.dart';
@ -147,12 +8,14 @@ import 'package:test_sa/controllers/notification/firebase_notification_manger.da
import 'package:test_sa/controllers/providers/settings/app_settings.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/new_models/general_response_model.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/forget_password_module/forget_passwod_verify_otp.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart';
import 'package:url_launcher/url_launcher.dart';
import '../../controllers/providers/api/user_provider.dart';
import '../../controllers/providers/settings/setting_provider.dart';
@ -178,6 +41,7 @@ class _LoginPageState extends State<LoginPage> {
TextEditingController userNameController = TextEditingController();
bool _passwordVisible = false;
bool rememberMe = false;
bool privacyPolicyChecked = false;
@override
void initState() {
@ -228,7 +92,6 @@ class _LoginPageState extends State<LoginPage> {
context.translation.signInToYour.customHeadingText(context).custom(color: Colors.white, fontSize: 27, fontWeight: FontWeight.w500),
context.translation.account.customHeadingText(context).custom(color: Colors.white, fontSize: 27, fontWeight: FontWeight.w500),
15.height,
// context.translation.letSignInToAccount.customHeadingText(context).custom(color: Colors.white, fontWeight: FontWeight.w500, fontSize: 12),
],
),
),
@ -320,7 +183,35 @@ class _LoginPageState extends State<LoginPage> {
"Remember Me".bodyText(context).custom(color: context.isDark ? AppColor.primary50 : AppColor.neutral50).expanded,
],
),
50.height,
Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Checkbox(
value: privacyPolicyChecked,
activeColor: AppColor.blueStatus(context),
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
onChanged: (value) {
if (value == null) return;
privacyPolicyChecked = value;
setState(() {});
}),
RichText(
text: TextSpan(text: "I have read and agree to ", style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.primary50 : AppColor.neutral50), children: [
TextSpan(
text: "Privacy Policy",
style: AppTextStyles.bodyText.copyWith(color: AppColor.blueStatus(context), decoration: TextDecoration.underline),
recognizer: TapGestureRecognizer()
..onTap = () async {
Uri uri = Uri.parse("https://cloudsolutions.com.sa/en/privacy-policy");
try {
launchUrl(uri);
} catch (ex) {}
}),
]),
).expanded,
],
),
16.height,
AppFilledButton(label: context.translation.signIn, buttonColor: AppColor.primary10, maxWidth: true, onPressed: _login),
],
),
@ -333,6 +224,11 @@ class _LoginPageState extends State<LoginPage> {
Future<void> _login() async {
if (!_formKey.currentState!.validate()) return;
if (privacyPolicyChecked == false) {
"You must agree privacy policy".showToast;
return;
}
_formKey.currentState!.save();
int status = await _userProvider.login(context: context, user: _user);
if (status >= 200 && status < 300 && _userProvider.user!.isAuthenticated! ?? false) {

Loading…
Cancel
Save