// ignore_for_file: public_member_api_docs, sort_constructors_first import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:go_router/go_router.dart'; import 'package:provider/provider.dart'; import 'package:qadirneyriz/global/global_state/global_state.dart'; import 'package:qadirneyriz/utils/enums/status.dart'; import 'package:qadirneyriz/utils/tools/tools.dart'; import 'package:qadirneyriz/widgets/ExpansionTileCustom.dart'; import 'package:qadirneyriz/widgets/checkBox_inTile.dart'; import 'package:qadirneyriz/widgets/custom_button.dart'; import 'package:qadirneyriz/widgets/custom_textfield.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; class AddUserDiolog extends StatefulWidget { AddUserDiolog({ super.key, }); @override State createState() => _AddUserDiologState(); } class _AddUserDiologState extends State { final TextEditingController nameController = TextEditingController(); final TextEditingController mobileController = TextEditingController(); final TextEditingController passwordController = TextEditingController(); int selectedRole = 1; @override Widget build(BuildContext context) { final List roles = [ MemberRole( roleId: 1, roleName: AppLocalizations.of(context)!.normaluser, ), // MemberRole(roleId: 2, roleName: 'اپراتور'), ]; return Consumer( builder: (context, value, child) { return Dialog( child: Padding( padding: const EdgeInsets.all(20.0), child: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, // برای اندازه‌گیری درست دیالوگ children: [ Text( AppLocalizations.of(context)!.newmember, ), CustomTextField( label: '', hintText: AppLocalizations.of(context)!.nameandfamilyname, paddingVertical: 0, textEditingController: nameController, textInputType: TextInputType.text), CustomTextField( label: '', paddingVertical: 0, hintText: AppLocalizations.of(context)!.phonenumber, textEditingController: mobileController, textInputType: TextInputType.phone), CustomTextField( label: '', paddingVertical: 0, hintText: AppLocalizations.of(context)!.password, isPass: true, textEditingController: passwordController, textInputType: TextInputType.visiblePassword), Padding( padding: const EdgeInsets.symmetric(horizontal: 20), child: ExpansionTileCustom( isForm: true, subTitile: '', title: AppLocalizations.of(context)!.role, widgets: [ Column( children: roles.map((role) { bool isSelected = selectedRole == role.roleId; return CheckBoxInTile( backColor: isSelected ? Color(0xff06CF64) : Colors.white, textColor: isSelected ? Colors.white : Colors.black, text: role.roleName, hasIcon: false, onTap: () { setState(() { selectedRole = role.roleId; }); }, ); }).toList(), ), ], ), ), SizedBox( height: 60, ), submit(value, context), ], ), ), ), ); }, ); } CustomButton submit(GlobalState state, BuildContext context) { switch (state.statusAddNewUser) { case Status.loading: return CustomButton( hieght: 40, width: double.infinity, text: AppLocalizations.of(context)!.loading, fontSize: 13, onPressed: null, borderRadius: 10, ); default: return CustomButton( hieght: 40, width: double.infinity, text: AppLocalizations.of(context)!.add, fontSize: 13, onPressed: () async { if (nameController.text == '') { // call add new subject Tools.showCustomSnackBar( text: AppLocalizations.of(context)!.enternameandfamily, isError: true, context, ); } else if (mobileController.text == '') { Tools.showCustomSnackBar( text: AppLocalizations.of(context)!.enterphonenumber, isError: true, context, ); } else if (passwordController.text == '') { Tools.showCustomSnackBar( text: AppLocalizations.of(context)!.enterpassword, isError: true, context, ); } // else if (selectedRole == null) { // Tools.showCustomSnackBar( // text: 'نقش کاربر وارد کنید!', // isError: true, // context, // ); // } else { final status = await state.addNewUser( name: nameController.text, mobile: mobileController.text, role: selectedRole, password: passwordController.text); if (status == Status.ready) { // call refrresh users await state.getUsers(refresh: true); Tools.showCustomSnackBar( text: AppLocalizations.of(context)!.useradded, isError: false, context, ); context.pop(); } else { Tools.showCustomSnackBar( text: state.errorsAddNewUser == null ? state.messageAddNewUser ?? AppLocalizations.of(context)!.haserror : Tools.combineErrorMessages( state.errorsAddNewUser ?? {}), isError: true, context, ); } } }, borderRadius: 10, ); } } } class MemberRole { final int roleId; final String roleName; MemberRole({ required this.roleId, required this.roleName, }); }