3

I like to set enum index start from 1 ( as it is default by zero). Expected

enum UserRoles{
 admin = 1,
 user,
 vendor
}

Is there anything similar to this?

pravindia
  • 53
  • 1
  • 7

1 Answers1

4

There are two ways to do this:

  1. Adding some dummy enum constants:
enum UserRoles {
  _,
  admin,
  user,
  vendor
}

print(UserRoles.values.indexOf(UserRoles.admin));  // 1
print(UserRoles.values.indexOf(UserRoles.user));   // 2
print(UserRoles.values.indexOf(UserRoles.vendor)); // 3

Con: someone can pass a _ user role, which can be invalid.

  1. Creating a fake enum:
class UserRoles {
  static UserRoles admin = UserRoles._();
  static UserRoles user = UserRoles._();
  static UserRoles vendor = UserRoles._();
  static List<UserRoles> values = [admin, user, vendor];
  
  UserRoles._();
  
  static int indexOf(UserRoles role) {
    return values.indexOf(role) + 1; 
  }
}

print(UserRoles.indexOf(UserRoles.admin));  // 1
print(UserRoles.indexOf(UserRoles.user));   // 2
print(UserRoles.indexOf(UserRoles.vendor)); // 3
enzo
  • 9,861
  • 3
  • 15
  • 38