fix sms pop up scrolling

merge-requests/709/head
Elham Rababah 5 years ago
parent 837ff69c82
commit 2b8caab71d

@ -17,6 +17,7 @@ class SizeConfig {
static bool isPortrait = true; static bool isPortrait = true;
static bool isMobilePortrait = false; static bool isMobilePortrait = false;
static bool isMobile = false; static bool isMobile = false;
static bool isHeightShort = false;
void init(BoxConstraints constraints, Orientation orientation) { void init(BoxConstraints constraints, Orientation orientation) {
realScreenHeight = constraints.maxHeight; realScreenHeight = constraints.maxHeight;
@ -26,6 +27,9 @@ class SizeConfig {
if (constraints.maxWidth <= MAX_SMALL_SCREEN) { if (constraints.maxWidth <= MAX_SMALL_SCREEN) {
isMobile = true; isMobile = true;
} }
if (constraints.maxHeight < 800) {
isHeightShort = true;
}
if (orientation == Orientation.portrait) { if (orientation == Orientation.portrait) {
isPortrait = true; isPortrait = true;
if (realScreenWidth < 450) { if (realScreenWidth < 450) {
@ -60,4 +64,29 @@ class SizeConfig {
print('isPortrait $isPortrait'); print('isPortrait $isPortrait');
print('isMobilePortrait $isMobilePortrait'); print('isMobilePortrait $isMobilePortrait');
} }
static getTextMultiplierBasedOnWidth({double width}){
// TODO handel LandScape case
if(width != null) {
return width / 100;
}
return widthMultiplier;
}
static getWidthMultiplier({double width}){
// TODO handel LandScape case
if(width != null) {
return width / 100;
}
return widthMultiplier;
}
static getHeightMultiplier({double height}){
// TODO handel LandScape case
if(height != null) {
return height / 100;
}
return heightMultiplier;
}
} }

@ -5,7 +5,9 @@ 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/core/viewModel/project_view_model.dart';
import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart'; import 'package:doctor_app_flutter/icons_app/doctor_app_icons.dart';
import 'package:doctor_app_flutter/util/translations_delegate_base.dart'; import 'package:doctor_app_flutter/util/translations_delegate_base.dart';
import 'package:doctor_app_flutter/widgets/shared/app_scaffold_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart'; import 'package:doctor_app_flutter/widgets/shared/app_texts_widget.dart';
import 'package:doctor_app_flutter/widgets/shared/divider_with_spaces_around.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class SMSOTP { class SMSOTP {
@ -47,208 +49,208 @@ class SMSOTP {
String displayTime = ''; String displayTime = '';
bool isClosed = false; bool isClosed = false;
displayDialog(BuildContext context) async { displayDialog(BuildContext context) async {
double dialogWidth = MediaQuery.of(context).size.width * 0.84; double dialogWidth = MediaQuery.of(context).size.width * 0.90;
double dialogHeight = MediaQuery.of(context).size.height * 0.50; double dialogHeight = SizeConfig.isHeightShort ?MediaQuery.of(context).size.height * 0.50:MediaQuery.of(context).size.height * 0.40;
return showDialog( return showDialog(
context: context, context: context,
barrierColor: Colors.black.withOpacity(0.7), builder: (ctx) => Center(
builder: (context) { child: Container(
projectProvider = Provider.of(context); height: dialogHeight,
return AlertDialog( width: dialogWidth,
contentPadding: EdgeInsets.fromLTRB(24.0, 0.0, 0.0, 24.0), child: AppScaffold(
content: StatefulBuilder(builder: (context, setState) { isShowAppBar: false,
if (displayTime == '') { body: SingleChildScrollView(
startTimer(setState); child: Container(
} color: Colors.white,
return Container( child: StatefulBuilder(builder: (context, setState) {
color: Colors.white, if (displayTime == '') {
height: dialogHeight, startTimer(setState);
width: dialogWidth, }
child: Center(
child: SingleChildScrollView( return Center(
child: Column( child: FractionallySizedBox(
crossAxisAlignment: CrossAxisAlignment.start, widthFactor: 0.9,
children: <Widget>[ child: Column(
Padding( crossAxisAlignment: CrossAxisAlignment.start,
padding: EdgeInsets.all(13), children: <Widget>[
child: Row( SizedBox(height: SizeConfig.getHeightMultiplier(height:dialogHeight) * 2,),
mainAxisAlignment: MainAxisAlignment
.spaceBetween, Row(
children: [ mainAxisAlignment: MainAxisAlignment
Padding( .spaceBetween,
child: Icon( children: [
type == AuthMethodTypes.SMS Icon(
? DoctorApp.verify_sms_1 type == AuthMethodTypes.SMS
: DoctorApp.verify_whtsapp, ? DoctorApp.verify_sms_1
size: dialogWidth * 0.13, : DoctorApp.verify_whtsapp,
), size: dialogWidth * 0.13,
padding: EdgeInsets.only(bottom: 20), ),
), Row(
Row( mainAxisAlignment: MainAxisAlignment.end,
mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[
Padding(
padding: EdgeInsets.only(
left: 10, right: 10, bottom: 20),
child: IconButton(
icon: Icon(Icons.close),
iconSize: dialogWidth * 0.13,
onPressed: () {
this.isClosed = true;
Navigator.pop(context);
this.onFailure();
},
))
],
)
])),
Padding(
padding: EdgeInsets.only(top: 5, right: 5),
child: AppText(
TranslationBase.of(context).verificationMessage +
' XXXXXX' +
mobileNo
.toString()
.substring(mobileNo.toString().length - 3),
textAlign: TextAlign.start,
fontWeight: FontWeight.bold,
fontSize: 14,
maxLines: 2,
)),
Form(
key: verifyAccountForm,
child: Padding(
padding: EdgeInsets.only(top: 20),
child: Directionality(
textDirection: TextDirection.ltr,
child: Row(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[ children: <Widget>[
Container( IconButton(
width: (dialogWidth / 4) - 20, icon: Icon(Icons.close),
height: 100, iconSize: dialogWidth * 0.13,
margin: EdgeInsets.all(5), onPressed: () {
child: TextFormField( this.isClosed = true;
textInputAction: TextInputAction Navigator.pop(context);
.next, this.onFailure();
style: buildTextStyle(), },
autofocus: true, )
maxLength: 1, ],
controller: digit1, )
textAlign: TextAlign.center, ]),
keyboardType: TextInputType.number, SizedBox(height: SizeConfig.getHeightMultiplier(height:dialogHeight) * 10,),
decoration: buildInputDecoration( Padding(
context), padding: EdgeInsets.only(top: 5, right: 5),
onSaved: (val) {}, child: AppText(
validator: validateCodeDigit, TranslationBase.of(context).verificationMessage +
onFieldSubmitted: (_) { ' XXXXXX' +
FocusScope.of(context) mobileNo
.requestFocus(focusD2); .toString()
}, .substring(mobileNo.toString().length - 3),
onChanged: (val) { textAlign: TextAlign.start,
if (val.length == 1) { fontWeight: FontWeight.bold,
FocusScope.of(context) fontSize: SizeConfig.getTextMultiplierBasedOnWidth(width: dialogWidth) * 3.5, //14,
.requestFocus(focusD2); maxLines: 2,
verifyAccountFormValue['digit1'] = )),
val.trim(); Form(
checkValue(); key: verifyAccountForm,
} child: Padding(
}, padding: EdgeInsets.only(top: SizeConfig.getHeightMultiplier(height:dialogHeight) * 2),
), child: Directionality(
), textDirection: TextDirection.ltr,
Container( child: Row(
width: dialogWidth / 4 - 30, mainAxisAlignment: MainAxisAlignment.start,
margin: EdgeInsets.all(5), children: <Widget>[
child: TextFormField( Container(
focusNode: focusD2, width: (dialogWidth / 4) - 20,
height: SizeConfig.getHeightMultiplier(height:dialogHeight) * 30,
margin: EdgeInsets.symmetric(vertical: 2,horizontal: 5),
child: TextFormField(
textInputAction: TextInputAction textInputAction: TextInputAction
.next, .next,
style: buildTextStyle(),
autofocus: true,
maxLength: 1, maxLength: 1,
controller: digit2, controller: digit1,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: buildTextStyle(), keyboardType: TextInputType.number,
keyboardType: TextInputType
.number,
decoration: buildInputDecoration( decoration: buildInputDecoration(
context), context),
onSaved: (val) {}, onSaved: (val) {},
validator: validateCodeDigit,
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context) FocusScope.of(context)
.requestFocus(focusD3); .requestFocus(focusD2);
}, },
onChanged: (val) { onChanged: (val) {
if (val.length == 1) { if (val.length == 1) {
FocusScope.of(context) FocusScope.of(context)
.requestFocus(focusD3); .requestFocus(focusD2);
verifyAccountFormValue['digit2'] = verifyAccountFormValue['digit1'] =
val.trim(); val.trim();
checkValue(); checkValue();
} }
}, },
validator: validateCodeDigit), ),
), ),
Container( Container(
margin: EdgeInsets.all(5), width: dialogWidth / 4 - 20,
width: dialogWidth / 4 - 30, height: SizeConfig.getHeightMultiplier(height:dialogHeight) * 30,
margin: EdgeInsets.symmetric(vertical: 2,horizontal: 5),
child: TextFormField( child: TextFormField(
focusNode: focusD3, focusNode: focusD2,
textInputAction: TextInputAction textInputAction: TextInputAction
.next, .next,
maxLength: 1, maxLength: 1,
controller: digit3, controller: digit2,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: buildTextStyle(), style: buildTextStyle(),
keyboardType: TextInputType keyboardType: TextInputType
.number, .number,
decoration: decoration: buildInputDecoration(
buildInputDecoration(context), context),
onSaved: (val) {}, onSaved: (val) {},
onFieldSubmitted: (_) { onFieldSubmitted: (_) {
FocusScope.of(context) FocusScope.of(context)
.requestFocus(focusD4); .requestFocus(focusD3);
}, },
onChanged: (val) { onChanged: (val) {
if (val.length == 1) { if (val.length == 1) {
FocusScope.of(context) FocusScope.of(context)
.requestFocus(focusD4); .requestFocus(focusD3);
verifyAccountFormValue['digit3'] = verifyAccountFormValue['digit2'] =
val.trim(); val.trim();
checkValue(); checkValue();
} }
}, },
validator: validateCodeDigit)), validator: validateCodeDigit),
Container( ),
margin: EdgeInsets.all(5), Container(
width: dialogWidth / 4 - 30, margin: EdgeInsets.symmetric(vertical: 2,horizontal: 5),
child: TextFormField( width: dialogWidth / 4 - 20,
focusNode: focusD4, height: SizeConfig.getHeightMultiplier(height:dialogHeight) * 30,
maxLength: 1, child: TextFormField(
textAlign: TextAlign.center, focusNode: focusD3,
style: buildTextStyle(), textInputAction: TextInputAction
controller: digit4, .next,
keyboardType: TextInputType maxLength: 1,
.number, controller: digit3,
decoration: textAlign: TextAlign.center,
buildInputDecoration(context), style: buildTextStyle(),
onFieldSubmitted: (_) { keyboardType: TextInputType
FocusScope.of(context) .number,
.requestFocus(focusD4); decoration:
}, buildInputDecoration(context),
onChanged: (val) { onSaved: (val) {},
if (val.length == 1) { onFieldSubmitted: (_) {
verifyAccountFormValue['digit4'] = FocusScope.of(context)
val.trim(); .requestFocus(focusD4);
checkValue(); },
} onChanged: (val) {
}, if (val.length == 1) {
validator: validateCodeDigit)), FocusScope.of(context)
], .requestFocus(focusD4);
)), verifyAccountFormValue['digit3'] =
val.trim();
checkValue();
}
},
validator: validateCodeDigit)),
Container(
margin: EdgeInsets.symmetric(vertical: 2,horizontal: 5),
width: dialogWidth / 4 - 20,
height: SizeConfig.getHeightMultiplier(height:dialogHeight) * 30,
child: TextFormField(
focusNode: focusD4,
maxLength: 1,
textAlign: TextAlign.center,
style: buildTextStyle(),
controller: digit4,
keyboardType: TextInputType
.number,
decoration:
buildInputDecoration(context),
onFieldSubmitted: (_) {
FocusScope.of(context)
.requestFocus(focusD4);
},
onChanged: (val) {
if (val.length == 1) {
verifyAccountFormValue['digit4'] =
val.trim();
checkValue();
}
},
validator: validateCodeDigit)),
],
)),
),
), ),
), Column(
Padding(
padding: const EdgeInsets.all(12.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
@ -256,7 +258,7 @@ class SMSOTP {
TranslationBase.of(context).validationMessage + TranslationBase.of(context).validationMessage +
' ', ' ',
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 14, fontSize: SizeConfig.getTextMultiplierBasedOnWidth(width: dialogWidth) * 3.5,
), ),
AppText( AppText(
displayTime, displayTime,
@ -265,19 +267,27 @@ class SMSOTP {
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 14, fontSize: 14,
) )
]), ])
) ],
], ),
))), ),
); );
}),
); })
});
),
),
),
),
),
);
} }
TextStyle buildTextStyle() { TextStyle buildTextStyle() {
return TextStyle( return TextStyle(
fontSize: SizeConfig.textMultiplier * 3, fontSize: SizeConfig.textMultiplier * 2.5,
); );
} }

Loading…
Cancel
Save