Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart-初始化静态字段时的循环依赖项_Dart_Circular Dependency - Fatal编程技术网

Dart-初始化静态字段时的循环依赖项

Dart-初始化静态字段时的循环依赖项,dart,circular-dependency,Dart,Circular Dependency,我是dart新手,刚刚遇到一个我还不明白的问题。 我写了这节课: class Currency { final String symbol; final String name; // constants for all available Currencies static const Currency EURO = const Currency._euro(); static const Currency POUND = const Currency

我是dart新手,刚刚遇到一个我还不明白的问题。 我写了这节课:

class Currency {
    final String symbol;
    final String name;

    // constants for all available Currencies
    static const Currency EURO = const Currency._euro();
    static const Currency POUND = const Currency._pound();
    static const Currency DOLLAR = const Currency._dollar();

    // All available currencies as a list
    static const List<Currency> CURRENCIES = const [
        EURO,
        POUND,
        DOLLAR,
    ];

    // Default constructor
    Currency(this.symbol, this.name);

    // Named constructors
    const Currency._euro() : this('€', 'Euro');

    const Currency._pound() : this('£', 'British Pound');

    const Currency._dollar() : this('\$', 'US Dollar');

    // toString()
    @override
    String toString() => '$symbol ($name)';
}

有人能给我解释一下发生了什么吗?

我无法重现您的错误,但是在您将其他人重定向到的构造函数之前,
常量丢失了

const Currency(this.symbol, this.name);

你用的是哪种飞镖?这是在DDC、dart2js、控制台应用程序、颤振中吗?我将颤振(版本0.1.5)与Dart(版本2.0.0-dev.28.0.flatter-0b4f01f759)一起使用。这确实解决了问题。你能解释一下这是为什么吗?
const Currency._euro()要求
const
,这只适用于
const
构造函数。如果您转发到另一个构造函数,该构造函数也必须是const。不确定这是否是您所要求的。我想我要问的是,为什么省略一个
const
会导致循环依赖。这可能与常量的延迟初始化有关吗?可能,不确定,但我无法重现您的错误。可能是因为我使用了更新的Dart版本(2.0.0-dev.24.0)
const Currency(this.symbol, this.name);