import '/backend/api_requests/api_calls.dart'; import '/flutterlib/flutter_drop_down.dart'; import '/flutterlib/flutter_theme.dart'; import '/flutterlib/flutter_util.dart'; import '/flutterlib/flutter_widgets.dart'; import '/flutterlib/form_field_controller.dart'; import 'package:badges/badges.dart' as badges; 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 'edit_user_model.dart'; export 'edit_user_model.dart'; class EditUserWidget extends StatefulWidget { const EditUserWidget({ Key? key, required this.firstName, required this.lastName, required this.phone, required this.email, required this.userID, bool? checkPermission23, required this.checkPremission22, required this.roleID, }) : this.checkPermission23 = checkPermission23 ?? false, super(key: key); final String? firstName; final String? lastName; final int? phone; final String? email; final int? userID; final bool checkPermission23; final bool? checkPremission22; final String? roleID; @override _EditUserWidgetState createState() => _EditUserWidgetState(); } class _EditUserWidgetState extends State { late EditUserModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => EditUserModel()); _model.firstNameController ??= TextEditingController(text: widget.firstName); _model.firstNameFocusNode ??= FocusNode(); _model.lastNameController ??= TextEditingController(text: widget.lastName); _model.lastNameFocusNode ??= FocusNode(); _model.passwordController ??= TextEditingController(text: FFAppState().password); _model.passwordFocusNode ??= FocusNode(); _model.phoneController ??= TextEditingController(text: widget.phone?.toString()); _model.phoneFocusNode ??= FocusNode(); _model.emailController ??= TextEditingController(text: widget.email); _model.emailFocusNode ??= FocusNode(); } @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( 't3b2e2wq' /* 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( 'f350l0qs' /* 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( '3b9sgp3j' /* 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( 'en33u0la' /* 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( '9cvzcw26' /* 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( 'pszfzt5i' /* 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: [ SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.max, children: [ Container( width: double.infinity, height: 105.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), ), borderRadius: BorderRadius.only( bottomLeft: Radius.circular(40.0), bottomRight: Radius.circular(40.0), topLeft: Radius.circular(0.0), topRight: Radius.circular(0.0), ), ), child: Padding( padding: EdgeInsetsDirectional.fromSTEB(0.0, 40.0, 0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Align( alignment: AlignmentDirectional(-1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 20.0, 0.0, 0.0, 0.0), child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { scaffoldKey.currentState!.openDrawer(); }, child: Icon( Icons.density_medium_sharp, color: FlutterTheme.of(context) .secondaryText, size: 30.0, ), ), ), ), ClipRRect( borderRadius: BorderRadius.circular(8.0), child: Image.asset( 'assets/images/numstat+black_1.png', width: 61.0, height: 61.0, fit: BoxFit.cover, ), ), Align( alignment: AlignmentDirectional(1.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 0.0, 20.0, 0.0), child: badges.Badge( badgeContent: Text( FFLocalizations.of(context).getText( 'f9zm8he1' /* 1 */, ), style: FlutterTheme.of(context) .titleSmall .override( fontFamily: 'Readex Pro', color: Colors.white, fontSize: 10.0, ), ), showBadge: true, shape: badges.BadgeShape.circle, badgeColor: Color(0xFFFF0000), elevation: 4.0, padding: EdgeInsets.all(8.0), position: badges.BadgePosition.topEnd(), animationType: badges.BadgeAnimationType.scale, toAnimate: true, child: InkWell( splashColor: Colors.transparent, focusColor: Colors.transparent, hoverColor: Colors.transparent, highlightColor: Colors.transparent, onTap: () async { context.pushNamed('notification'); }, child: FaIcon( FontAwesomeIcons.bell, color: FlutterTheme.of(context) .secondaryText, size: 30.0, ), ), ), ), ), ], ), ), ), Column( mainAxisSize: MainAxisSize.max, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 10.0, 0.0, 0.0), child: Container( width: 358.0, height: 767.0, decoration: BoxDecoration( color: FlutterTheme.of(context) .secondaryBackground, boxShadow: [ BoxShadow( blurRadius: 4.0, color: Color(0x33000000), offset: Offset(0.0, 2.0), ) ], borderRadius: BorderRadius.circular(8.0), ), child: Column( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Align( alignment: AlignmentDirectional(0.0, 0.0), child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 19.0, 0.0, 0.0), child: Text( FFLocalizations.of(context).getText( 'm7fn2k4z' /* User Detail */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 24.0, fontWeight: FontWeight.normal, ), ), ), ), ], ), 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( '0e7xajft' /* First name */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), 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.firstNameController, focusNode: _model.firstNameFocusNode, obscureText: false, 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), ), ), style: FlutterTheme.of(context) .bodyMedium, validator: _model .firstNameControllerValidator .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( '3d11uie7' /* Last name */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), 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.lastNameController, focusNode: _model.lastNameFocusNode, obscureText: false, 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), ), ), style: FlutterTheme.of(context) .bodyMedium, validator: _model .lastNameControllerValidator .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( 'rtix7w17' /* Password */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), 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: false, 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), ), ), 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( 'ntgk68ux' /* Phone */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), 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.phoneController, focusNode: _model.phoneFocusNode, obscureText: false, 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), ), ), style: FlutterTheme.of(context) .bodyMedium, validator: _model .phoneControllerValidator .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( '7tjyzbxk' /* Email */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), 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.emailController, focusNode: _model.emailFocusNode, obscureText: false, 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), ), ), style: FlutterTheme.of(context) .bodyMedium, validator: _model .emailControllerValidator .asValidator(context), ), ), ), ), ], ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 12.0, 0.0, 12.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( '5cw7zj2z' /* Role */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), if (widget.checkPremission22 == true) FutureBuilder( future: NumstationGroup.roleListCall.call( token: FFAppState().token, ), builder: (context, snapshot) { // Customize what your widget looks like when it's loading. if (!snapshot.hasData) { return Center( child: SizedBox( width: 50.0, height: 50.0, child: CircularProgressIndicator( valueColor: AlwaysStoppedAnimation( FlutterTheme.of(context) .info, ), ), ), ); } final roleIdRoleListResponse = snapshot.data!; return FlutterDropDown( controller: _model.roleIdValueController ??= FormFieldController( _model.roleIdValue ??= widget.roleID, ), options: List.from( (getJsonField( roleIdRoleListResponse.jsonBody, r'''$.roles..id''', true, ) as List) .map( (s) => s.toString()) .toList()!), optionLabels: (getJsonField( roleIdRoleListResponse.jsonBody, r'''$.roles..display_name''', true, ) as List) .map((s) => s.toString()) .toList()!, onChanged: (val) => setState( () => _model.roleIdValue = val), width: 326.0, height: 40.0, textStyle: FlutterTheme.of(context) .bodyMedium, hintText: FFLocalizations.of(context).getText( 'u8emeq92' /* -- Select Role -- */, ), icon: Icon( Icons.keyboard_arrow_down_rounded, color: FlutterTheme.of(context) .secondaryText, size: 24.0, ), fillColor: Color(0xFFEBEBE4), elevation: 2.0, borderColor: FlutterTheme.of(context) .alternate, borderWidth: 2.0, borderRadius: 40.0, margin: EdgeInsetsDirectional.fromSTEB( 16.0, 4.0, 16.0, 4.0), hidesUnderline: true, isSearchable: false, isMultiSelect: false, ); }, ), if ((widget.checkPermission23 == true) && (widget.checkPremission22 == false)) FutureBuilder( future: NumstationGroup.roleListCall.call( token: FFAppState().token, ), builder: (context, snapshot) { // Customize what your widget looks like when it's loading. if (!snapshot.hasData) { return Center( child: SizedBox( width: 50.0, height: 50.0, child: CircularProgressIndicator( valueColor: AlwaysStoppedAnimation( FlutterTheme.of(context) .info, ), ), ), ); } final roleId2RoleListResponse = snapshot.data!; return FlutterDropDown( controller: _model.roleId2ValueController ??= FormFieldController( _model.roleId2Value ??= widget.roleID, ), options: List.from( (getJsonField( roleId2RoleListResponse.jsonBody, r'''$.roles[?(@.id!=8)].id''', true, ) as List) .map( (s) => s.toString()) .toList()!), optionLabels: (getJsonField( roleId2RoleListResponse.jsonBody, r'''$.roles[?(@.id!=8)].display_name''', true, ) as List) .map((s) => s.toString()) .toList()!, onChanged: (val) => setState( () => _model.roleId2Value = val), width: 326.0, height: 40.0, textStyle: FlutterTheme.of(context) .bodyMedium, hintText: FFLocalizations.of(context).getText( 't4pddaz1' /* -- Select Role -- */, ), icon: Icon( Icons.keyboard_arrow_down_rounded, color: FlutterTheme.of(context) .secondaryText, size: 24.0, ), fillColor: Color(0xFFEBEBE4), elevation: 2.0, borderColor: FlutterTheme.of(context) .alternate, borderWidth: 2.0, borderRadius: 40.0, margin: EdgeInsetsDirectional.fromSTEB( 16.0, 4.0, 16.0, 4.0), hidesUnderline: true, isSearchable: false, isMultiSelect: false, ); }, ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 12.0, 0.0, 12.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( 'ey5mywcp' /* Status */, ), style: FlutterTheme.of(context) .bodyMedium .override( fontFamily: 'Roboto', fontSize: 16.0, fontWeight: FontWeight.normal, ), ), ), ], ), ), FlutterDropDown( controller: _model.statusValueController ??= FormFieldController( _model.statusValue ??= '', ), options: List.from(['Active', 'Inactive']), optionLabels: [ FFLocalizations.of(context).getText( 'amt944wu' /* Active */, ), FFLocalizations.of(context).getText( '9gesesrl' /* Inactive */, ) ], onChanged: (val) => setState(() => _model.statusValue = val), width: 326.0, height: 40.0, textStyle: FlutterTheme.of(context).bodyMedium, hintText: FFLocalizations.of(context).getText( 'qsjq6pxp' /* -- Select Status -- */, ), icon: Icon( Icons.keyboard_arrow_down_rounded, color: FlutterTheme.of(context) .secondaryText, size: 24.0, ), fillColor: Color(0xFFEBEBE4), elevation: 2.0, borderColor: FlutterTheme.of(context).alternate, borderWidth: 2.0, borderRadius: 40.0, margin: EdgeInsetsDirectional.fromSTEB( 16.0, 4.0, 16.0, 4.0), hidesUnderline: true, isSearchable: false, isMultiSelect: false, ), Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 20.0, 0.0, 0.0), child: Row( mainAxisSize: MainAxisSize.max, mainAxisAlignment: MainAxisAlignment.center, children: [ Padding( padding: EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: FFButtonWidget( onPressed: () async { _model.apiResulth88 = await NumstationGroup .updateUserCall .call( token: FFAppState().token, userId: widget.userID, email: _model.emailController.text, firstName: _model .firstNameController.text, lastName: _model .lastNameController.text, phone: int.tryParse( _model.phoneController.text), status: _model.statusValue, roleId: _model.roleIdValue, ); if ((_model .apiResulth88?.succeeded ?? true)) { ScaffoldMessenger.of(context) .showSnackBar( SnackBar( content: Text( 'Successfully updated user detail!', style: TextStyle( color: Color(0xFFF4F4F4), ), ), duration: Duration( milliseconds: 4000), backgroundColor: Color(0xFF3B3B3B), ), ); context.pushNamed('user'); } else { ScaffoldMessenger.of(context) .showSnackBar( SnackBar( content: Text( 'fail', style: TextStyle( color: FlutterTheme.of( context) .primaryText, ), ), duration: Duration( milliseconds: 4000), backgroundColor: FlutterTheme.of( context) .secondary, ), ); } setState(() {}); }, text: FFLocalizations.of(context) .getText( 'mnwp4x20' /* Save */, ), options: FFButtonOptions( width: 120.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( 20.0, 0.0, 10.0, 0.0), child: FFButtonWidget( onPressed: () async { context.pushNamed('user'); }, text: FFLocalizations.of(context) .getText( '2k21y2v3' /* Back */, ), options: FFButtonOptions( width: 120.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), ), ), ), ], ), ), ], ), ), ), ], ), ], ), ), ], ), ), ), ); } }