class_switch 0.0.1-dev.1 copy "class_switch: ^0.0.1-dev.1" to clipboard
class_switch: ^0.0.1-dev.1 copied to clipboard

outdated

class_switch lets you you switch over all the sub-classes of a class instance or over multiple different classes at once. Pairs with class_switch_generator which does the actual code generation to ena [...]

example/example.dart

import 'package:class_switch/class_switch.dart';

part 'example.g.dart';

@ClassSwitch()
abstract class Fruit {}

class Apple extends Fruit {}

class Orange extends Fruit {}

void main() {
  var myFruit = Apple();

  var result = myFruit.$switch(
      (apple) => 1, //
      (orange) => 2);
  assert(result == 1);

  result = MyFruitSwitcher().$switch(Orange());
  assert(result == 2);

  var strResult = myFruit.$switch((apple) => 'x', (orange) => 'y');

  assert(strResult == 'x');
}

class MyFruitSwitcher extends _$FruitSwitcher<int> {
  @override
  int apple(Apple apple) {
    return 1;
  }

  @override
  int orange(Orange orange) {
    return 2;
  }
}

class MyFruitHandlerWithADefault extends _$FruitSwitcherWithDefault<String> {
  @override
  String defaultValue() {
    return 'default';
  }

  @override
  String orange(Orange orange) {
    return 'orange is special';
  }
}
1
likes
0
pub points
0%
popularity

Publisher

verified publishernigelgott.com

class_switch lets you you switch over all the sub-classes of a class instance or over multiple different classes at once. Pairs with class_switch_generator which does the actual code generation to enable class switching.

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

meta

More

Packages that depend on class_switch