Skip to main content

union_type_lint 1.0.1 copy "union_type_lint: ^1.0.1" to clipboard
union_type_lint: ^1.0.1 copied to clipboard

A Dart analyzer plugin that validates UnionType annotations.

example/example.dart

class BuildContext {}

abstract class IOnTap {
  void onTap(BuildContext context, dynamic data);
}

class MyOnTap implements IOnTap {
  const MyOnTap();
  @override
  void onTap(BuildContext context, data) {
  }
}

class MyInvalidOnTap {
  const MyInvalidOnTap();
  void onTap(BuildContext context, data) {
  }
}

class UnionType {
  final List<Type> allowed;
  const UnionType(this.allowed);
}

typedef VoidCallback = void Function();
typedef OnTapCtx = void Function(BuildContext);
typedef OnTapCtxData = void Function(BuildContext, dynamic);

@UnionType([VoidCallback, OnTapCtx, OnTapCtxData, IOnTap])
typedef OnTap = dynamic;

class TestClass {
  final OnTap? onTap;
  const TestClass(this.onTap);
}

void notify(OnTap fn) {print('notify: ' + fn);}

final valid = TestClass((BuildContext ctx) => print('valid')); // ✅
final invalid = TestClass((int value) => print('invalid')); // ❌

final validIOnTap = TestClass(const MyOnTap()); // ✅
final invalidIOnTap = TestClass(const MyInvalidOnTap()); // ❌ MyInvalidOnTap don't implement IOnTap

void main() {
  notify(() => print('valid')); // ✅
  notify((double v) => print('invalid')); // ❌
}
1
likes
125
points
11
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

A Dart analyzer plugin that validates UnionType annotations.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

analysis_server_plugin, analyzer

More

Packages that depend on union_type_lint