“String”类型不是“FontStyle”类型的子类型

Posted

技术标签:

【中文标题】“String”类型不是“FontStyle”类型的子类型【英文标题】:type 'String' is not a subtype of type 'FontStyle' 【发布时间】:2021-04-16 18:57:11 【问题描述】:

我试图将 FontStyle 值和 FontWeight 值存储在 Flutter 中的 HIVE 数据库中作为字符串值。 但是,在获取值时,我面临无法将 String 值转换为 FontStyle 或 FontWeight 值的问题。我可以使用 If 语句并实现它,但有没有办法将 String "FontStyle.italic" 转换为 FontStyle.italic?

【问题讨论】:

是否有与这些类等效的整数?示例 FontWeight.w900 = 1001239(Some Integer) ? @JoãoSoares 您的问题仅针对 FontStyle 吗?因为只有正常或斜体。你可以为它做一个简单的解决方案。 【参考方案1】:

FontStyle 的类型为enum,因此默认情况下不能有整数等价。但是,由于FontStyle 只有两个常量名称normalitalic,因此您可以创建自己的整数等效项。例如,normal 为 0,italic 为 1。

示例:

// fontStyleInt is the int retreived from Hive (0 or 1)
int fontStyleInt;

// In the build
Text("Text", style: TextStyle(fontStyle: fontStyleInt == 0 ? FontStyle.normal : FontStyle.italic))

【讨论】:

以上是关于“String”类型不是“FontStyle”类型的子类型的主要内容,如果未能解决你的问题,请参考以下文章

类型'String'不是get方法颤动中类型'Null'的子类型

类型“String”不是类型转换中“List<String>”类型的子类型?

“String”类型不是“List<String>”类型的子类型

类型'int'不是颤振中'key'错误的'String'类型的子类型

Flutter 错误:类型 '(String, ItemPriority) => void' 不是类型 '(String, [ItemPriority]) => dynamic' 的子类型

ValueNotifier 未处理的异常:类型“String”不是“index”类型“int”的子类型