@ -2,9 +2,11 @@ import 'package:diplomaticquarterapp/core/viewModels/dashboard_view_model.dart';
import ' package:diplomaticquarterapp/core/viewModels/project_view_model.dart ' ;
import ' package:diplomaticquarterapp/pages/base/base_view.dart ' ;
import ' package:diplomaticquarterapp/services/authentication/auth_provider.dart ' ;
import ' package:diplomaticquarterapp/theme/colors.dart ' ;
import ' package:diplomaticquarterapp/uitl/app_toast.dart ' ;
import ' package:diplomaticquarterapp/uitl/gif_loader_dialog_utils.dart ' ;
import ' package:diplomaticquarterapp/uitl/translations_delegate_base.dart ' ;
import ' package:diplomaticquarterapp/uitl/utils_new.dart ' ;
import ' package:diplomaticquarterapp/widgets/buttons/defaultButton.dart ' ;
import ' package:diplomaticquarterapp/widgets/text/app_texts_widget.dart ' ;
import ' package:flutter/cupertino.dart ' ;
@ -16,8 +18,7 @@ class ProfileSettings extends StatefulWidget {
_ProfileSettings createState ( ) = > _ProfileSettings ( ) ;
}
class _ProfileSettings extends State < ProfileSettings >
with TickerProviderStateMixin {
class _ProfileSettings extends State < ProfileSettings > with TickerProviderStateMixin {
bool smsAlert = true ;
bool emailAlert = true ;
int language = 1 ;
@ -25,6 +26,7 @@ class _ProfileSettings extends State<ProfileSettings>
TextEditingController emergencyContact = new TextEditingController ( ) ;
TextEditingController emailController = new TextEditingController ( ) ;
TextEditingController emergencyContactName = new TextEditingController ( ) ;
@ override
void initState ( ) {
Future . delayed ( new Duration ( seconds: 0 ) , ( ) {
@ -37,199 +39,300 @@ class _ProfileSettings extends State<ProfileSettings>
Widget build ( BuildContext context ) {
return BaseView < DashboardViewModel > (
onModelReady: ( model ) = > { } ,
builder: ( _ , model , wi ) = > Container (
child: model . user ! = null
? ListView ( scrollDirection: Axis . vertical , children: < Widget > [
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . all ( 15 ) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
children: [
AppText (
TranslationBase . of ( context ) . fileNo ,
color: Colors . black ,
) ,
AppText (
model . user . patientID . toString ( ) ,
color: Colors . black ,
) ,
] ,
onModelReady: ( model ) = > { } ,
builder: ( _ , model , wi ) = > Container (
child: model . user ! = null
? Column (
children: [
Expanded (
child: SingleChildScrollView (
child: Padding (
padding: const EdgeInsets . all ( 21.0 ) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: < Widget > [
Card (
shape: cardRadius ( 8 ) ,
margin: EdgeInsets . zero ,
elevation: 3 ,
child: Padding (
padding: const EdgeInsets . all ( 12.0 ) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . start ,
children: [
Text (
TranslationBase . of ( context ) . fileNo + " : " ,
style: TextStyle (
fontSize: 16 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.64 ,
) ,
) ,
Text (
model . user . patientID . toString ( ) ,
style: TextStyle (
fontSize: 16 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.64 ,
) ,
) ,
] ,
) ,
) ,
) ,
mHeight ( 12 ) ,
Text (
TranslationBase . of ( context ) . languageSetting ,
style: TextStyle (
fontSize: 16 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.64 ,
) ,
) ,
Text (
TranslationBase . of ( context ) . selectLanguage ,
style: TextStyle (
fontSize: 12 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.48 ,
) ,
) ,
Row (
children: [
Expanded (
child: Row (
children: [
new Radio (
value: 2 ,
groupValue: language ,
onChanged: ( value ) {
setState ( ( ) {
language = value ;
} ) ;
} ,
) ,
Text (
TranslationBase . of ( context ) . english ,
style: TextStyle (
fontSize: 12 ,
letterSpacing: - 0.48 ,
) ,
) ,
] ,
) ,
) ,
Expanded (
child: Row (
children: [
Radio (
value: 1 ,
groupValue: language ,
onChanged: ( value ) {
setState ( ( ) {
language = value ;
} ) ;
} ,
) ,
Text (
TranslationBase . of ( context ) . arabic ,
style: TextStyle (
fontSize: 12 ,
letterSpacing: - 0.48 ,
) ,
) ,
] ,
) ,
) ,
] ,
) ,
mHeight ( 12 ) ,
Text (
TranslationBase . of ( context ) . alert ,
style: TextStyle (
fontSize: 16 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.64 ,
) ,
) ,
Text (
TranslationBase . of ( context ) . recAlert ,
style: TextStyle (
fontSize: 12 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.48 ,
) ,
) ,
Row (
children: [
Checkbox (
value: emailAlert ,
onChanged: ( value ) {
setState ( ( ) {
emailAlert = value ;
} ) ;
} ,
activeColor: CustomColors . accentColor ,
) ,
Text (
TranslationBase . of ( context ) . emailAlert ,
style: TextStyle (
fontSize: 12 ,
letterSpacing: - 0.48 ,
) ,
) ,
] ,
) ,
Row (
children: [
Checkbox (
value: smsAlert ,
onChanged: ( value ) {
setState ( ( ) {
smsAlert = value ;
} ) ;
} ,
activeColor: CustomColors . accentColor ,
) ,
Text (
TranslationBase . of ( context ) . smsAlert ,
style: TextStyle (
fontSize: 12 ,
letterSpacing: - 0.48 ,
) ,
) ,
] ,
) ,
mHeight ( 16 ) ,
Text (
TranslationBase . of ( context ) . contactInfo ,
style: TextStyle (
fontSize: 16 ,
fontWeight: FontWeight . w600 ,
letterSpacing: - 0.64 ,
) ,
) ,
mHeight ( 12 ) ,
inputWidget ( TranslationBase . of ( context ) . email , " " , emailController ) ,
mHeight ( 8 ) ,
inputWidget ( TranslationBase . of ( context ) . emergencyName , " " , emergencyContactName ) ,
mHeight ( 8 ) ,
inputWidget ( TranslationBase . of ( context ) . emergencyContact , " " , emergencyContact ) ,
mHeight ( 8 ) ,
] ,
) ,
) ,
) ,
SizedBox (
height: 1 ,
width: MediaQuery . of ( context ) . size . width ,
child: Container (
color: Colors . grey [ 300 ] ,
) ,
Container (
width: double . infinity ,
child: Card (
margin: EdgeInsets . zero ,
elevation: 20 ,
child: Padding (
padding: const EdgeInsets . only ( left: 16 , right: 16 , bottom: 16 , top: 16 ) ,
child: DefaultButton (
TranslationBase . of ( context ) . save ,
( ) {
saveSettings ( ) ;
} ,
) ,
) ,
) ,
Padding (
child: AppText (
TranslationBase . of ( context ) . languageSetting ,
fontWeight: FontWeight . bold ) ,
padding: EdgeInsets . all ( 10 ) ,
) ,
] ,
)
: Center (
child: AppText ( TranslationBase . of ( context ) . loginToUseService ) ,
) ,
) ,
) ;
}
Widget inputWidget ( String _labelText , String _hintText , TextEditingController _controller , { String prefix , bool isEnable = true , bool hasSelection = false } ) {
return Container (
padding: EdgeInsets . only ( left: 16 , right: 16 , bottom: 15 , top: 15 ) ,
alignment: Alignment . center ,
decoration: BoxDecoration (
borderRadius: BorderRadius . circular ( 15 ) ,
color: Colors . white ,
border: Border . all (
color: Color ( 0xffefefef ) ,
width: 1 ,
) ,
) ,
child: InkWell (
onTap: hasSelection ? ( ) { } : null ,
child: Row (
children: [
Expanded (
child: Column (
mainAxisSize: MainAxisSize . min ,
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
Text (
_labelText ,
style: TextStyle (
fontSize: 11 ,
fontWeight: FontWeight . w600 ,
color: Color ( 0xff2B353E ) ,
letterSpacing: - 0.44 ,
) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
children: [
AppText ( TranslationBase . of ( context ) . english ) ,
new Radio (
value: 2 ,
groupValue: language ,
onChanged: ( value ) {
setState ( ( ) {
language = value ;
} ) ;
} ,
)
] ,
) ) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
children: [
AppText ( TranslationBase . of ( context ) . arabic ) ,
new Radio (
value: 1 ,
groupValue: language ,
onChanged: ( value ) {
setState ( ( ) {
language = value ;
} ) ;
} ,
)
] ,
) ) ,
Padding (
child: AppText ( TranslationBase . of ( context ) . alert ) ,
padding: EdgeInsets . all ( 10 ) ,
) ,
TextField (
enabled: isEnable ,
scrollPadding: EdgeInsets . zero ,
keyboardType: TextInputType . number ,
controller: _controller ,
/ / onChanged: ( value ) = > { validateForm ( ) } ,
style: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff2B353E ) ,
letterSpacing: - 0.44 ,
) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
children: [
AppText ( TranslationBase . of ( context ) . emailAlert ) ,
Switch (
value: emailAlert ,
onChanged: ( value ) {
setState ( ( ) {
emailAlert = value ;
} ) ;
} ,
activeTrackColor: Colors . lightGreenAccent ,
activeColor: Colors . green ,
)
] ,
) ) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Row (
mainAxisAlignment: MainAxisAlignment . spaceBetween ,
children: [
AppText ( TranslationBase . of ( context ) . smsAlert ) ,
Switch (
value: smsAlert ,
onChanged: ( value ) {
setState ( ( ) {
smsAlert = value ;
} ) ;
} ,
activeTrackColor: Colors . lightGreenAccent ,
activeColor: Colors . green ,
)
] ,
) ) ,
Padding (
child: AppText ( TranslationBase . of ( context ) . contactInfo ) ,
padding: EdgeInsets . all ( 10 ) ,
) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
AppText ( TranslationBase . of ( context ) . email ) ,
TextField (
controller: emailController ,
decoration: InputDecoration (
suffixIcon: Icon ( Icons . edit ) ,
) )
] ,
) ) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
AppText ( TranslationBase . of ( context ) . emergencyName ) ,
TextField (
controller: emergencyContactName ,
decoration: InputDecoration (
suffixIcon: Icon ( Icons . edit ) ,
) )
] ,
) ) ,
Container (
color: Theme . of ( context ) . textTheme . headline2 . color ,
padding: EdgeInsets . only (
top: 0 , left: 10 , right: 10 , bottom: 0 ) ,
child: Column (
crossAxisAlignment: CrossAxisAlignment . start ,
children: [
AppText (
TranslationBase . of ( context ) . emergencyContact ) ,
TextField (
controller: emergencyContact ,
decoration: InputDecoration (
suffixIcon: Icon ( Icons . edit ) ,
decoration: InputDecoration (
isDense: true ,
hintText: _hintText ,
hintStyle: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w400 ,
color: Color ( 0xff575757 ) ,
letterSpacing: - 0.56 ,
) ,
prefixIconConstraints: BoxConstraints ( minWidth: 50 ) ,
prefixIcon: prefix = = null
? null
: Text (
" + " + prefix ,
style: TextStyle (
fontSize: 14 ,
height: 21 / 14 ,
fontWeight: FontWeight . w500 ,
color: Color ( 0xff2E303A ) ,
letterSpacing: - 0.56 ,
) ,
)
] ,
) ) ,
Container (
padding: EdgeInsets . all ( 10 ) ,
child: Row (
children: < Widget > [
Expanded (
child: DefaultButton (
TranslationBase . of ( context ) . save ,
( ) {
saveSettings ( ) ;
} ,
) ) ,
] ,
) )
] )
: Center (
child:
AppText ( TranslationBase . of ( context ) . loginToUseService ) ,
) ) ) ;
) ,
contentPadding: EdgeInsets . zero ,
border: InputBorder . none ,
focusedBorder: InputBorder . none ,
enabledBorder: InputBorder . none ,
) ,
) ,
] ,
) ,
) ,
if ( hasSelection ) Icon ( Icons . keyboard_arrow_down_outlined ) ,
] ,
) ,
) ,
) ;
}
getSettings ( context ) {
GifLoaderDialogUtils . showMyDialog ( context ) ;
authService . getSettings ( ) . then ( ( result ) = > {
GifLoaderDialogUtils . hideDialog ( context ) ,
setValue ( result [ " PateintInfoForUpdateList " ] [ 0 ] )
} ) ;
authService . getSettings ( ) . then ( ( result ) = > { GifLoaderDialogUtils . hideDialog ( context ) , setValue ( result [ " PateintInfoForUpdateList " ] [ 0 ] ) } ) ;
}
setValue ( value ) {
@ -252,10 +355,6 @@ class _ProfileSettings extends State<ProfileSettings>
request [ " IsEmailAlertRequired " ] = this . emailAlert ;
request [ " IsSMSAlertRequired " ] = this . smsAlert ;
request [ " PreferredLanguage " ] = this . language . toString ( ) ;
authService . saveSettings ( request ) . then ( ( result ) = > {
AppToast . showSuccessToast (
message: TranslationBase . of ( context ) . profileUpdate ) ,
GifLoaderDialogUtils . hideDialog ( context )
} ) ;
authService . saveSettings ( request ) . then ( ( result ) = > { AppToast . showSuccessToast ( message: TranslationBase . of ( context ) . profileUpdate ) , GifLoaderDialogUtils . hideDialog ( context ) } ) ;
}
}