首页 > 解决方案 > 颤振自定义注释,如Required

问题描述

我想要的是一个注释,@required但我想根据参数的类型做一些逻辑,并显示使用警告,比如做什么@required。(如果类型是ParamTuple显示警告)

abstract class Tuple {
  const Tuple();
}

abstract class NullTuple extends Tuple {
  const NullTuple();
}

abstract class ParamTuple extends Tuple {
  const ParamTuple();
}

如果类型是 ParamTuple,我想警告用户,但在其他情况下我不想要警告。

在下面的代码中,应该实现逻辑

const TupleRequired tupleRequired = TupleRequired();

class TupleRequired {
  const TupleRequired();
}

我也认为我应该添加一个analysis_options.yaml来显示警告,比如@required我的@tupleRequired.

我想要的示例

class Example {
  // Tuple0 extends NullTuple 
  void nullParam({@tupleRequired Tuple0 param}) {}

  // Tuple1 extends ParamTuple  
  void withParam({@tupleRequired Tuple1 param}) {}
}

所以当我们想使用这些方法时,我想看到下面的自定义警告:

  1. nullParam:如果我把它留空,什么都不显示,但如果我传递一个参数,则表明该参数是多余的,将被忽略
  2. withParam:如果我把它留空,则显示传递参数的警告,如果我传递一个参数,则什么也不显示

标签: flutterdart

解决方案


在构造函数中,您可以使用断言,如:

class TupleRequired {
  final Tuple touple;
  TupleRequired(this.touple): assert(touple is! ParamTuple);

}

在飞镖是/是!检查对象是否属于特定类型,例如

var s = 'this is a string type';
print(s is String); // prints true because s is string
print(s is! int); // prints true because s is not an int

推荐阅读