Merge branch 'doctor-app-design' into 'development'

Doctor app design

See merge request Cloud_Solution/doctor_app_flutter!913
merge-requests/914/merge
Elham Ali 3 years ago
commit 2ff5fbad7c

@ -12,9 +12,8 @@ class SizeConfig {
static double textMultiplier; static double textMultiplier;
static double imageSizeMultiplier; static double imageSizeMultiplier;
static double heightMultiplier; static double heightMultiplier;
static double widthMultiplier;
static bool isPortrait = true; static bool isPortrait = true;
static double widthMultiplier;
static bool isMobilePortrait = false; static bool isMobilePortrait = false;
static bool isMobile = false; static bool isMobile = false;
static bool isHeightShort = false; static bool isHeightShort = false;
@ -75,8 +74,6 @@ class SizeConfig {
print('widthMultiplier $widthMultiplier'); print('widthMultiplier $widthMultiplier');
print('isPortrait $isPortrait'); print('isPortrait $isPortrait');
print('isMobilePortrait $isMobilePortrait'); print('isMobilePortrait $isMobilePortrait');
} }
static getTextMultiplierBasedOnWidth({double width}) { static getTextMultiplierBasedOnWidth({double width}) {
@ -102,5 +99,4 @@ class SizeConfig {
} }
return heightMultiplier; return heightMultiplier;
} }
} }

