我想为我的dart代码创建一些自己的元数据,例如@table、@column,但我找不到任何关于它的有用文档.

但我确实发现angular中有一些特殊的元数据(例如NgController).dart :https://github.com/angular/angular.dart/blob/master/demo/todo/web/todo.dart#L52

如何在Dart中创建自己的元数据?有文件吗?

推荐答案

Dart支持元数据,用于将用户定义的注释附加到程序 struct .

元数据由一系列注释组成,每个注释都以字符@开头,后面跟着一个以标识符开头的常量表达式.如果表达式不是以下之一,则为编译时错误:

  1. 对编译时间常量变量的引用.
  2. 对常量构造函数的调用.

元数据可以出现在库、部件标题、类、类型定义、类型参数、构造函数、工厂、函数、字段、参数或变量声明之前,也可以出现在导入、导出或部件指令之前.


所以,根据你的建议,常数@table@column受到功能的限制,因为它们不能保存额外的信息(参数).

@DataTable("sale_orders")
class SaleOrder {
  @DataColumn("sale_order_date")
  DateTime date;
}

@table
class Product {
  @column
  String name;
}

const DataColumn column = const DataColumn();

const DataTable table = const DataTable();

class DataTable {
  final String name;

  const DataTable([this.name]);
}

class DataColumn {
  final String name;

  const DataColumn([this.name]);
}

但在任何情况下,你都会 Select 最适合自己需要的选项.

Dart相关问答推荐

如何映射作为DART中其他模型基础的复杂模型

Swipe返回手势

Flutter ButtonRow 填充

如何在 Flutter 包/插件开发中添加assets?

Flutter-如何更改文本字段边框 colored颜色 ?

没有 AppBar 的 Flutter 应用设计

为什么我不能将数字转换为双精度数?

如何判断两张 map 的省道是否相等

如何在 Flutter 中为 PopupMenu 添加圆角边框?

Expansion Panel底部溢出

Flutter 使用什么 colored颜色 系统,为什么我们使用 `const Color` 而不是 `new Color`

在 Dart 中发送 SMTP 邮箱

一个集合如何确定两个对象在dart中相等?

polymer SEO 是否友好?

Dart:你如何让 Future 等待 Stream?

带范围的dartswitch

Dart 中 == 和 === 有什么区别?

具有 Maps 的 Null 感知运算符

在 Dart 和 Pub 中,我应该将 pubspec.lock 添加到我的 .gitignore 吗?

在 Dart 中验证邮箱地址?