create method card and remove future builder from verification method widget

auth_refactor
Elham Rababah 5 years ago
parent a3caf023e2
commit 3ca4ac3632

@ -337,7 +337,7 @@ const TRANSACTION_NO = 0;
const LANGUAGE_ID = 2;
const STAMP = '2020-04-27T12:17:17.721Z';
const IP_ADDRESS = '9.9.9.9';
const VERSION_ID = 5.9;
const VERSION_ID = 6.0;
const CHANNEL = 9;
const SESSION_ID = 'BlUSkYymTt';
const IS_LOGIN_FOR_DOCTOR_APP = true;

@ -13,6 +13,8 @@ import 'package:doctor_app_flutter/models/auth/activation_Code_req_model.dart';
import 'package:doctor_app_flutter/models/auth/activation_code_for_verification_screen_model.dart';
import 'package:doctor_app_flutter/models/auth/check_activation_code_request_model.dart';
import 'package:doctor_app_flutter/models/doctor/user_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:intl/intl.dart';
class AuthenticationViewModel extends BaseViewModel {
AuthenticationService _authService = locator<AuthenticationService>();
@ -25,6 +27,8 @@ class AuthenticationViewModel extends BaseViewModel {
get activationCodeForDoctorAppRes => _authService.activationCodeForDoctorAppRes;
get checkActivationCodeForDoctorAppRes => _authService.checkActivationCodeForDoctorAppRes;
var loggedUser;
GetIMEIDetailsModel user;
Future selectDeviceImei(imei) async {
setState(ViewState.Busy);
await _authService.selectDeviceImei(imei);
@ -127,4 +131,56 @@ class AuthenticationViewModel extends BaseViewModel {
} else
setState(ViewState.Idle);
}
getDate(DateTime date) {
final DateFormat formatter = DateFormat('dd MMM yyyy');
return formatter.format(date);
}
getTime(DateTime date) {
final DateFormat formatter = DateFormat('HH:mm a');
return formatter.format(date);
}
getType(type, context) {
switch (type) {
case 1:
return TranslationBase
.of(context)
.verifySMS;
break;
case 3:
return TranslationBase
.of(context)
.verifyFingerprint;
break;
case 4:
return TranslationBase
.of(context)
.verifyFaceID;
break;
case 2:
return TranslationBase.of(context).verifyWhatsApp;
break;
default:
return TranslationBase.of(context).verifySMS;
break;
}
}
getInitUserInfo()async{
setState(ViewState.Busy);
loggedUser = await sharedPref.getObj(LOGGED_IN_USER);
var lastLogin = await sharedPref.getObj(LAST_LOGIN_USER);
if (lastLogin != null) {
user = GetIMEIDetailsModel.fromJson(lastLogin);
}
setState(ViewState.Idle);
}
}

@ -28,29 +28,15 @@ class _VerificationMethodsScreenState extends State<VerificationMethodsScreen> {
@override
Widget build(BuildContext context) {
return BaseView<AuthenticationViewModel>(
onModelReady: (model) async {},
builder: (_, model, w) => AppScaffold(
isLoading: _isLoading,
isShowAppBar: false,
isHomeIcon: false,
backgroundColor: HexColor('#F8F8F8'),
body: ListView(children: <Widget>[
Container(
margin: EdgeInsetsDirectional.fromSTEB(30, 0, 30, 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
SizedBox(
height: 50,
),
VerificationMethods(
password: widget.password,
changeLoadingState: changeLoadingState,
model:model
),
],
),
),
])));
body:VerificationMethods(
password: widget.password,
changeLoadingState: changeLoadingState,
// model:model
)));
}
}

