Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to set enum index start value in dart? [duplicate]

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?

like image 768
pravindia Avatar asked Sep 14 '25 09:09

pravindia


1 Answers

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
like image 166
enzo Avatar answered Sep 17 '25 01:09

enzo