{

Dart Enum comparison operator| Enum compareByIndex example| Flutter By Example


Enum comparison operator compareByIndex dart or flutter examples

Comparison operators (<,>,>=,<=,==) are useful to compare the values.

Enum contains constant values that represent the index starting from 0,1 onwards.

enum WEEK { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

Enum Week contains constants such as MONDAY and index is 0, the second value is TUESDAY and index is 1.

By default, two enum objects are equal using the == operator.

void main() {
  WEEK sat = WEEK.SATURDAY;
  WEEK mon = WEEK.MONDAY;
  print(sat == mon); //true
}

Let’s see a comparison operator such as < or >.

enum WEEK { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
void main() {
  WEEK sat = WEEK.SATURDAY;
  WEEK mon = WEEK.MONDAY;

  print(sat < mon); //throws an error
}

Output: Error: The operator ‘<’ isn’t defined for the class ‘WEEK’. ‘WEEK’ is from ‘package:dartpad_sample/main.dart’ (‘lib/main.dart’). print(sat < mon); //throws an error

Dart Comparision Operator Examples

Enum provides compareByIndex that compares the values by their index.

int compareByIndex<T extends Enum>(
T value1,
T value2
)

It returns an int value.

Here is a dart enum compareByIndex example

enum WEEK { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

void main() {
  print(Enum.compareByIndex(WEEK.SUNDAY, WEEK.MONDAY)); // 6
  print(Enum.compareByIndex(WEEK.MONDAY, WEEK.MONDAY)); // 0
  print(Enum.compareByIndex(WEEK.MONDAY, WEEK.SUNDAY)); //-6
}

You can also add an extension method to Enum constants in Dart.

When you are defining an extension method as an operator, the keyword operator must be added before an operator.

Otherwise, throws an error Error: Operator declarations must be preceded by the keyword ‘operator’.

Here is a Dart Enum Comparision operator example

enum WEEK { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }

extension EnumOperators on WEEK {
  bool operator >(WEEK current) {
    return index > current.index;
  }

  bool operator >=(WEEK current) {
    return index >= current.index;
  }

  bool operator <(WEEK current) {
    return index < current.index;
  }

  bool operator <=(WEEK current) {
    return index <= current.index;
  }
}

void main() {
  print(WEEK.SUNDAY < WEEK.MONDAY); // false
  print(WEEK.MONDAY > WEEK.MONDAY); // false
  print(WEEK.MONDAY <= WEEK.SUNDAY); // true
}

Conclusion

By default, the double equal(==) operator works with Enum objects in dart.Method Dart Enum.compareByIndex returns an index that compares with the operator.

Enum Comparision operators work by adding an extension operator.

THE BEST NEWSLETTER ANYWHERE
Join 6,000 subscribers and get a daily digest of full stack tutorials delivered to your inbox directly.No spam ever. Unsubscribe any time.

Similar Posts
Subscribe
You'll get a notification every time a post gets published here.





Related posts

How to convert Double to Integer or Integer to double in Dart| Flutter By Example

Perl How to: Find a Given Variable String is numeric or not

Dart/Flutter: Check if String is Empty, Null, or Blank example

How to generate Unique Id UUID in Dart or Flutter Programming| Dart or Flutterby Example

How to Sort List of numbers or String in ascending and descending in Dart or Flutter example

Dart Example - Program to check Leap year or not

Dart Example to count the number of digits in a number| Decimals Count in Dart