Merge branch 'diplomatic-quarter-live' of https://gitlab.com/Cloud_Solution/diplomatic-quarter into diplomatic-quarter-haroon

merge-update-with-lab-changes
haroon amjad 5 years ago
commit 4f53d058d4

@ -5,13 +5,13 @@ class AppointmentDetails {
int appointmentNo; int appointmentNo;
int clinicID; int clinicID;
int doctorID; int doctorID;
String startTime; dynamic startTime;
String endTime; dynamic endTime;
String appointmentDate; dynamic appointmentDate;
String clinicName; dynamic clinicName;
String doctorImageURL; dynamic doctorImageURL;
String doctorName; dynamic doctorName;
String projectName; dynamic projectName;
AppointmentDetails( AppointmentDetails(
{this.setupID, {this.setupID,

@ -52,6 +52,7 @@ class MyApp extends StatelessWidget {
TranslationBaseDelegate(), TranslationBaseDelegate(),
GlobalMaterialLocalizations.delegate, GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate, GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
], ],
supportedLocales: [ supportedLocales: [
const Locale('ar', ''), // Arabic const Locale('ar', ''), // Arabic

@ -3,7 +3,7 @@ import 'package:flutter/cupertino.dart';
class ToDoCountProviderModel with ChangeNotifier { class ToDoCountProviderModel with ChangeNotifier {
int _count; int _count;
int get count => _count; int get count => _count == null ? 0 : _count;
void setState(int count) { void setState(int count) {
_count = count; _count = count;

@ -10,6 +10,7 @@ import 'package:diplomaticquarterapp/pages/AlHabibMedicalService/parking_page.da
import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart'; import 'package:diplomaticquarterapp/pages/Blood/blood_donation.dart';
import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart'; import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart';
import 'package:diplomaticquarterapp/pages/ChildVaccines/child_vaccines_page.dart'; import 'package:diplomaticquarterapp/pages/ChildVaccines/child_vaccines_page.dart';
import 'package:diplomaticquarterapp/pages/ContactUs/findus/findus_page.dart';
import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart'; import 'package:diplomaticquarterapp/pages/ErService/ErOptions.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart';
import 'package:diplomaticquarterapp/pages/family/my-family.dart'; import 'package:diplomaticquarterapp/pages/family/my-family.dart';
@ -317,7 +318,7 @@ class _AllHabibMedicalServiceState extends State<AllHabibMedicalService> {
onTap: () => Navigator.push( onTap: () => Navigator.push(
context, context,
FadePage( FadePage(
page: ParkingPage(), page: FindUsPage(),
), ),
), ),
imageLocation: 'assets/images/new-design/find_us_icon.png', imageLocation: 'assets/images/new-design/find_us_icon.png',

@ -101,7 +101,7 @@ class _BookConfirmState extends State<BookConfirm> {
fit: BoxFit.fill, height: 70.0, width: 70.0), fit: BoxFit.fill, height: 70.0, width: 70.0),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.6, width: MediaQuery.of(context).size.width * 0.58,
margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0), margin: EdgeInsets.fromLTRB(20.0, 5.0, 10.0, 5.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
@ -303,7 +303,7 @@ class _BookConfirmState extends State<BookConfirm> {
width: 60.0), width: 60.0),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.6, width: MediaQuery.of(context).size.width * 0.58,
margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,

@ -12,6 +12,7 @@ import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart'; import 'package:diplomaticquarterapp/widgets/in_app_browser/InAppBrowser.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart'; import 'package:smart_progress_bar/smart_progress_bar.dart';
import 'QRCode.dart'; import 'QRCode.dart';
@ -21,6 +22,8 @@ class BookSuccess extends StatefulWidget {
DoctorList docObject; DoctorList docObject;
MyInAppBrowser browser; MyInAppBrowser browser;
final ChromeSafariBrowser chromeBrowser =
new MyChromeSafariBrowser(new MyInAppBrowser());
String appoDateFormatted; String appoDateFormatted;
String appoTimeFormatted; String appoTimeFormatted;
@ -78,12 +81,14 @@ class _BookSuccessState extends State<BookSuccess> {
width: 80.0), width: 80.0),
), ),
Container( Container(
width: MediaQuery.of(context).size.width * 0.62,
margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0), margin: EdgeInsets.fromLTRB(10.0, 5.0, 10.0, 5.0),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.max, mainAxisSize: MainAxisSize.max,
children: <Widget>[ children: <Widget>[
Text(widget.docObject.projectName, Text(widget.docObject.projectName,
overflow: TextOverflow.clip,
style: _getTextStyling()), style: _getTextStyling()),
Container( Container(
margin: EdgeInsets.only(top: 5.0), margin: EdgeInsets.only(top: 5.0),
@ -93,6 +98,7 @@ class _BookSuccessState extends State<BookSuccess> {
Container( Container(
margin: EdgeInsets.only(top: 5.0, bottom: 3.0), margin: EdgeInsets.only(top: 5.0, bottom: 3.0),
child: Text(widget.docObject.clinicName, child: Text(widget.docObject.clinicName,
overflow: TextOverflow.clip,
style: _getTextStyling()), style: _getTextStyling()),
), ),
Container( Container(
@ -101,6 +107,7 @@ class _BookSuccessState extends State<BookSuccess> {
widget.appoDateFormatted + widget.appoDateFormatted +
", " + ", " +
widget.appoTimeFormatted, widget.appoTimeFormatted,
overflow: TextOverflow.clip,
style: _getTextStyling()), style: _getTextStyling()),
), ),
Container( Container(
@ -110,7 +117,7 @@ class _BookSuccessState extends State<BookSuccess> {
widget.docObject.doctorTitle + widget.docObject.doctorTitle +
" " + " " +
widget.docObject.name, widget.docObject.name,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.clip,
style: _getTextStyling()), style: _getTextStyling()),
), ),
], ],
@ -295,7 +302,8 @@ class _BookSuccessState extends State<BookSuccess> {
appo.appointmentNo = appo.appointmentNo =
widget.patientShareResponse.appointmentNo; widget.patientShareResponse.appointmentNo;
appo.serviceID = widget.patientShareResponse.serviceID; appo.serviceID = widget.patientShareResponse.serviceID;
appo.isLiveCareAppointment = widget.patientShareResponse.isLiveCareAppointment; appo.isLiveCareAppointment =
widget.patientShareResponse.isLiveCareAppointment;
appo.doctorID = widget.patientShareResponse.doctorID; appo.doctorID = widget.patientShareResponse.doctorID;
confirmAppointment(appo); confirmAppointment(appo);
}, },
@ -341,8 +349,8 @@ class _BookSuccessState extends State<BookSuccess> {
confirmAppointment(AppoitmentAllHistoryResultList appo) { confirmAppointment(AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
service service
.confirmAppointment( .confirmAppointment(appo.appointmentNo, appo.clinicID, appo.projectID,
appo.appointmentNo, appo.clinicID, appo.projectID, appo.isLiveCareAppointment, context) appo.isLiveCareAppointment, context)
.then((res) { .then((res) {
if (res['MessageStatus'] == 1) { if (res['MessageStatus'] == 1) {
AppToast.showSuccessToast(message: res['ErrorEndUserMessage']); AppToast.showSuccessToast(message: res['ErrorEndUserMessage']);
@ -542,7 +550,15 @@ class _BookSuccessState extends State<BookSuccess> {
AuthenticatedUser authenticatedUser, AuthenticatedUser authenticatedUser,
double amount, double amount,
PatientShareResponse patientShareResponse, PatientShareResponse patientShareResponse,
AppoitmentAllHistoryResultList appo) { AppoitmentAllHistoryResultList appo) async {
if (paymentMethod == "ApplePay") {
await widget.chromeBrowser.open(
url: "https://flutter.dev/",
options: ChromeSafariBrowserClassOptions(
android: AndroidChromeCustomTabsOptions(
addDefaultShareMenuItem: false),
ios: IOSSafariOptions(barCollapsingEnabled: true)));
} else {
widget.browser = new MyInAppBrowser( widget.browser = new MyInAppBrowser(
onExitCallback: onBrowserExit, onExitCallback: onBrowserExit,
appo: appo, appo: appo,
@ -559,6 +575,7 @@ class _BookSuccessState extends State<BookSuccess> {
authenticatedUser, authenticatedUser,
widget.browser); widget.browser);
} }
}
onBrowserLoadStart(String url) { onBrowserLoadStart(String url) {
print("onBrowserLoadStart"); print("onBrowserLoadStart");
@ -608,6 +625,28 @@ class _BookSuccessState extends State<BookSuccess> {
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
} }
getApplePayAPQ(AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService();
service
.checkPaymentStatus(
Utils.getAppointmentTransID(
appo.projectID, appo.clinicID, appo.appointmentNo),
context)
.then((res) {
print("Printing Payment Status Reponse!!!!");
print(res);
String paymentInfo = res['Response_Message'];
if (paymentInfo == 'Success') {
createAdvancePayment(res, appo);
} else {
AppToast.showErrorToast(message: res['Response_Message']);
}
}).catchError((err) {
print(err);
}).showProgressBar(
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6));
}
createAdvancePayment(res, AppoitmentAllHistoryResultList appo) { createAdvancePayment(res, AppoitmentAllHistoryResultList appo) {
DoctorsListService service = new DoctorsListService(); DoctorsListService service = new DoctorsListService();
String paymentReference = res['Fort_id'].toString(); String paymentReference = res['Fort_id'].toString();

@ -1,6 +1,7 @@
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
class PaymentMethod extends StatefulWidget { class PaymentMethod extends StatefulWidget {
@override @override
@ -93,35 +94,6 @@ class _PaymentMethodState extends State<PaymentMethod> {
), ),
), ),
), ),
// Expanded(
// child: Container(
// child: InkWell(
// onTap: () {
// updateSelectedPaymentMethod("SADAD");
// },
// child: Card(
// elevation: 3.0,
// margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
// color: Colors.white,
// shape: RoundedRectangleBorder(
// borderRadius: BorderRadius.circular(10),
// side: selectedPaymentMethod == "SADAD"
// ? BorderSide(
// color: Colors.green, width: 5.0)
// : BorderSide(
// color: Colors.transparent, width: 0.0),
// ),
// child: Container(
// height: 120.0,
// padding: EdgeInsets.all(7.0),
// width: MediaQuery.of(context).size.width * 0.45,
// child: Image.asset(
// "assets/images/new-design/sadad.png"),
// ),
// ),
// ),
// ),
// ),
], ],
), ),
), ),
@ -195,8 +167,43 @@ class _PaymentMethodState extends State<PaymentMethod> {
margin: EdgeInsets.only(top: 25.0), margin: EdgeInsets.only(top: 25.0),
child: Flex( child: Flex(
direction: Axis.horizontal, direction: Axis.horizontal,
children: <Widget>[], children: <Widget>[
Expanded(
child: Container(
child: InkWell(
onTap: () {
updateSelectedPaymentMethod("ApplePay");
},
child: Card(
elevation: 3.0,
margin: EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 8.0),
color: Colors.white,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10),
side: selectedPaymentMethod == "ApplePay"
? BorderSide(
color: Colors.green, width: 5.0)
: BorderSide(
color: Colors.transparent, width: 0.0),
),
child: Container(
height: 120.0,
padding: EdgeInsets.all(20.0),
child: SvgPicture.asset(
"assets/images/new-design/applepay.svg"),
),
),
),
),
),
Expanded(
child: Container(),
),
],
),
), ),
SizedBox(
height: 150.0,
), ),
], ],
), ),

@ -179,8 +179,7 @@ class _AddMember extends State<AddMember> {
request.regionID = 1; request.regionID = 1;
} }
loading(true); loading(true);
this familyFileProvider
.familyFileProvider
.insertNewMember(request) .insertNewMember(request)
.then((value) => sendActivationCode(value)); .then((value) => sendActivationCode(value));
} }
@ -189,8 +188,7 @@ class _AddMember extends State<AddMember> {
// var request = this.getCommonRequest(); // var request = this.getCommonRequest();
loading(true); loading(true);
patientShareRequestID = result['PatientShareRequestID']; patientShareRequestID = result['PatientShareRequestID'];
this familyFileProvider
.familyFileProvider
.sendActivationCode(mobileNo, countryCode, nationalIDorFile.text) .sendActivationCode(mobileNo, countryCode, nationalIDorFile.text)
.then((result) => { .then((result) => {
if (result != null && result['isSMSSent'] == true) if (result != null && result['isSMSSent'] == true)
@ -203,11 +201,13 @@ class _AddMember extends State<AddMember> {
startSMSService(type, result) { startSMSService(type, result) {
loading(false); loading(false);
new SMSOTP( SMSOTP(
context, context,
type, type,
this.mobileNo, mobileNo,
(value) => {this.checkActivationCode(value, result)}, (value) {
this.checkActivationCode(value, result);
},
() => { () => {
print('Faild..'), print('Faild..'),
}, },
@ -215,8 +215,7 @@ class _AddMember extends State<AddMember> {
} }
checkActivationCode(value, result) { checkActivationCode(value, result) {
this familyFileProvider
.familyFileProvider
.checkActivationCode( .checkActivationCode(
result['LogInTokenID'], value, nationalIDorFile.text, mobileNo) result['LogInTokenID'], value, nationalIDorFile.text, mobileNo)
.then((result) => { .then((result) => {
@ -226,8 +225,7 @@ class _AddMember extends State<AddMember> {
} }
handleFamilyRequests(id, stauts) { handleFamilyRequests(id, stauts) {
this familyFileProvider
.familyFileProvider
.acceptAndRejectRecievedRequests(id, stauts) .acceptAndRejectRecievedRequests(id, stauts)
.then((result) => { .then((result) => {
sharedPref.remove(FAMILY_FILE), sharedPref.remove(FAMILY_FILE),

@ -19,7 +19,7 @@ class InsuranceCard extends StatefulWidget {
@override @override
_InsuranceCardState createState() => _InsuranceCardState(); _InsuranceCardState createState() => _InsuranceCardState();
} }
//TODO fix it
class _InsuranceCardState extends State<InsuranceCard> { class _InsuranceCardState extends State<InsuranceCard> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -29,6 +29,7 @@ class _InsuranceCardState extends State<InsuranceCard> {
AppScaffold( AppScaffold(
isShowAppBar: true, isShowAppBar: true,
baseViewModel: model, baseViewModel: model,
image: 'assets/images/medical/insurance_card_icon.png',
appBarTitle: TranslationBase.of(context).insuranceCards, appBarTitle: TranslationBase.of(context).insuranceCards,
body: Container( body: Container(
margin: EdgeInsets.only( margin: EdgeInsets.only(

@ -12,27 +12,21 @@ import 'package:diplomaticquarterapp/pages/BookAppointment/BookingOptions.dart';
import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart'; import 'package:diplomaticquarterapp/pages/ToDoList/ToDo.dart';
import 'package:diplomaticquarterapp/pages/livecare/incoming_call.dart'; import 'package:diplomaticquarterapp/pages/livecare/incoming_call.dart';
import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart'; import 'package:diplomaticquarterapp/pages/medical/medical_profile_page.dart';
import 'package:diplomaticquarterapp/pages/medical/my_admissions_page.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart'; import 'package:diplomaticquarterapp/services/robo_search/event_provider.dart';
import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart'; import 'package:diplomaticquarterapp/uitl/CalendarUtils.dart';
import 'package:diplomaticquarterapp/uitl/LocalNotification.dart'; import 'package:diplomaticquarterapp/uitl/LocalNotification.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart'; import 'package:diplomaticquarterapp/widgets/bottom_navigation/bottom_nav_bar.dart';
import 'package:diplomaticquarterapp/widgets/buttons/button.dart';
import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/floatingActionButton.dart';
import 'package:diplomaticquarterapp/widgets/data_display/text.dart'; import 'package:diplomaticquarterapp/widgets/data_display/text.dart';
import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart'; import 'package:diplomaticquarterapp/widgets/dialogs/confirm_dialog.dart';
import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart'; import 'package:diplomaticquarterapp/widgets/drawer/app_drawer_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/slide_up_page.dart';
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_svg/svg.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
import 'package:provider/provider.dart';
import 'package:rxdart/rxdart.dart';
import '../../locator.dart'; import '../../locator.dart';
import 'home_page.dart'; import 'home_page.dart';
@ -52,7 +46,8 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
ProjectViewModel projectProvider; ProjectViewModel projectProvider;
///inject the user data ///inject the user data
AuthenticatedUserObject authenticatedUserObject = locator<AuthenticatedUserObject>(); AuthenticatedUserObject authenticatedUserObject =
locator<AuthenticatedUserObject>();
final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); final FirebaseMessaging _firebaseMessaging = FirebaseMessaging();
final authService = new AuthProvider(); final authService = new AuthProvider();
@ -134,21 +129,22 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
}); });
_requestIOSPermissions(); _requestIOSPermissions();
pageController = PageController(keepPage: true); pageController = PageController(keepPage: true);
// _firebaseMessaging.setAutoInitEnabled(true); _firebaseMessaging.setAutoInitEnabled(true);
//
// if (Platform.isIOS) { if (Platform.isIOS) {
// _firebaseMessaging.requestNotificationPermissions(); _firebaseMessaging.requestNotificationPermissions();
// } }
//
// _firebaseMessaging.getToken().then((String token) { _firebaseMessaging.getToken().then((String token) {
// sharedPref.setString(PUSH_TOKEN, token); print(token);
// if (token != null) { sharedPref.setString(PUSH_TOKEN, token);
// checkUserStatus(token); if (token != null) {
// } checkUserStatus(token);
// requestPermissions(); }
// }).catchError((err) { requestPermissions();
// print(err); }).catchError((err) {
// }); print(err);
});
//_firebase Background message handler //_firebase Background message handler
// _firebaseMessaging.configure( // _firebaseMessaging.configure(
@ -345,7 +341,11 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
headline6: headline6:
TextStyle(color: Colors.white, fontWeight: FontWeight.bold), TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
), ),
title: Texts(getText(currentTab).toUpperCase(),bold: true,color: Colors.white,), title: Texts(
getText(currentTab).toUpperCase(),
bold: true,
color: Colors.white,
),
leading: Builder( leading: Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
return IconButton( return IconButton(
@ -373,7 +373,11 @@ class _LandingPageState extends State<LandingPage> with WidgetsBindingObserver {
physics: NeverScrollableScrollPhysics(), physics: NeverScrollableScrollPhysics(),
controller: pageController, controller: pageController,
children: [ children: [
HomePage(goToMyProfile: () {_changeCurrentTab(1);},), HomePage(
goToMyProfile: () {
_changeCurrentTab(1);
},
),
MedicalProfilePage(), MedicalProfilePage(),
BookingOptions(), BookingOptions(),
Container(), Container(),

@ -9,6 +9,7 @@ import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart'; import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/date_uitl.dart'; import 'package:diplomaticquarterapp/uitl/date_uitl.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart'; import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart'; import 'package:diplomaticquarterapp/widgets/card/rounded_container.dart';
@ -86,8 +87,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
flex: 3, flex: 3,
child: user != null && isMoreOption == false child: user != null && isMoreOption == false
? Column( ? Column(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceEvenly,
MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
@ -112,14 +112,13 @@ class _ConfirmLogin extends State<ConfirmLogin> {
Expanded( Expanded(
child: ListTile( child: ListTile(
title: Text( title: Text(
TranslationBase.of(context) TranslationBase.of(context).lastLoginAt,
.lastLoginAt,
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
subtitle: Text( subtitle: Text(
user.editedOn != null user.editedOn != null
? formatDate(DateUtil ? formatDate(
.convertStringToDate( DateUtil.convertStringToDate(
user.editedOn)) user.editedOn))
: '--', : '--',
textAlign: TextAlign.center), textAlign: TextAlign.center),
@ -131,8 +130,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
.lastLoginWith, .lastLoginWith,
textAlign: TextAlign.center), textAlign: TextAlign.center),
subtitle: Text( subtitle: Text(
getType( getType(user.logInType, context),
user.logInType, context),
textAlign: TextAlign.center), textAlign: TextAlign.center),
)) ))
], ],
@ -140,8 +138,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
], ],
) )
: Column( : Column(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.spaceEvenly,
MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Image.asset( Image.asset(
@ -153,15 +150,13 @@ class _ConfirmLogin extends State<ConfirmLogin> {
? AppText( ? AppText(
TranslationBase.of(context) TranslationBase.of(context)
.verifyLoginWith, .verifyLoginWith,
fontSize: fontSize: SizeConfig.textMultiplier * 3.5,
SizeConfig.textMultiplier * 3.5,
textAlign: TextAlign.left, textAlign: TextAlign.left,
) )
: AppText( : AppText(
TranslationBase.of(context) TranslationBase.of(context)
.verifyFingerprint2, .verifyFingerprint2,
fontSize: fontSize: SizeConfig.textMultiplier * 2.5,
SizeConfig.textMultiplier * 2.5,
textAlign: TextAlign.start, textAlign: TextAlign.start,
), ),
])), ])),
@ -173,19 +168,15 @@ class _ConfirmLogin extends State<ConfirmLogin> {
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Row( Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.center,
MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: InkWell( child: InkWell(
onTap: () => { onTap: () => {
authenticateUser( authenticateUser(
3, 3, BiometricType.face.index)
BiometricType
.face.index)
}, },
child: child: getButton(user.logInType))),
getButton(user.logInType))),
Expanded(child: getButton(5)) Expanded(child: getButton(5))
]) ])
])) ]))
@ -197,8 +188,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
children: <Widget>[ children: <Widget>[
onlySMSBox == false onlySMSBox == false
? Row( ? Row(
mainAxisAlignment: mainAxisAlignment: MainAxisAlignment.center,
MainAxisAlignment.center,
children: <Widget>[ children: <Widget>[
Expanded(child: getButton(3)), Expanded(child: getButton(3)),
Expanded(child: getButton(2)) Expanded(child: getButton(2))
@ -224,8 +214,7 @@ class _ConfirmLogin extends State<ConfirmLogin> {
children: <Widget>[ children: <Widget>[
Expanded( Expanded(
child: DefaultButton( child: DefaultButton(
TranslationBase.of(context) TranslationBase.of(context).useAnotherAccount,
.useAnotherAccount,
() => { () => {
Navigator.of(context).pushNamed( Navigator.of(context).pushNamed(
LOGIN_TYPE, LOGIN_TYPE,
@ -236,9 +225,13 @@ class _ConfirmLogin extends State<ConfirmLogin> {
) )
: SizedBox(), : SizedBox(),
], ],
)) ),
)
], ],
)))); ),
),
),
);
} }
Future<void> _getAvailableBiometrics() async { Future<void> _getAvailableBiometrics() async {
@ -300,11 +293,13 @@ class _ConfirmLogin extends State<ConfirmLogin> {
showLoader(true); showLoader(true);
var req = getCommonRequest(); var req = getCommonRequest();
var request = CheckPatientAuthenticationReq.fromJson(req.toJson()); var request = CheckPatientAuthenticationReq.fromJson(req.toJson());
GifLoaderDialogUtils.showMyDialog(context);
sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
authService authService
.checkPatientAuthentication(request) .checkPatientAuthentication(request)
.then((value) => { .then((value) => {
GifLoaderDialogUtils.hideDialog(context),
if (value['isSMSSent']) if (value['isSMSSent'])
{ {
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
@ -321,20 +316,21 @@ class _ConfirmLogin extends State<ConfirmLogin> {
}) })
.catchError((err) { .catchError((err) {
print(err); print(err);
}).showProgressBar( GifLoaderDialogUtils.hideDialog(context);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); });
} }
sendActivationCode(type) async { sendActivationCode(type) async {
var request = this.getCommonRequest(); var request = this.getCommonRequest();
// loading(true); GifLoaderDialogUtils.showMyDialog(context);
await this.authService.sendActivationCode(request).then((result) {
await this.authService.sendActivationCode(request).then((result) => { GifLoaderDialogUtils.hideDialog(context);
if (result != null && result['isSMSSent'] == true) if (result != null && result['isSMSSent'] == true) {
{this.startSMSService(type), print(result)} this.startSMSService(type);
}
}).catchError((r) {
GifLoaderDialogUtils.hideDialog(context);
}); });
// SMSOTP.showLoadingDialog(context, false),
} }
startSMSService(type) { startSMSService(type) {
@ -479,11 +475,10 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
checkActivationCode({value}) async { checkActivationCode({value}) async {
SMSOTP.showLoadingDialog(context, true); GifLoaderDialogUtils.showMyDialog(context);
var request = this.getCommonRequest().toJson(); var request = this.getCommonRequest().toJson();
this authService
.authService
.checkActivationCode(request, value) .checkActivationCode(request, value)
.then((result) => { .then((result) => {
if (result is Map) if (result is Map)
@ -498,25 +493,19 @@ class _ConfirmLogin extends State<ConfirmLogin> {
} }
else else
{ {
this.userData = result userData = result.list,
.list, //AuthenticatedUser.fromJson(result['List'][0]), //AuthenticatedUser.fromJson(result['List'][0]),
this.sharedPref.setObject(USER_PROFILE, result.list), sharedPref.setObject(USER_PROFILE, result.list),
this.loginTokenID = result.logInTokenID, loginTokenID = result.logInTokenID,
this sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
.sharedPref sharedPref.setString(TOKEN, result.authenticationTokenID),
.setObject(LOGIN_TOKEN_ID, result.logInTokenID), checkIfUserAgreedBefore(result),
this
.sharedPref
.setString(TOKEN, result.authenticationTokenID),
this.checkIfUserAgreedBefore(result),
// Navigator.of(context).pop(),
SMSOTP.showLoadingDialog(context, false),
} }
} }
else else
{ {
// Navigator.of(context).pop(), // Navigator.of(context).pop(),
SMSOTP.showLoadingDialog(context, false), GifLoaderDialogUtils.hideDialog(context),
Future.delayed(Duration(seconds: 1), () { Future.delayed(Duration(seconds: 1), () {
AppToast.showErrorToast(message: result); AppToast.showErrorToast(message: result);
}), }),
@ -524,8 +513,8 @@ class _ConfirmLogin extends State<ConfirmLogin> {
}) })
.catchError((err) { .catchError((err) {
print(err); print(err);
}).showProgressBar( GifLoaderDialogUtils.hideDialog(context);
text: "Loading", backgroundColor: Colors.blue.withOpacity(0.6)); });
} }
checkIfUserAgreedBefore(CheckActivationCode result) { checkIfUserAgreedBefore(CheckActivationCode result) {

@ -11,7 +11,6 @@ import 'package:diplomaticquarterapp/pages/rateAppointment/rate_appointment_doct
import 'package:diplomaticquarterapp/routes.dart'; import 'package:diplomaticquarterapp/routes.dart';
import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart'; import 'package:diplomaticquarterapp/services/authentication/auth_provider.dart';
import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart'; import 'package:diplomaticquarterapp/uitl/app_shared_preferences.dart';
import 'package:diplomaticquarterapp/uitl/app_toast.dart';
import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart'; import 'package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart';
import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart'; import 'package:diplomaticquarterapp/uitl/translations_delegate_base.dart';
import 'package:diplomaticquarterapp/uitl/utils.dart'; import 'package:diplomaticquarterapp/uitl/utils.dart';
@ -19,10 +18,12 @@ import 'package:diplomaticquarterapp/widgets/buttons/defaultButton.dart';
import 'package:diplomaticquarterapp/widgets/input/text_field.dart'; import 'package:diplomaticquarterapp/widgets/input/text_field.dart';
import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart'; import 'package:diplomaticquarterapp/widgets/mobile-no/mobile_no.dart';
import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart'; import 'package:diplomaticquarterapp/widgets/others/app_scaffold_widget.dart';
import 'package:diplomaticquarterapp/widgets/progress_indicator/app_circular_progress_Indeicator.dart';
import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart'; import 'package:diplomaticquarterapp/widgets/text/app_texts_widget.dart';
import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart'; import 'package:diplomaticquarterapp/widgets/transitions/fade_page.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:smart_progress_bar/smart_progress_bar.dart';
class Login extends StatefulWidget { class Login extends StatefulWidget {
@override @override
@ -68,7 +69,8 @@ class _Login extends State<Login> {
padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30), padding: EdgeInsets.only(top: 10, left: 20, right: 20, bottom: 30),
height: SizeConfig.realScreenHeight * .9, height: SizeConfig.realScreenHeight * .9,
width: SizeConfig.realScreenWidth, width: SizeConfig.realScreenWidth,
child: Column(children: <Widget>[ child: Column(
children: <Widget>[
Expanded( Expanded(
flex: 2, flex: 2,
child: AppText( child: AppText(
@ -124,8 +126,11 @@ class _Login extends State<Login> {
), ),
], ],
)) ))
]), ],
))); ),
),
),
);
} }
startLogin() { startLogin() {
@ -136,8 +141,10 @@ class _Login extends State<Login> {
void validateForm() { void validateForm() {
//TODO fix login //TODO fix login
if (util.validateIDBox(nationalIDorFile.text, loginType) == true && if (util.validateIDBox(nationalIDorFile.text, loginType) ==
mobileNo.length >= 9 && true /*&&
mobileNo.length >= 9 */
&&
util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true) { util.isSAUDIIDValid(nationalIDorFile.text, loginType) == true) {
setState(() { setState(() {
isButtonDisabled = false; isButtonDisabled = false;
@ -151,7 +158,6 @@ class _Login extends State<Login> {
checkUserAuthentication() { checkUserAuthentication() {
// showLoader(true); // showLoader(true);
GifLoaderDialogUtils.showMyDialog(context);
var request = CheckPatientAuthenticationReq(); var request = CheckPatientAuthenticationReq();
request.isRegister = false; request.isRegister = false;
request.patientMobileNumber = int.parse(mobileNo); request.patientMobileNumber = int.parse(mobileNo);
@ -166,15 +172,16 @@ class _Login extends State<Login> {
request.patientID = int.parse(nationalIDorFile.text); request.patientID = int.parse(nationalIDorFile.text);
} }
sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request); sharedPref.setObject(REGISTER_DATA_FOR_REGISTER, request);
GifLoaderDialogUtils.showMyDialog(context);
authService authService
.checkPatientAuthentication(request) .checkPatientAuthentication(request)
.then((value) => { .then((value) => {
//showLoader(false), //showLoader(false),
GifLoaderDialogUtils.hideDialog(context),
if (value['isSMSSent']) if (value['isSMSSent'])
{ {
sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']), sharedPref.setString(LOGIN_TOKEN_ID, value['LogInTokenID']),
sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request), sharedPref.setObject(REGISTER_DATA_FOR_LOGIIN, request),
GifLoaderDialogUtils.hideDialog(context),
Navigator.of(context).pushNamed(CONFIRM_LOGIN) Navigator.of(context).pushNamed(CONFIRM_LOGIN)
} }
else else
@ -183,10 +190,10 @@ class _Login extends State<Login> {
} }
}) })
.catchError((err) { .catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err); print(err);
AppToast.showErrorToast(message: err); GifLoaderDialogUtils.hideDialog(context);
}); });
// SMSOTP.showLoadingDialog(context, false),
} }
checkActivationCode({code}) async { checkActivationCode({code}) async {
@ -207,7 +214,6 @@ class _Login extends State<Login> {
request['PatientIdentificationID'] = ''; request['PatientIdentificationID'] = '';
request['PatientID'] = int.parse(nationalIDorFile.text); request['PatientID'] = int.parse(nationalIDorFile.text);
} }
GifLoaderDialogUtils.showMyDialog(context);
// request.isRegister = false; // request.isRegister = false;
this.authService.checkActivationCode(request, code).then((result) => { this.authService.checkActivationCode(request, code).then((result) => {
result = CheckActivationCode.fromJson(result), result = CheckActivationCode.fromJson(result),
@ -215,15 +221,11 @@ class _Login extends State<Login> {
this.sharedPref.setObject(USER_PROFILE, result.list), this.sharedPref.setObject(USER_PROFILE, result.list),
this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID), this.sharedPref.setObject(LOGIN_TOKEN_ID, result.logInTokenID),
this.sharedPref.setString(TOKEN, result.authenticationTokenID), this.sharedPref.setString(TOKEN, result.authenticationTokenID),
GifLoaderDialogUtils.hideDialog(context),
//this.checkIfUserAgreedBefore(result),
Navigator.of(context).pushNamed(
HOME,
),
//showLoader(false),
appointmentRateViewModel appointmentRateViewModel
.getIsLastAppointmentRatedList() .getIsLastAppointmentRatedList()
.then((value) => { .then((value) => {
GifLoaderDialogUtils.hideDialog(context),
if (appointmentRateViewModel.isHaveAppointmentNotRate) if (appointmentRateViewModel.isHaveAppointmentNotRate)
{ {
Navigator.pushReplacement( Navigator.pushReplacement(
@ -244,10 +246,10 @@ class _Login extends State<Login> {
} }
}) })
.catchError((err) { .catchError((err) {
GifLoaderDialogUtils.hideDialog(context);
print(err); print(err);
AppToast.showErrorToast(message: err); GifLoaderDialogUtils.hideDialog(context);
}) }),
// SMSOTP.showLoadingDialog(context, false),
}); });
} }

@ -172,7 +172,7 @@ class FamilyFilesProvider with ChangeNotifier {
throw error; throw error;
} }
} }
//TODO
Future<dynamic> checkActivationCode( Future<dynamic> checkActivationCode(
loginTokenID, activationCode, indentification, mobileNo) async { loginTokenID, activationCode, indentification, mobileNo) async {
try { try {

@ -16,7 +16,7 @@ class _GifLoaderContainerState extends State<GifLoaderContainer>
WidgetsBinding.instance.addPostFrameCallback((_) { WidgetsBinding.instance.addPostFrameCallback((_) {
controller1.repeat( controller1.repeat(
min: 0, max: 12, period: Duration(milliseconds: 750), reverse: true); min: 0, max: 11, period: Duration(milliseconds: 750), reverse: true);
}); });
super.initState(); super.initState();
} }

@ -229,3 +229,22 @@ class MyInAppBrowser extends InAppBrowser {
'</html>'; '</html>';
} }
} }
class MyChromeSafariBrowser extends ChromeSafariBrowser {
MyChromeSafariBrowser(browserFallback) : super(bFallback: browserFallback);
@override
void onOpened() {
print("ChromeSafari browser opened");
}
@override
void onCompletedInitialLoad() {
print("ChromeSafari browser initial load completed");
}
@override
void onClosed() {
print("ChromeSafari browser closed");
}
}

@ -243,7 +243,7 @@ class _TextFieldsState extends State<TextFields> {
onSaved: widget.onSaved, onSaved: widget.onSaved,
style: Theme.of(context) style: Theme.of(context)
.textTheme .textTheme
.body2 .bodyText1
.copyWith(fontSize: widget.fontSize, fontWeight: widget.fontWeight), .copyWith(fontSize: widget.fontSize, fontWeight: widget.fontWeight),
inputFormatters: widget.keyboardType == TextInputType.phone inputFormatters: widget.keyboardType == TextInputType.phone

@ -1,4 +1,5 @@
import 'package:diplomaticquarterapp/config/config.dart'; import 'package:diplomaticquarterapp/config/config.dart';
import 'package:diplomaticquarterapp/config/size_config.dart';
import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart'; import 'package:diplomaticquarterapp/core/service/AuthenticatedUserObject.dart';
import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/base_view_model.dart';
import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart'; import 'package:diplomaticquarterapp/core/viewModels/project_view_model.dart';
@ -35,6 +36,7 @@ class AppScaffold extends StatelessWidget {
final Widget floatingActionButton; final Widget floatingActionButton;
final String title; final String title;
final String description; final String description;
final String image;
final bool isShowDecPage; final bool isShowDecPage;
AuthenticatedUserObject authenticatedUserObject = AuthenticatedUserObject authenticatedUserObject =
@ -52,7 +54,7 @@ class AppScaffold extends StatelessWidget {
this.title, this.title,
this.description, this.description,
this.isShowDecPage = true, this.isShowDecPage = true,
this.isBottomBar}); this.isBottomBar, this.image});
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -71,14 +73,24 @@ class AppScaffold extends StatelessWidget {
title: Texts(authenticatedUserObject.isLogin || !isShowDecPage title: Texts(authenticatedUserObject.isLogin || !isShowDecPage
? appBarTitle.toUpperCase() ? appBarTitle.toUpperCase()
: TranslationBase.of(context).serviceInformationTitle,color: Colors.white,bold: true,), : TranslationBase.of(context).serviceInformationTitle,color: Colors.white,bold: true,),
leading: Builder( leading:Builder(
builder: (BuildContext context) { builder: (BuildContext context) {
return ArrowBack(); return ArrowBack();
}, },
), ),
centerTitle: true, centerTitle: true,
actions: <Widget>[ actions: <Widget>[
IconButton( image!=null? InkWell(
onTap: ()=> Navigator.pop(context),
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Image.asset(
image,
height: SizeConfig.heightMultiplier * 5,
width: SizeConfig.heightMultiplier * 5,
color: Colors.white,
),
),): IconButton(
icon: Icon(FontAwesomeIcons.home), icon: Icon(FontAwesomeIcons.home),
color: Colors.white, color: Colors.white,
onPressed: () { onPressed: () {

@ -29,6 +29,13 @@ class SMSOTP {
this.onFailure, this.onFailure,
); );
final verifyAccountForm = GlobalKey<FormState>();
TextEditingController digit1 = TextEditingController(text: "");
TextEditingController digit2 = TextEditingController(text: "");
TextEditingController digit3 = TextEditingController(text: "");
TextEditingController digit4 = TextEditingController(text: "");
Map verifyAccountFormValue = { Map verifyAccountFormValue = {
'digit1': '', 'digit1': '',
'digit2': '', 'digit2': '',
@ -42,6 +49,7 @@ class SMSOTP {
String errorMsg; String errorMsg;
String displayTime = ''; String displayTime = '';
displayDialog(BuildContext context) async { displayDialog(BuildContext context) async {
return showDialog( return showDialog(
context: context, context: context,
@ -83,7 +91,9 @@ class SMSOTP {
.substring(mobileNo.toString().length - 3), .substring(mobileNo.toString().length - 3),
textAlign: TextAlign.center, textAlign: TextAlign.center,
)), )),
Padding( Form(
key: verifyAccountForm,
child: Padding(
padding: EdgeInsets.only(top: 20), padding: EdgeInsets.only(top: 20),
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceAround, mainAxisAlignment: MainAxisAlignment.spaceAround,
@ -95,6 +105,7 @@ class SMSOTP {
style: buildTextStyle(), style: buildTextStyle(),
autofocus: true, autofocus: true,
maxLength: 1, maxLength: 1,
controller: digit1,
textAlign: TextAlign.center, textAlign: TextAlign.center,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
decoration: buildInputDecoration(context), decoration: buildInputDecoration(context),
@ -105,8 +116,10 @@ class SMSOTP {
}, },
onChanged: (val) { onChanged: (val) {
if (val.length == 1) { if (val.length == 1) {
FocusScope.of(context).requestFocus(focusD2); FocusScope.of(context)
verifyAccountFormValue['digit1'] = val.trim(); .requestFocus(focusD2);
verifyAccountFormValue['digit1'] =
val.trim();
checkValue(); checkValue();
} }
}, },
@ -118,19 +131,22 @@ class SMSOTP {
focusNode: focusD2, focusNode: focusD2,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
maxLength: 1, maxLength: 1,
controller: digit2,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: buildTextStyle(), style: buildTextStyle(),
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
decoration: buildInputDecoration(context), decoration: buildInputDecoration(context),
onSaved: (val) {}, onSaved: (val) {},
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context).requestFocus(focusD3); FocusScope.of(context)
.requestFocus(focusD3);
}, },
onChanged: (val) { onChanged: (val) {
if (val.length == 1) { if (val.length == 1) {
FocusScope.of(context) FocusScope.of(context)
.requestFocus(focusD3); .requestFocus(focusD3);
verifyAccountFormValue['digit2'] = val.trim(); verifyAccountFormValue['digit2'] =
val.trim();
checkValue(); checkValue();
} }
}, },
@ -142,6 +158,7 @@ class SMSOTP {
focusNode: focusD3, focusNode: focusD3,
textInputAction: TextInputAction.next, textInputAction: TextInputAction.next,
maxLength: 1, maxLength: 1,
controller: digit3,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: buildTextStyle(), style: buildTextStyle(),
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
@ -155,7 +172,8 @@ class SMSOTP {
if (val.length == 1) { if (val.length == 1) {
FocusScope.of(context) FocusScope.of(context)
.requestFocus(focusD4); .requestFocus(focusD4);
verifyAccountFormValue['digit3'] = val.trim(); verifyAccountFormValue['digit3'] =
val.trim();
checkValue(); checkValue();
} }
}, },
@ -167,6 +185,7 @@ class SMSOTP {
maxLength: 1, maxLength: 1,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: buildTextStyle(), style: buildTextStyle(),
controller: digit4,
keyboardType: TextInputType.number, keyboardType: TextInputType.number,
decoration: buildInputDecoration(context), decoration: buildInputDecoration(context),
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
@ -175,7 +194,8 @@ class SMSOTP {
}, },
onChanged: (val) { onChanged: (val) {
if (val.length == 1) { if (val.length == 1) {
verifyAccountFormValue['digit4'] = val.trim(); verifyAccountFormValue['digit4'] =
val.trim();
checkValue(); checkValue();
} }
}, },
@ -183,6 +203,7 @@ class SMSOTP {
], ],
), ),
), ),
),
Padding( Padding(
padding: EdgeInsets.only(top: 10), padding: EdgeInsets.only(top: 10),
child: AppText( child: AppText(
@ -231,7 +252,7 @@ class SMSOTP {
String validateCodeDigit(value) { String validateCodeDigit(value) {
if (value.isEmpty) { if (value.isEmpty) {
return 'Please enter your Password'; return ' ';
} else if (value.length == 3) { } else if (value.length == 3) {
print(value); print(value);
} else { } else {
@ -241,15 +262,10 @@ class SMSOTP {
checkValue() { checkValue() {
//print(verifyAccountFormValue); //print(verifyAccountFormValue);
if (verifyAccountFormValue['digit1'] != ''&& if (verifyAccountForm.currentState.validate()) {
verifyAccountFormValue['digit2'] != '' && onSuccess(digit1.text.toString()+digit2.text.toString()+digit3.text.toString()+digit4.text.toString());
verifyAccountFormValue['digit3'] != '' &&
verifyAccountFormValue['digit4'] != '') {
onSuccess(verifyAccountFormValue['digit1'] +
verifyAccountFormValue['digit2'] +
verifyAccountFormValue['digit3'] +
verifyAccountFormValue['digit4']);
} }
} }
getSecondsAsDigitalClock(int inputSeconds) { getSecondsAsDigitalClock(int inputSeconds) {

Loading…
Cancel
Save