roleFormEntry method

Widget roleFormEntry({
  1. String title = 'Role',
  2. String subTitle = 'the role',
  3. dynamic onChanged(
    1. UserRoles?
    )?,
  4. UserRoles? defaultValue,
  5. UserRoles? preDefinedRole,
})

Implementation

Widget roleFormEntry({
  String title = 'Role',
  String subTitle = 'the role',
  Function(UserRoles?)? onChanged,
  UserRoles? defaultValue,
  UserRoles? preDefinedRole,
}) {
  return formEntry(
    title: 'Select Role',
    subTitle: 'the role of the employee',
    inputWidget: DropdownButtonFormField<UserRoles>(
      value: preDefinedRole ?? defaultValue,
      style: Theme.of(context).textTheme.bodyLarge,
      dropdownColor: Theme.of(context).primaryColor,
      hint: Text(
        'Select Role',
        style: Theme.of(context).textTheme.labelLarge,
      ),
      decoration: elegantInputDecoration(
        hintText: '',
        prefix: const Icon(Icons.perm_contact_calendar_sharp),
      ),
      items: ROLES.map((UserRoles role) {
        return DropdownMenuItem<UserRoles>(
          enabled: role == UserRoles.Admin || role == UserRoles.Owner
              ? false
              : (preDefinedRole != null ? role == preDefinedRole : true),
          value: role,
          child: Text(role.name),
        );
      }).toList(),
      onChanged: isEdit
          ? (value) {
              onChanged!(value);
              widget.formKey.currentState!.save();
              if (widget.onModified != null) {
                widget.onModified!();
              }
            }
          : null,
      validator: (value) => (value == null) ? 'Role is required' : null,
    ),
  );
}