如何断言类型参数不是;“动态”;在Dart中的常量构造函数中?

如何断言类型参数不是;“动态”;在Dart中的常量构造函数中?,dart,Dart,假设我有一个非常基本的结构: class-Foo{ 最终T形杆; 康斯特福(本酒吧); } 我想强制执行类型专门化,例如,防止使用Foo(1)创建实例(Foo(1)) 一种方法是在构造函数初始值设定项列表中添加一个assert语句,以确保T!=动态: class-Foo{ 最终T形杆; constfoo(this.bar):断言(T!=dynamic,“不能创建动态类型的Foo”); } 不幸的是,它似乎与const构造函数不兼容,因为它会引发一个错误:对于T和dynamic,常量值无效 是

假设我有一个非常基本的结构:

class-Foo{
最终T形杆;
康斯特福(本酒吧);
}
我想强制执行类型专门化,例如,防止使用
Foo(1)
创建实例(
Foo(1)

一种方法是在构造函数初始值设定项列表中添加一个
assert
语句,以确保
T!=动态

class-Foo{
最终T形杆;
constfoo(this.bar):断言(T!=dynamic,“不能创建动态类型的Foo”);
}
不幸的是,它似乎与
const
构造函数不兼容,因为它会引发一个错误:
对于
T
dynamic
,常量值无效

是否有任何解决方法,为什么
动态
被视为非常量

  • 一旦对象被实例化,
    T
    就被修复了。因此,您可以在类中的其他地方断言。它可以构造,但不能使用

  • 考虑改用。加:

    分析器:
    语言:
    严格原始类型:true
    
    到您的
    analysis\u options.yaml
    文件,以禁止
    Foo(1)
    。(请注意,仍然允许显式使用
    Foo(1)
    。)