@ -36,7 +36,8 @@ class MyApp extends StatelessWidget {
SizeConfig().init(constraints, orientation); SizeConfig().init(constraints, orientation);
return MultiProvider( return MultiProvider(
providers: [ providers: [
ChangeNotifierProvider<AuthenticationViewModel>(create: (context) => AuthenticationViewModel()), ChangeNotifierProvider<AuthenticationViewModel>(
create: (context) => AuthenticationViewModel()),
ChangeNotifierProvider<ProjectViewModel>( ChangeNotifierProvider<ProjectViewModel>(
create: (context) => ProjectViewModel(), create: (context) => ProjectViewModel(),
), ),
@ -67,7 +68,7 @@ class MyApp extends StatelessWidget {
theme: ThemeData( theme: ThemeData(
primarySwatch: Colors.grey, primarySwatch: Colors.grey,
primaryColor: Colors.grey, primaryColor: Colors.grey,
buttonColor: HexColor('#B8382C'), buttonColor: HexColor('#D02127'),
fontFamily: 'Poppins', fontFamily: 'Poppins',
dividerColor: Colors.grey[350], dividerColor: Colors.grey[350],
backgroundColor: Color.fromRGBO(255, 255, 255, 1), backgroundColor: Color.fromRGBO(255, 255, 255, 1),

@ -16,7 +16,6 @@ import 'package:provider/provider.dart';
import '../../widgets/shared/app_scaffold_widget.dart'; import '../../widgets/shared/app_scaffold_widget.dart';
class LoginScreen extends StatefulWidget { class LoginScreen extends StatefulWidget {
@override @override
_LoginScreenState createState() => _LoginScreenState(); _LoginScreenState createState() => _LoginScreenState();
@ -55,14 +54,11 @@ class _LoginScreenState extends State<LoginScreen> {
children: <Widget>[ children: <Widget>[
//TODO Use App Text rather than text //TODO Use App Text rather than text
Container( Container(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment crossAxisAlignment: CrossAxisAlignment.start,
.start,
children: <Widget>[ children: <Widget>[
Column( Column(
crossAxisAlignment: CrossAxisAlignment crossAxisAlignment: CrossAxisAlignment.start,
.start,
children: <Widget>[ children: <Widget>[
SizedBox( SizedBox(
height: 30, height: 30,
@ -70,49 +66,38 @@ class _LoginScreenState extends State<LoginScreen> {
], ],
), ),
Column( Column(
crossAxisAlignment: CrossAxisAlignment crossAxisAlignment: CrossAxisAlignment.start,
.start, children: [ children: [
SizedBox( SizedBox(
height: 10, height: 10,
), ),
Text( Text(
TranslationBase TranslationBase.of(context).welcomeTo,
.of(context)
.welcomeTo,
style: TextStyle( style: TextStyle(
fontSize: 16, fontSize: 16,
fontWeight: FontWeight fontWeight: FontWeight.w600,
.w600,
fontFamily: 'Poppins'), fontFamily: 'Poppins'),
), ),
Text( Text(
TranslationBase TranslationBase.of(context)
.of(context)
.drSulaimanAlHabib, .drSulaimanAlHabib,
style: TextStyle( style: TextStyle(
color:Color(0xFF2B353E), color: Color(0xFF2B353E),
fontWeight: FontWeight fontWeight: FontWeight.bold,
.bold, fontSize: SizeConfig.isMobile
fontSize: SizeConfig
.isMobile
? 24 ? 24
: SizeConfig : SizeConfig.realScreenWidth *
.realScreenWidth *
0.029, 0.029,
fontFamily: 'Poppins'), fontFamily: 'Poppins'),
), ),
Text( Text(
"Doctor App", "Doctor App",
style: TextStyle( style: TextStyle(
fontSize: fontSize: SizeConfig.isMobile
SizeConfig.isMobile
? 16 ? 16
: SizeConfig : SizeConfig.realScreenWidth *
.realScreenWidth *
0.030, 0.030,
fontWeight: FontWeight fontWeight: FontWeight.w600,
.w600,
color: Color(0xFFD02127)), color: Color(0xFFD02127)),
), ),
]), ]),
@ -124,79 +109,69 @@ class _LoginScreenState extends State<LoginScreen> {
Form( Form(
key: loginFormKey, key: loginFormKey,
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment mainAxisAlignment: MainAxisAlignment.spaceBetween,
.spaceBetween,
children: <Widget>[ children: <Widget>[
Container( Container(
width: SizeConfig width: SizeConfig.realScreenWidth * 0.90,
.realScreenWidth * 0.90, height: SizeConfig.realScreenHeight * 0.65,
height: SizeConfig child: Column(
.realScreenHeight * 0.65, crossAxisAlignment:
child: CrossAxisAlignment.start,
Column( children: [
crossAxisAlignment: CrossAxisAlignment
.start, children: [
buildSizedBox(), buildSizedBox(),
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context).enterId, hintText:
TranslationBase.of(context).enterId,
hasBorder: true, hasBorder: true,
controller: userIdController, controller: userIdController,
onChanged: (value){ onChanged: (value) {
if (value != null) if (value != null)
setState(() { setState(() {
authenticationViewModel.userInfo authenticationViewModel.userInfo
.userID = .userID = value.trim();
value
.trim();
}); });
}, },
), ),
buildSizedBox(), buildSizedBox(),
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context).enterPassword, hintText: TranslationBase.of(context)
.enterPassword,
hasBorder: true, hasBorder: true,
isSecure: true, isSecure: true,
controller: passwordController, controller: passwordController,
onChanged: (value){ onChanged: (value) {
if (value != null) if (value != null)
setState(() { setState(() {
authenticationViewModel.userInfo authenticationViewModel.userInfo
.password = .password = value.trim();
value
.trim();
}); });
// if(allowCallApi) { // if(allowCallApi) {
this.getProjects( this.getProjects(
authenticationViewModel.userInfo authenticationViewModel
.userID); .userInfo.userID);
// setState(() { // setState(() {
// allowCallApi = false; // allowCallApi = false;
// }); // });
// } // }
}, },
onClick: (){ onClick: () {},
},
), ),
buildSizedBox(), buildSizedBox(),
AppTextFieldCustom( AppTextFieldCustom(
hintText: TranslationBase.of(context).selectYourProject, hintText: TranslationBase.of(context)
.selectYourProject,
hasBorder: true, hasBorder: true,
controller: projectIdController, controller: projectIdController,
isTextFieldHasSuffix: true, isTextFieldHasSuffix: true,
enabled: false, enabled: false,
onClick: (){ onClick: () {
Helpers Helpers.showCupertinoPicker(
.showCupertinoPicker(
context, context,
projectsList, projectsList,
'facilityName', 'facilityName',
onSelectProject, onSelectProject,
authenticationViewModel); authenticationViewModel);
}, },
), ),
buildSizedBox() buildSizedBox()
]), ]),
@ -210,7 +185,6 @@ class _LoginScreenState extends State<LoginScreen> {
]), ]),
), ),
bottomSheet: Container( bottomSheet: Container(
height: 90, height: 90,
width: double.infinity, width: double.infinity,
child: Center( child: Center(
@ -220,26 +194,23 @@ class _LoginScreenState extends State<LoginScreen> {
mainAxisAlignment: MainAxisAlignment.end, mainAxisAlignment: MainAxisAlignment.end,
children: <Widget>[ children: <Widget>[
AppButton( AppButton(
title: TranslationBase title: TranslationBase.of(context).login,
.of(context)
.login,
color: Color(0xFFD02127), color: Color(0xFFD02127),
fontWeight: FontWeight.w700, fontWeight: FontWeight.w600,
disabled: authenticationViewModel.userInfo disabled: authenticationViewModel.userInfo.userID == null ||
.userID == null || authenticationViewModel.userInfo.password == null,
authenticationViewModel.userInfo
.password ==
null,
onPressed: () { onPressed: () {
login(context); login(context);
}, },
), ),
SizedBox(
SizedBox(height: 25,) height: 25,
)
], ],
), ),
), ),
),), ),
),
); );
} }
@ -249,7 +220,9 @@ class _LoginScreenState extends State<LoginScreen> {
); );
} }
login(context,) async { login(
context,
) async {
if (loginFormKey.currentState.validate()) { if (loginFormKey.currentState.validate()) {
loginFormKey.currentState.save(); loginFormKey.currentState.save();
GifLoaderDialogUtils.showMyDialog(context); GifLoaderDialogUtils.showMyDialog(context);
@ -259,7 +232,7 @@ class _LoginScreenState extends State<LoginScreen> {
Helpers.showErrorToast(authenticationViewModel.error); Helpers.showErrorToast(authenticationViewModel.error);
} else { } else {
GifLoaderDialogUtils.hideDialog(context); GifLoaderDialogUtils.hideDialog(context);
authenticationViewModel.setUnverified(true,isFromLogin: true); authenticationViewModel.setUnverified(true, isFromLogin: true);
// Navigator.of(context).pushReplacement( // Navigator.of(context).pushReplacement(
// MaterialPageRoute( // MaterialPageRoute(
// builder: (BuildContext context) => // builder: (BuildContext context) =>
@ -275,22 +248,25 @@ class _LoginScreenState extends State<LoginScreen> {
onSelectProject(index) { onSelectProject(index) {
setState(() { setState(() {
authenticationViewModel.userInfo.projectID = projectsList[index].facilityId; authenticationViewModel.userInfo.projectID =
projectsList[index].facilityId;
projectIdController.text = projectsList[index].facilityName; projectIdController.text = projectsList[index].facilityName;
}); });
primaryFocus.unfocus(); primaryFocus.unfocus();
} }
String memberID ="";
getProjects(memberID)async { String memberID = "";
getProjects(memberID) async {
if (memberID != null && memberID != '') { if (memberID != null && memberID != '') {
if (this.memberID !=memberID) { if (this.memberID != memberID) {
this.memberID = memberID; this.memberID = memberID;
await authenticationViewModel.getHospitalsList(memberID); await authenticationViewModel.getHospitalsList(memberID);
if(authenticationViewModel.state == ViewState.Idle) { if (authenticationViewModel.state == ViewState.Idle) {
projectsList = authenticationViewModel.hospitals; projectsList = authenticationViewModel.hospitals;
setState(() { setState(() {
authenticationViewModel.userInfo.projectID = projectsList[0].facilityId; authenticationViewModel.userInfo.projectID =
projectsList[0].facilityId;
projectIdController.text = projectsList[0].facilityName; projectIdController.text = projectsList[0].facilityName;
}); });
} }

@ -29,7 +29,7 @@ class PrescriptionInPatientWidget extends StatelessWidget {
padding: EdgeInsets.all(40), padding: EdgeInsets.all(40),
decoration: BoxDecoration( decoration: BoxDecoration(
border: border:
Border.all(color: HexColor('#B8382C'), width: 4), Border.all(color: HexColor('#D02127'), width: 4),
borderRadius: BorderRadius.all(Radius.circular(100))), borderRadius: BorderRadius.all(Radius.circular(100))),
child: IconButton( child: IconButton(
icon: Icon( icon: Icon(

@ -1,3 +1,5 @@
import 'dart:ui';
import 'package:doctor_app_flutter/config/size_config.dart'; import 'package:doctor_app_flutter/config/size_config.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -54,10 +56,13 @@ class _AppButtonState extends State<AppButton> {
// height: MediaQuery.of(context).size.height * 0.075, // height: MediaQuery.of(context).size.height * 0.075,
height: widget.height, height: widget.height,
child: IgnorePointer( child: IgnorePointer(
ignoring: widget.loading ||widget.disabled, ignoring: widget.loading || widget.disabled,
child: RawMaterialButton( child: RawMaterialButton(
fillColor: widget.disabled fillColor: widget.disabled
? Colors.grey : widget.color != null ? widget.color : HexColor("#B8382C"), ? Colors.grey
: widget.color != null
? widget.color
: HexColor("#D02127"),
splashColor: widget.color, splashColor: widget.color,
child: Padding( child: Padding(
padding: (widget.hPadding > 0 || widget.vPadding > 0) padding: (widget.hPadding > 0 || widget.vPadding > 0)
@ -103,18 +108,21 @@ class _AppButtonState extends State<AppButton> {
widget.title, widget.title,
color: widget.fontColor, color: widget.fontColor,
fontSize: SizeConfig.textMultiplier * widget.fontSize, fontSize: SizeConfig.textMultiplier * widget.fontSize,
fontWeight: widget.fontWeight, fontWeight: FontWeight.w600,
letterSpacing: -0.48,
), ),
), ),
], ],
), ),
), ),
onPressed: widget.disabled ? (){} : widget.onPressed, onPressed: widget.disabled ? () {} : widget.onPressed,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(
side: BorderSide( side: BorderSide(
color: color: widget.hasBorder
widget.hasBorder ? widget.borderColor : widget.disabled ? widget.borderColor
? Colors.grey : widget.color ?? Color(0xFFB8382C), : widget.disabled
? Colors.grey
: widget.color ?? Color(0xFFB8382C),
width: 0.8, width: 0.8,
), ),
borderRadius: BorderRadius.all(Radius.circular(widget.radius))), borderRadius: BorderRadius.all(Radius.circular(widget.radius))),

@ -102,7 +102,8 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
Color(0Xffffffff), Color(0Xffffffff),
widget.validationError == null widget.validationError == null
? Color(0xFFEFEFEF) ? Color(0xFFEFEFEF)
: Colors.red.shade700) : Colors.red.shade700,
)
: null, : null,
padding: padding:
EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0), EdgeInsets.only(top: 4.0, bottom: 4.0, left: 8.0, right: 8.0),
@ -116,8 +117,8 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
padding: widget.dropDownText == null padding: widget.dropDownText == null
? widget.isSearchTextField ? widget.isSearchTextField
? EdgeInsets.only(top: 10) ? EdgeInsets.only(top: 10)
: EdgeInsets.symmetric(vertical: 0) : EdgeInsets.only(top: 7.5)
: EdgeInsets.symmetric(vertical: 0), // 8.0 : EdgeInsets.only(top: 0), // 8.0
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
@ -130,10 +131,13 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
// marginTop: widget.hasHintmargin ? 0 : 30, // marginTop: widget.hasHintmargin ? 0 : 30,
color: Color(0xFF2E303A), color: Color(0xFF2E303A),
fontSize: widget.isPrscription == false fontSize: widget.isPrscription == false
? SizeConfig.getHeightMultiplier() * ? 11.0
(SizeConfig.isWidthLarge ? 1.1 : 1.3) // SizeConfig.getHeightMultiplier() *
// (SizeConfig.isWidthLarge ? 1.1 : 1.3)
: 0, : 0,
fontWeight: FontWeight.w700, fontWeight: FontWeight.w500,
letterSpacing: -0.44,
fontFamily: 'Poppins',
), ),
widget.dropDownText == null widget.dropDownText == null
? Container( ? Container(
@ -146,14 +150,17 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
? TextAlign.right ? TextAlign.right
: TextAlign.left, : TextAlign.left,
focusNode: _focusNode, focusNode: _focusNode,
textAlignVertical: TextAlignVertical.center, textAlignVertical: TextAlignVertical.top,
decoration: TextFieldsUtils decoration: TextFieldsUtils
.textFieldSelectorDecoration( .textFieldSelectorDecoration(
widget.hintText, null, true), widget.hintText, null, true),
style: TextStyle( style: TextStyle(
fontSize: SizeConfig.textMultiplier * 1.7, fontSize:
14.0, //SizeConfig.textMultiplier * 1.7,
fontFamily: 'Poppins', fontFamily: 'Poppins',
color: Color(0xFF575757), color: Color(0xFF575757),
fontWeight: FontWeight.w400,
letterSpacing: -0.56,
), ),
controller: widget.controller, controller: widget.controller,
keyboardType: widget.inputType ?? keyboardType: widget.inputType ??
@ -202,7 +209,8 @@ class _AppTextFieldCustomState extends State<AppTextFieldCustom> {
Icons.keyboard_arrow_down, Icons.keyboard_arrow_down,
color: widget.dropDownColor != null color: widget.dropDownColor != null
? widget.dropDownColor ? widget.dropDownColor
: Colors.black, : Color(0xff2E303A),
size: 12.0,
), ),
) )
: Container(), : Container(),

@ -1,10 +1,9 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
class TextFieldsUtils{ class TextFieldsUtils {
static BoxDecoration containerBorderDecoration( static BoxDecoration containerBorderDecoration(
Color containerColor, Color borderColor, Color containerColor, Color borderColor,
{double borderWidth = -1, double borderRadius = 12}) { {double borderWidth = -1, double borderRadius = 10.0}) {
return BoxDecoration( return BoxDecoration(
color: containerColor, color: containerColor,
shape: BoxShape.rectangle, shape: BoxShape.rectangle,
@ -46,11 +45,13 @@ class TextFieldsUtils{
borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0), borderSide: BorderSide(color: Color(0xFFCCCCCC), width: 2.0),
borderRadius: BorderRadius.circular(8), borderRadius: BorderRadius.circular(8),
),*/ ),*/
hintText: selectedText != null ? selectedText : hintText??"", hintText: selectedText != null ? selectedText : hintText ?? "",
suffixIcon: Icon(suffixIcon??null, color: Colors.grey.shade600,), suffixIcon: Icon(
suffixIcon ?? null,
color: Colors.grey.shade600,
),
hintStyle: TextStyle( hintStyle: TextStyle(
fontSize: 14, fontSize: 11,
color: Colors.grey.shade600, color: Colors.grey.shade600,
), ),
); );

Loading…
Cancel
Save