flutter - 颤振自定义注释,如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}) {}
}
所以当我们想使用这些方法时,我想看到下面的自定义警告:
nullParam
:如果我把它留空,什么都不显示,但如果我传递一个参数,则表明该参数是多余的,将被忽略withParam
:如果我把它留空,则显示传递参数的警告,如果我传递一个参数,则什么也不显示
解决方案
在构造函数中,您可以使用断言,如:
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
推荐阅读
- javascript - 为什么在nodejs中的不同js页面上访问时会话数据不持久?
- php - 从单独的数组中为每个玩家分配 2 个数字
- r - * 在表格 LaTeX 表格中显示 Rmarkdown 中的错误
- javascript - 如何通过上下文将单击的对象名称和路径发送到另一个组件
- c# - 了解 BluetoothLE 写入特性中的十六进制数据格式(Windows UWP 示例应用程序)
- html - 超链接在边缘浏览器中不起作用,但在 chrome 浏览器中起作用
- svg - 缩放图标 (
- python - 如何制作具有不同值的相同变量的列表?Python
- sql - dolphindb 中的 count(*) 与 count(column)
- mysql - EKS Statefulset Mysql 被 Init 卡住了