dispatchable 0.0.1-dev.2 copy "dispatchable: ^0.0.1-dev.2" to clipboard
dispatchable: ^0.0.1-dev.2 copied to clipboard

discontinuedreplaced by: class_switch
outdated

Package containing the annotations used by the `dispatchable_generator` package to specify which classes to generate dispatchers for.

example/example.dart

import 'package:dispatchable/dispatchable.dart';

part 'example.g.dart';

@dispatchable
abstract class Fruit {}

class Apple extends Fruit {}

class Orange extends Fruit {}

void main() {
  assert(FruitDispatcher.fruitDispatcher((apple) {
        return 1;
      }, (orange) {
        return 2;
      })(Apple()) ==
      1);
  assert(MyFruitHandler().acceptFruit(Orange()) == 2);
  assert(MyFruitHandlerWithADefault().acceptFruit(Orange()) ==
      'orange is special');
}

class MyFruitHandler extends FruitDispatcher<int> {
  @override
  int apple(Apple apple) {
    return 1;
  }

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

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

  @override
  String orange(Orange orange) {
    return 'orange is special';
  }
}
0
likes
0
points
15
downloads

Publisher

verified publishernigelgott.com

Weekly Downloads

Package containing the annotations used by the `dispatchable_generator` package to specify which classes to generate dispatchers for.

Repository (GitHub)
View/report issues

License

unknown (license)

More

Packages that depend on dispatchable