Home > front end >  Dart Annotation - Unable to pass non constant method
Dart Annotation - Unable to pass non constant method

Time:12-03

How can I pass-in non-constant method in Dart Annotations?

Here is my annotation:


class Injectable {
  final String name;
  final Scope scope;
  final List<Provider>? provider;

  const Injectable({this.name = '', this.scope = Scope.factory, this.provider});
}


class Provider<T> {
  final Type? useClass;
  final Object? useValue;
  final T? Function()? usefactory;
  final List<Type> deps;

 const Provider(
      {this.useClass, this.useValue, this.usefactory, this.deps = const []});
}

This works fine:

enter image description here

But when I try to directly pass-in the function. I am getting a compile error:

Any idea what is happening?

enter image description here

Error:


Arguments of a constant creation must be constant expressions. (Documentation)
Try making the argument a valid constant, or use 'new' to call the constructor.

Invalid constant value.

The argument type 'ServiceA' can't be assigned to the parameter type 'ServiceA? Function()?'. (Documentation)

CodePudding user response:

Please try to remove the brackets from inject<ServiceA>(). Just make it inject<ServiceA>.

usefactory-s type is a function, but in your case, you are passing ServiceA type data.

  •  Tags:  
  • dart
  • Related