@ -0,0 +1,242 @@
import 'package:doctor_app_flutter/core/enum/auth_method_types.dart';
import 'package:doctor_app_flutter/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:local_auth/local_auth.dart';
import 'package:provider/provider.dart';
class MethodCard extends StatefulWidget {
final AuthMethodTypes authMethodType;
final Function ( AuthMethodTypes type, bool isActive) authenticateUser;
final Function onShowMore;
const MethodCard({Key key, this.authMethodType, this.authenticateUser, this.onShowMore}) : super(key: key);
@override
_MethodCardState createState() => _MethodCardState();
}
class _MethodCardState extends State<MethodCard> {
var _availableBiometrics;
final LocalAuthentication auth = LocalAuthentication();
ProjectViewModel projectsProvider;
@override
void initState() {
super.initState();
_getAvailableBiometrics();
}
bool checkIfBiometricAvailable(BiometricType biometricType) {
bool isAvailable = false;
if (_availableBiometrics != null) {
for (var i = 0; i < _availableBiometrics.length; i++) {
if (biometricType == _availableBiometrics[i]) isAvailable = true;
}
}
return isAvailable;
}
Future<void> _getAvailableBiometrics() async {
var availableBiometrics;
try {
availableBiometrics = await auth.getAvailableBiometrics();
} on PlatformException catch (e) {
print(e);
}
if (!mounted) return;
setState(() {
_availableBiometrics = availableBiometrics;
});
}
@override
Widget build(BuildContext context) {
projectsProvider = Provider.of<ProjectViewModel>(context);
switch (widget.authMethodType) {
case AuthMethodTypes.WhatsApp:
return InkWell(
onTap: () => {widget.authenticateUser(AuthMethodTypes.WhatsApp, true)},
child: Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 15, 20, 15),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Row(
children: [
Image.asset(
'assets/images/verify-whtsapp.png',
height: 60,
width: 60,
),
],
),
SizedBox(
height: 20,
),
AppText(
TranslationBase.of(context).verifyWhatsApp,
fontSize: 14,
fontWeight: FontWeight.w600,
)
],
),
)));
break;
case AuthMethodTypes.SMS:
return InkWell(
onTap: () => {widget.authenticateUser(AuthMethodTypes.SMS, true)},
child: Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 15, 20, 15),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/verify-sms.png',
height: 60,
width: 60,
),
SizedBox(
height: 20,
),
AppText(
TranslationBase.of(context).verifySMS,
fontSize: 14,
fontWeight: FontWeight.w600,
)
],
),
)));
break;
case AuthMethodTypes.Fingerprint:
return InkWell(
onTap: () => {
if (checkIfBiometricAvailable(BiometricType.fingerprint))
{widget.authenticateUser(AuthMethodTypes.Fingerprint, true)}
},
child: Container(
margin: EdgeInsets.all(10),
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 15, 20, 15),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/verification_fingerprint_icon.png',
height: 60,
width: 60,
),
SizedBox(
height: 20,
),
AppText(
TranslationBase.of(context).verifyFingerprint,
fontSize: 14,
fontWeight: FontWeight.w600,
)
],
),
)));
break;
case AuthMethodTypes.FaceID:
return InkWell(
onTap: () {
if (checkIfBiometricAvailable(BiometricType.face)) {
widget.authenticateUser(AuthMethodTypes.FaceID, true);
}
},
child:
Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
),
margin: EdgeInsets.all(10),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 15, 20, 15),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/verification_faceid_icon.png',
height: 60,
width: 60,
),
SizedBox(
height: 20,
),
AppText(
TranslationBase.of(context).verifyFaceID,
fontSize: 14,
fontWeight: FontWeight.w600,
)
],
),
)));
break;
default:
return InkWell(
onTap: widget.onShowMore,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(10),
color: Colors.white,
),
child: Padding(
padding: EdgeInsets.fromLTRB(20, 15, 20, 15),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Image.asset(
'assets/images/login/more_icon.png',
height: 60,
width: 60,
),
projectsProvider.isArabic
? SizedBox(
height: 20,
)
: SizedBox(
height: 10,
),
AppText(
TranslationBase.of(context).moreVerification,
fontSize: 14,
fontWeight: FontWeight.w600,
)
],
),
)));
};
}
}

@ -61,9 +61,6 @@ class SMSOTP {
projectProvider = Provider.of(context);
return AlertDialog(
contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 0.0, 24.0),
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.all(Radius.circular(10.0))),
content: StatefulBuilder(builder: (context, setState) {
if (displayTime == '') {
startTimer(setState);

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save