import '/backend/api_requests/api_calls.dart'; import '/components/alert_box_widget.dart'; import '/components/appbar_widget.dart'; import '/components/nav_bar1_widget.dart'; import '/flutterlib/flutter_button_tabbar.dart'; import '/flutterlib/flutter_theme.dart'; import '/flutterlib/flutter_util.dart'; import '/flutterlib/flutter_widgets.dart'; import 'package:aligned_dialog/aligned_dialog.dart'; import 'package:expandable/expandable.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; import 'setting_model.dart'; export 'setting_model.dart'; class SettingWidget extends StatefulWidget { const SettingWidget({Key? key}) : super(key: key); @override _SettingWidgetState createState() => _SettingWidgetState(); } class _SettingWidgetState extends State with TickerProviderStateMixin { late SettingModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => SettingModel()); _model.tabBarController = TabController( vsync: this, length: 3, initialIndex: 0, )..addListener(() => setState(() {})); _model.passwordController ??= TextEditingController(); _model.passwordFocusNode ??= FocusNode(); _model.newPasswordController ??= TextEditingController(); _model.newPasswordFocusNode ??= FocusNode(); _model.newPasswordConfirmationController ??= TextEditingController(); _model.newPasswordConfirmationFocusNode ??= FocusNode(); _model.expandableController = ExpandableController(initialExpanded: false); } @override void dispose() { _model.dispose(); super.dispose(); } @override Widget build(BuildContext context) { if (isiOS) { SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle( statusBarBrightness: Theme.of(context).brightness, systemStatusBarContrastEnforced: true, ), ); } context.watch(); return GestureDetector( onTap: () => _model.unfocusNode.canRequestFocus ? FocusScope.of(context).requestFocus(_model.unfocusNode) : FocusScope.of(context).unfocus(), child: Scaffold( key: scaffoldKey, backgroundColor: Color(0xFFEBEBE4), drawer: Container( width: 180.0, child: Drawer( elevation: 16.0, child: Container( width: 100.0, height: 100.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 80.0, 0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Container( width: 180.0, height: 61.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('account'); }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 15.0, 8.0, 0.0, 0.0), child: Container( width: 40.0, height: 40.0, decoration: BoxDecoration( color: FlutterTheme.of(context) .secondaryBackground, shape: BoxShape.circle, ), child: Align( alignment: AlignmentDirectional(0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/company.svg', width: 30.0, height: 30.0, fit: BoxFit.contain, ), ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 8.0, 8.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'q59z2tlb' /* ABC Ltd */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 16.0, ), ), ), ], ), ), ), ], ), ), Container( width: 180.0, height: 61.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('account1'); }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/Group_2640.svg', width: 0.0, height: 0.0, fit: BoxFit.contain, ), ), Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 5.0, 0.0, 0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: Image.asset( 'assets/images/account.png', width: 50.0, height: 50.0, fit: BoxFit.cover, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 8.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 's5k5vk4x' /* Account */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 16.0, ), ), ), ], ), ), ), Container( width: 180.0, height: 61.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('tnc'); }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/document.svg', width: 0.0, height: 0.0, fit: BoxFit.contain, ), ), Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.0, 0.0, 0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/tnc.svg', width: 30.0, height: 30.0, fit: BoxFit.cover, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 17.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'jfy78cde' /* T&C */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 16.0, ), ), ), ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/Group_2640.svg', width: 0.0, height: 0.0, fit: BoxFit.fitHeight, ), ), ], ), ), ), Container( width: 180.0, height: 61.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('policy'); }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/Group_2640.svg', width: 0.0, height: 0.0, fit: BoxFit.contain, ), ), Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.0, 0.0, 0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/pp.svg', width: 30.0, height: 30.0, fit: BoxFit.cover, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'h43yxzhw' /* Privacy Policy */ , ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 16.0, ), ), ), ], ), ), ), Container( width: 180.0, height: 61.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('language'); }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/Group_2640.svg', width: 0.0, height: 0.0, fit: BoxFit.contain, ), ), Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.0, 0.0, 0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/language.svg', width: 30.0, height: 30.0, fit: BoxFit.contain, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 15.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( '6idrs4ts' /* Languages */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 16.0, ), ), ), ], ), ), ), Container( width: 180.0, height: 61.0, decoration: BoxDecoration( color: Color(0xFF009B9A), ), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('setting'); }, child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/Group_2640.svg', width: 0.0, height: 0.0, fit: BoxFit.contain, ), ), Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 16.0, 0.0, 0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/setting-2.svg', width: 30.0, height: 30.0, fit: BoxFit.contain, ), ), ), ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 15.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'c8mbiu18' /* Settings */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 16.0, ), ), ), ], ), ), ), ], ), ), ), ), appBar: PreferredSize( preferredSize: Size.fromHeight(0.0), child: AppBar( backgroundColor: Color(0xFFE7E36B), automaticallyImplyLeading: false, actions: [], centerTitle: false, elevation: 0.0, ), ), body: SafeArea( top: true, child: Stack( children: [ Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 16.0, 0.0, 0.0), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 8.0), child: Text( FFLocalizations.of(context).getText( 'kcp9qz5c' /* Setting */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Readex Pro', color: Color(0xFF364257), fontSize: 24.0, ), ), ), ), ], ), ), Expanded( child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 70.0, 0.0, 100.0), child: Column( children: [ Align( alignment: Alignment(0.0, 0), child: FlutterButtonTabBar( useToggleButtonStyle: true, labelStyle: FlutterTheme.of(context) .titleMedium .override( fontFamily: 'Readex Pro', fontSize: 16.0, ), unselectedLabelStyle: TextStyle(), labelColor: Color(0xFF364257), unselectedLabelColor: Colors.white, backgroundColor: Colors.white, unselectedBackgroundColor: Color(0xFF364257), borderColor: FlutterTheme.of(context).primary, unselectedBorderColor: FlutterTheme.of(context).alternate, borderWidth: 2.0, borderRadius: 0.0, elevation: 0.0, labelPadding: EdgeInsetsDirectional.fromSTEB( 0.0, 15.0, 0.0, 15.0), buttonMargin: EdgeInsetsDirectional.fromSTEB( 8.0, 0.0, 8.0, 0.0), padding: EdgeInsets.all(4.0), tabs: [ Tab( text: FFLocalizations.of(context).getText( 'kwaox8n8' /* Preferred Settings */ , ), icon: Icon( Icons.settings, ), ), Tab( text: FFLocalizations.of(context).getText( 'pmb9xr5y' /* Password */, ), icon: Icon( Icons.lock_outline, ), iconMargin: EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 0.0, 10.0), ), Tab( text: FFLocalizations.of(context).getText( 'e1i7j4am' /* Online Help */, ), icon: Icon( Icons.live_help_outlined, ), ), ], controller: _model.tabBarController, ), ), Expanded( child: TabBarView( controller: _model.tabBarController, physics: const NeverScrollableScrollPhysics(), children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 10.0, 0.0), child: Column( mainAxisSize: MainAxisSize.max, children: [ SwitchListTile.adaptive( value: _model .userPushNotificationValue ??= true, onChanged: (newValue) async { setState(() => _model.userPushNotificationValue = newValue!); }, title: Text( FFLocalizations.of(context).getText( 'sb1hpc09' /* Push notification */, ), style: FlutterTheme.of(context) .titleLarge .override( fontFamily: 'Outfit', fontSize: 24.0, fontWeight: FontWeight.w600, ), ), tileColor: FlutterTheme.of(context) .secondaryBackground, activeColor: Color(0xFF009B9A), activeTrackColor: FlutterTheme.of(context) .accent1, dense: false, controlAffinity: ListTileControlAffinity.trailing, ), SwitchListTile.adaptive( value: _model .userBookkeepingQueueValue ??= true, onChanged: (newValue) async { setState(() => _model.userBookkeepingQueueValue = newValue!); }, title: Text( FFLocalizations.of(context).getText( 'xl4k2cvl' /* Bookkeeping Queue Status */, ), style: FlutterTheme.of(context) .titleLarge .override( fontFamily: 'Outfit', fontSize: 16.0, ), ), tileColor: FlutterTheme.of(context) .secondaryBackground, activeColor: Color(0xFF009B9A), activeTrackColor: FlutterTheme.of(context) .accent1, dense: false, controlAffinity: ListTileControlAffinity.trailing, ), SwitchListTile.adaptive( value: _model .userCompanySecurityQueueValue ??= true, onChanged: (newValue) async { setState(() => _model .userCompanySecurityQueueValue = newValue!); }, title: Text( FFLocalizations.of(context).getText( '2ubzvp9s' /* Company Secretary Queue Status */, ), style: FlutterTheme.of(context) .titleLarge .override( fontFamily: 'Outfit', fontSize: 16.0, ), ), tileColor: FlutterTheme.of(context) .secondaryBackground, activeColor: Color(0xFF009B9A), activeTrackColor: FlutterTheme.of(context) .accent1, dense: false, controlAffinity: ListTileControlAffinity.trailing, ), SwitchListTile.adaptive( value: _model.userChatRoomValue ??= true, onChanged: (newValue) async { setState(() => _model .userChatRoomValue = newValue!); }, title: Text( FFLocalizations.of(context).getText( 'hhpmfint' /* Chat Room New Message */, ), style: FlutterTheme.of(context) .titleLarge .override( fontFamily: 'Outfit', fontSize: 16.0, ), ), tileColor: FlutterTheme.of(context) .secondaryBackground, activeColor: Color(0xFF009B9A), activeTrackColor: FlutterTheme.of(context) .accent1, dense: false, controlAffinity: ListTileControlAffinity.trailing, ), Container( width: 435.0, height: 100.0, decoration: BoxDecoration( color: FlutterTheme.of(context) .secondaryBackground, ), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 10.0, 0.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { _model.apiResulti93 = await NumstationGroup .getNotificationsSettingsCall .call(); if ((_model.apiResulti93 ?.succeeded ?? true)) { ScaffoldMessenger.of( context) .showSnackBar( SnackBar( content: Text( 'success', style: TextStyle( color: FlutterTheme .of(context) .primaryText, ), ), duration: Duration( milliseconds: 4000), backgroundColor: FlutterTheme.of( context) .secondary, ), ); } else { ScaffoldMessenger.of( context) .showSnackBar( SnackBar( content: Text( '123', style: TextStyle( color: FlutterTheme .of(context) .primaryText, ), ), duration: Duration( milliseconds: 4000), backgroundColor: FlutterTheme.of( context) .secondary, ), ); } setState(() {}); }, text: FFLocalizations.of(context) .getText( 'csj9eoiq' /* Save */, ), options: FFButtonOptions( width: 159.0, height: 50.0, padding: EdgeInsetsDirectional .fromSTEB( 24.0, 0.0, 24.0, 0.0), iconPadding: EdgeInsetsDirectional .fromSTEB(0.0, 0.0, 0.0, 0.0), color: Color(0xFF009B9A), textStyle: FlutterTheme.of( context) .titleSmall .override( fontFamily: 'Readex Pro', color: Colors.white, ), elevation: 3.0, borderSide: BorderSide( color: Colors.transparent, width: 1.0, ), borderRadius: BorderRadius.circular( 40.0), ), ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 0.0, 10.0, 0.0), child: FFButtonWidget( onPressed: () { print('Button pressed ...'); }, text: FFLocalizations.of(context) .getText( 'skdgd9f3' /* Reset */, ), options: FFButtonOptions( width: 159.0, height: 50.0, padding: EdgeInsetsDirectional .fromSTEB( 24.0, 0.0, 24.0, 0.0), iconPadding: EdgeInsetsDirectional .fromSTEB(0.0, 0.0, 0.0, 0.0), color: Color(0xFF9B0025), textStyle: FlutterTheme.of( context) .titleSmall .override( fontFamily: 'Readex Pro', color: Colors.white, ), elevation: 3.0, borderSide: BorderSide( color: Colors.transparent, width: 1.0, ), borderRadius: BorderRadius.circular( 40.0), ), ), ), ], ), ), ], ), ), SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ Form( key: _model.formKey, autovalidateMode: AutovalidateMode.disabled, child: Container( width: 375.0, height: 500.0, decoration: BoxDecoration( color: FlutterTheme.of(context) .secondaryBackground, ), child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 19.0, 0.0, 0.0), child: ClipRRect( borderRadius: BorderRadius.circular( 8.0), child: SvgPicture.asset( 'assets/images/Lock.svg', width: 100.0, height: 100.0, fit: BoxFit.contain, ), ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 12.0, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( '6utun6a2' /* Current Password */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, ), ), ), ], ), ), Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 8.0, 0.0, 8.0, 0.0), child: Container( width: 326.0, child: TextFormField( controller: _model .passwordController, focusNode: _model .passwordFocusNode, obscureText: !_model .passwordVisibility, decoration: InputDecoration( labelStyle: FlutterTheme.of( context) .labelMedium, hintStyle: FlutterTheme.of( context) .labelMedium, enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .alternate, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .primary, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .error, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .error, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), suffixIcon: InkWell( onTap: () => setState( () => _model .passwordVisibility = !_model .passwordVisibility, ), focusNode: FocusNode( skipTraversal: true), child: Icon( _model.passwordVisibility ? Icons .visibility_outlined : Icons .visibility_off_outlined, size: 26.0, ), ), ), style: FlutterTheme .of(context) .bodyMedium, validator: _model .passwordControllerValidator .asValidator( context), ), ), ), ), ], ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 12.0, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'h6abf1ma' /* New Password */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, ), ), ), ], ), ), Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 8.0, 0.0, 8.0, 0.0), child: Container( width: 326.0, child: TextFormField( controller: _model .newPasswordController, focusNode: _model .newPasswordFocusNode, obscureText: !_model .newPasswordVisibility, decoration: InputDecoration( labelStyle: FlutterTheme.of( context) .labelMedium, hintStyle: FlutterTheme.of( context) .labelMedium, enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .alternate, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .primary, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .error, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .error, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), suffixIcon: InkWell( onTap: () => setState( () => _model .newPasswordVisibility = !_model .newPasswordVisibility, ), focusNode: FocusNode( skipTraversal: true), child: Icon( _model.newPasswordVisibility ? Icons .visibility_outlined : Icons .visibility_off_outlined, size: 26.0, ), ), ), style: FlutterTheme .of(context) .bodyMedium, validator: _model .newPasswordControllerValidator .asValidator( context), ), ), ), ), ], ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 12.0, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'st9negt8' /* Confirm Password */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, ), ), ), ], ), ), Row( mainAxisSize: MainAxisSize.max, children: [ Expanded( child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 8.0, 0.0, 8.0, 0.0), child: Container( width: 326.0, child: TextFormField( controller: _model .newPasswordConfirmationController, focusNode: _model .newPasswordConfirmationFocusNode, obscureText: !_model .newPasswordConfirmationVisibility, decoration: InputDecoration( labelStyle: FlutterTheme.of( context) .labelMedium, hintStyle: FlutterTheme.of( context) .labelMedium, enabledBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .alternate, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), focusedBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .primary, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), errorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .error, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), focusedErrorBorder: OutlineInputBorder( borderSide: BorderSide( color: FlutterTheme.of( context) .error, width: 2.0, ), borderRadius: BorderRadius .circular( 23.8), ), suffixIcon: InkWell( onTap: () => setState( () => _model .newPasswordConfirmationVisibility = !_model .newPasswordConfirmationVisibility, ), focusNode: FocusNode( skipTraversal: true), child: Icon( _model.newPasswordConfirmationVisibility ? Icons .visibility_outlined : Icons .visibility_off_outlined, size: 26.0, ), ), ), style: FlutterTheme .of(context) .bodyMedium, validator: _model .newPasswordConfirmationControllerValidator .asValidator( context), ), ), ), ), ], ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 10.0, 0.0, 10.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Builder( builder: (context) => Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 15.0, 0.0, 20.0), child: FFButtonWidget( onPressed: () async { if (_model.formKey .currentState == null || !_model.formKey .currentState! .validate()) { return; } _model.apiResultopa = await NumstationGroup .changePasswordCall .call( password: _model .passwordController .text, newPassword: _model .newPasswordController .text, newPasswordConfirmation: _model .newPasswordConfirmationController .text, token: FFAppState() .token, ); if ((_model .apiResultopa ?.succeeded ?? true)) { await showDialog( context: context, builder: (alertDialogContext) { return AlertDialog( content: Text( 'All changes have been saved!'), actions: [ TextButton( onPressed: () => Navigator.pop(alertDialogContext), child: Text( 'Back'), ), ], ); }, ); } else { await showAlignedDialog( context: context, isGlobal: true, avoidOverflow: false, targetAnchor: AlignmentDirectional( 0.0, 0.0) .resolve( Directionality.of(context)), followerAnchor: AlignmentDirectional( 0.0, 0.0) .resolve( Directionality.of(context)), builder: (dialogContext) { return Material( color: Colors .transparent, child: GestureDetector( onTap: () => _model .unfocusNode .canRequestFocus ? FocusScope.of(context).requestFocus(_model .unfocusNode) : FocusScope.of(context) .unfocus(), child: AlertBoxWidget(), ), ); }, ).then((value) => setState( () {})); } setState(() {}); }, text: FFLocalizations .of(context) .getText( 'lar81w3o' /* Save */, ), options: FFButtonOptions( width: 250.0, height: 50.0, padding: EdgeInsets.all( 0.0), iconPadding: EdgeInsetsDirectional .fromSTEB( 0.0, 0.0, 0.0, 0.0), color: Color( 0xFF009B9A), textStyle: FlutterTheme.of( context) .titleSmall .override( fontFamily: 'Roboto', color: Colors .white, fontSize: 20.0, ), elevation: 3.0, borderSide: BorderSide( color: Colors .transparent, width: 1.0, ), borderRadius: BorderRadius .circular( 25.0), ), ), ), ), ], ), ), ], ), ), ), ], ), ), SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ Container( width: 375.0, height: 900.0, decoration: BoxDecoration( color: Color(0xFFF4F7FA), ), child: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 12.0, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'vs5o2yrj' /* Contact Us */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 24.0, fontWeight: FontWeight.w500, ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 12.0, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ ClipRRect( borderRadius: BorderRadius.circular( 8.0), child: SvgPicture.asset( 'assets/images/call.svg', width: 28.0, height: 28.0, fit: BoxFit.cover, ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( '1imed9ab' /* +852 3565 3138 */, ), style: FlutterTheme.of( context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 36.3, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ ClipRRect( borderRadius: BorderRadius.circular( 8.0), child: SvgPicture.asset( 'assets/images/whatsapp.svg', width: 28.0, height: 28.0, fit: BoxFit.cover, ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'frtvqx9m' /* +852 3565 3138 */, ), style: FlutterTheme.of( context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, decoration: TextDecoration .underline, ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 36.3, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ ClipRRect( borderRadius: BorderRadius.circular( 8.0), child: SvgPicture.asset( 'assets/images/sms.svg', width: 28.0, height: 28.0, fit: BoxFit.cover, ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'tdb6fu6e' /* info@numstation.com */, ), style: FlutterTheme.of( context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, decoration: TextDecoration .underline, ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 36.3, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, crossAxisAlignment: CrossAxisAlignment.start, children: [ ClipRRect( borderRadius: BorderRadius.circular( 8.0), child: SvgPicture.asset( 'assets/images/map.svg', width: 28.0, height: 28.0, fit: BoxFit.cover, ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( '7itbie3u' /* Suite 2006, AIA Kowloon Tower,... */, ), style: FlutterTheme.of( context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 36.3, 0.0, 5.0), child: Row( mainAxisSize: MainAxisSize.max, children: [ ClipRRect( borderRadius: BorderRadius.circular( 8.0), child: SvgPicture.asset( 'assets/images/clock.svg', width: 28.0, height: 28.0, fit: BoxFit.cover, ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB(16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'c5o4mxs0' /* Monday to Friday 9:00am–6:30pm */, ), style: FlutterTheme.of( context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 10.0, 0.0, 10.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB(0.0, 36.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { context.pushNamed( 'enquiry'); }, text: FFLocalizations.of( context) .getText( 'ba5g2i2s' /* Enquiry */, ), options: FFButtonOptions( width: 339.0, height: 50.0, padding: EdgeInsets.all(0.0), iconPadding: EdgeInsetsDirectional .fromSTEB( 0.0, 0.0, 0.0, 0.0), color: Color(0xFF009B9A), textStyle: FlutterTheme.of( context) .titleSmall .override( fontFamily: 'Roboto', color: Colors .white, fontSize: 20.0, ), elevation: 3.0, borderSide: BorderSide( color: Colors .transparent, width: 1.0, ), borderRadius: BorderRadius .circular(25.0), ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 10.0, 0.0, 10.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB(0.0, 12.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { context.pushNamed( 'myenquiry'); }, text: FFLocalizations.of( context) .getText( 'g2pbkaxr' /* My Enquiry */, ), options: FFButtonOptions( width: 339.0, height: 50.0, padding: EdgeInsets.all(0.0), iconPadding: EdgeInsetsDirectional .fromSTEB( 0.0, 0.0, 0.0, 0.0), color: Color(0xFF009B9A), textStyle: FlutterTheme.of( context) .titleSmall .override( fontFamily: 'Roboto', color: Colors .white, fontSize: 20.0, ), elevation: 3.0, borderSide: BorderSide( color: Colors .transparent, width: 1.0, ), borderRadius: BorderRadius .circular(25.0), ), ), ), ], ), ), Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 16.0, 0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Container( width: 375.0, height: 38.0, decoration: BoxDecoration( color: Color(0xFFF4F7FA), ), child: Align( alignment: AlignmentDirectional( -1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'vqnv1xkr' /* Online Documents */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Readex Pro', fontSize: 16.0, ), ), ), ), ), ], ), ), Container( width: 375.0, height: 38.0, decoration: BoxDecoration( color: Colors.white, border: Border.all( color: Color(0x000E2EEA), width: 2.0, ), ), child: Row( mainAxisSize: MainAxisSize.max, children: [ Align( alignment: AlignmentDirectional( -1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'ri5coq05' /* 1. Payment Methods */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Readex Pro', fontSize: 16.0, ), ), ), ), Expanded( child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 0.0, 8.0, 0.0), child: ClipRRect( borderRadius: BorderRadius .circular(8.0), child: SvgPicture.asset( 'assets/images/arrow-circle-right.svg', width: 24.0, height: 24.0, fit: BoxFit.contain, alignment: Alignment( 1.0, 0.0), ), ), ), ), ], ), ), Container( width: 375.0, height: 38.0, decoration: BoxDecoration( color: Colors.white, border: Border.all( color: Colors.transparent, ), ), child: Row( mainAxisSize: MainAxisSize.max, children: [ Align( alignment: AlignmentDirectional( -1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( '0gk1pvmt' /* 2. Payment Terms & Conditions */, ), style: FlutterTheme .of(context) .bodyMedium .override( fontFamily: 'Readex Pro', fontSize: 16.0, ), ), ), ), Expanded( child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 0.0, 0.0, 8.0, 0.0), child: ClipRRect( borderRadius: BorderRadius .circular(8.0), child: SvgPicture.asset( 'assets/images/arrow-circle-right.svg', width: 24.0, height: 24.0, fit: BoxFit.contain, alignment: Alignment( 1.0, 0.0), ), ), ), ), ], ), ), Container( width: 375.0, height: 38.0, decoration: BoxDecoration( color: Color(0xFFF4F7FA), ), child: Align( alignment: AlignmentDirectional( -1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of(context) .getText( 'advwtyzu' /* FAQ */, ), style: FlutterTheme.of( context) .bodyMedium .override( fontFamily: 'Readex Pro', fontSize: 16.0, ), ), ), ), ), ListView( padding: EdgeInsets.zero, shrinkWrap: true, scrollDirection: Axis.vertical, children: [ Container( height: 200.0, child: Container( width: 358.0, height: 112.0, color: Colors.white, child: ExpandableNotifier( controller: _model .expandableController, child: ExpandablePanel( header: Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'su37h807' /* 1. I am not in HongKong, how c... */, ), style: FlutterTheme .of(context) .displaySmall .override( fontFamily: 'Outfit', color: Colors .black, fontSize: 16.0, fontWeight: FontWeight .w500, ), ), ), collapsed: Container(), expanded: Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional .fromSTEB( 16.0, 0.0, 0.0, 0.0), child: Text( FFLocalizations.of( context) .getText( 'ezjm41ub' /* Please click here for the paym... */, ), style: FlutterTheme.of( context) .bodyMedium, ), ), ], ), theme: ExpandableThemeData( tapHeaderToExpand: true, tapBodyToExpand: false, tapBodyToCollapse: false, headerAlignment: ExpandablePanelHeaderAlignment .center, hasIcon: true, expandIcon: Icons.add_circle, collapseIcon: FontAwesomeIcons .minusCircle, iconSize: 25.0, iconColor: Color(0xFFF3CF5D), ), ), ), ), ), ], ), ], ), ), ], ), ), ], ), ), ], ), ), ), ], ), Align( alignment: AlignmentDirectional(0.0, 1.0), child: wrapWithModel( model: _model.navBar1Model, updateCallback: () => setState(() {}), child: NavBar1Widget(), ), ), Align( alignment: AlignmentDirectional(0.0, -1.0), child: wrapWithModel( model: _model.appbarModel, updateCallback: () => setState(() {}), child: AppbarWidget(), ), ), Align( alignment: AlignmentDirectional(1.07, -0.97), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 550.0, 30.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('chatbox'); }, child: Container( width: 71.0, height: 71.0, decoration: BoxDecoration( gradient: LinearGradient( colors: [Color(0xFFE7E63B), Color(0xFFC6E6D7)], stops: [0.0, 1.0], begin: AlignmentDirectional(-1.0, 0.0), end: AlignmentDirectional(1.0, 0), ), shape: BoxShape.circle, ), child: ClipRRect( borderRadius: BorderRadius.circular(8.0), child: SvgPicture.asset( 'assets/images/message-2.svg', width: 100.0, height: 100.0, fit: BoxFit.none, ), ), ), ), ), ), ], ), ), ), ); } }