gpt4 book ai didi

flutter - 如何从 Dart 中的 switch 语句获取常量字符串

转载 作者:IT王子 更新时间:2023-10-29 07:15:13 29 4
gpt4 key购买 nike

我正在尝试将 TextFormField 的提示文本和标签文本设置为来自 getLabel() 方法的字符串,具体取决于哪个 FormFieldTypegenerateFormField() 中作为参数给出。
但是,hint- 和 labeltext 需要一个常量值。 getLabel() 抛出此错误:Invalid constant value.dart(invalid_constant)

如何从 switch 语句中获取常量字符串?

class InformationFormField {

TextFormField generateFormField(FormFieldType type) {
return new TextFormField(
decoration: const InputDecoration(
icon: const Icon(Icons.delete),
hintText: getLabel(type), // This requires a constant String
labelText: getLabel(type), // This requires a constant String
),
keyboardType: TextInputType.text,
);
}

String getLabel(FormFieldType type) {
switch(type) {
case FormFieldType.firstname:
return 'First name';
case FormFieldType.lastname:
return 'Last name';
}

}

enum FormFieldType {
firstname,
lastname
}

最佳答案

TL;DR:只需删除构造 InputDecorationconst 限定符即可。


在 Dart 中,const 表示一个编译时常量,一个在编译时已知并用作性能优化的值。

由于您正在调用一个函数(并传递一个非 const 参数,同样如此),该函数的返回值在编译时无法获知。

您实际上不需要使用常量值。您用 //This requires a constant String 标记的行之所以需要常量,只是因为您声明了您打算构造一个 const InputDecoration。 (构造一个编译时常量自然要求其所有构造参数也是编译时常量。)

关于flutter - 如何从 Dart 中的 switch 语句获取常量字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57593954/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com