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

Dart - Circular dependency while initializing static field

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

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)';
}

使用此 class 时,例如使用下面的语句,我得到一个 "Circular dependency while initializing static field"-error.

Currency currency = Currency.EURO;

谁能给我解释一下这是怎么回事?

我无法重现你的错误,但是在你将其他人重定向到

的构造函数之前缺少 const
const Currency(this.symbol, this.name);