import '/backend/api_requests/api_calls.dart'; import '/components/alert_box_custom_widget.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:aligned_dialog/aligned_dialog.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 'newuser_model.dart'; export 'newuser_model.dart'; class NewuserWidget extends StatefulWidget { const NewuserWidget({ Key? key, required this.checkPermission23, required this.checkPremission22, }) : super(key: key); final bool? checkPermission23; final bool? checkPremission22; @override _NewuserWidgetState createState() => _NewuserWidgetState(); } class _NewuserWidgetState extends State { late NewuserModel _model; final scaffoldKey = GlobalKey(); @override void initState() { super.initState(); _model = createModel(context, () => NewuserModel()); _model.firstNameController ??= TextEditingController(); _model.firstNameFocusNode ??= FocusNode(); _model.lastNameController ??= TextEditingController(); _model.lastNameFocusNode ??= FocusNode(); _model.passwordController ??= TextEditingController(); _model.passwordFocusNode ??= FocusNode(); _model.phoneController ??= TextEditingController(); _model.phoneFocusNode ??= FocusNode(); _model.emailController ??= TextEditingController(); _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( 'me3qt77y' /* 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( 'm8jdyvt8' /* 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( 'a5lgh0xk' /* 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( '94h866uy' /* 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( 'bz1el50s' /* 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( 'l6efueai' /* 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( '9opeh3v2' /* 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: [ Form( key: _model.formKey, autovalidateMode: AutovalidateMode.disabled, child: Padding( padding: EdgeInsetsDirectional.fromSTEB( 0.0, 10.0, 0.0, 0.0), child: Container( width: 340.0, height: 756.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( '0evx47g9' /* New User */, ), 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( 'c4wprc1i' /* 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( 'yj76jnil' /* 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( '8fdvk27c' /* 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( 'tvcckgd6' /* 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, keyboardType: TextInputType.phone, 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( '2ic5dwqf' /* 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( 'igzjnwlv' /* 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< Color>( FlutterTheme.of(context) .info, ), ), ), ); } final roleIdRoleListResponse = snapshot.data!; return FlutterDropDown( controller: _model.roleIdValueController ??= FormFieldController( _model.roleIdValue ??= '', ), 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( 'a8jqt3ld' /* -- 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< Color>( FlutterTheme.of(context) .info, ), ), ), ); } final roleId2RoleListResponse = snapshot.data!; return FlutterDropDown( controller: _model.roleId2ValueController ??= FormFieldController( _model.roleId2Value ??= '', ), 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( 'qb8rvn9a' /* -- 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( 'ge02g03v' /* 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( '45621ol0' /* Active */, ), FFLocalizations.of(context).getText( 'i42ldvtm' /* Inactive */, ) ], onChanged: (val) => setState( () => _model.statusValue = val), width: 326.0, height: 40.0, textStyle: FlutterTheme.of(context).bodyMedium, hintText: FFLocalizations.of(context).getText( 'xwn207x7' /* -- 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: [ Builder( builder: (context) => Padding( padding: EdgeInsetsDirectional.fromSTEB( 10.0, 0.0, 0.0, 0.0), child: FutureBuilder( future: NumstationGroup .createUserCall .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< Color>( FlutterTheme.of( context) .info, ), ), ), ); } final buttonCreateUserResponse = snapshot.data!; return FFButtonWidget( onPressed: () async { _model.apiResulth88 = await NumstationGroup .createUserCall .call( token: FFAppState().token, email: _model .emailController.text, firstName: _model .firstNameController .text, lastName: _model .lastNameController .text, password: _model .passwordController .text, phone: int.tryParse(_model .phoneController .text), roleId: widget.checkPremission22 == true ? _model .roleIdValue : _model .roleId2Value, status: _model.statusValue, ); if (_model.formKey .currentState == null || !_model.formKey .currentState! .validate()) { return; } if (_model.roleIdValue == null) { await showDialog( context: context, builder: (alertDialogContext) { return AlertDialog( content: Text( 'Please select one role!'), actions: [ TextButton( onPressed: () => Navigator.pop( alertDialogContext), child: Text('Ok'), ), ], ); }, ); return; } if (_model.statusValue == null) { await showDialog( context: context, builder: (alertDialogContext) { return AlertDialog( content: Text( 'Please select one status!'), actions: [ TextButton( onPressed: () => Navigator.pop( alertDialogContext), child: Text('Ok'), ), ], ); }, ); return; } if ((_model.apiResulth88 ?.succeeded ?? true)) { if (getJsonField( (_model.apiResulth88 ?.jsonBody ?? ''), r'''$.error''', ) != null) { 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: AlertBoxCustomWidget( text: getJsonField( (_model.apiResulth88 ?.jsonBody ?? ''), r'''$.error''', ).toString(), ), ), ); }, ).then((value) => setState(() {})); } else { ScaffoldMessenger.of( context) .showSnackBar( SnackBar( content: Text( getJsonField( (_model.apiResulth88 ?.jsonBody ?? ''), r'''$.message''', ).toString(), style: TextStyle( color: FlutterTheme.of( context) .primaryText, ), ), duration: Duration( milliseconds: 4000), backgroundColor: FlutterTheme.of( context) .secondary, ), ); context .pushNamed('user'); } } else { ScaffoldMessenger.of( context) .showSnackBar( SnackBar( content: Text( getJsonField( buttonCreateUserResponse .jsonBody, r'''$.message''', ).toString(), style: TextStyle( color: FlutterTheme .of(context) .primaryText, ), ), duration: Duration( milliseconds: 4000), backgroundColor: FlutterTheme.of( context) .secondary, ), ); } setState(() {}); }, text: FFLocalizations.of( context) .getText( '42dqpv3a' /* 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( 'kcx043wm' /* Cancel */, ), 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), ), ), ), ], ), ), ], ), ), ), ), ], ), ], ), ), ], ), ), ), ); } }