flutter - 我正在写颤振代码,我得到一个与 const (invalid constant value) 相关的错误,代码如下所示
问题描述
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
class InputField extends StatelessWidget {
const InputField(
{
@required this.labelText,
@required this.onChanged,
@required this.icon,
@required this.validator,}
);
final String labelText;
final void Function(String) onChanged;
final IconData icon;
final String Function(String) validator;
@override
Widget build(BuildContext context) {
return TextFormField(
decoration: const InputDecoration(
prefixIcon: Icon(icon),
labelText: labelText,
),
onChanged: onChanged,
validator: validator,
);
}
}
错误在(icon)中,ide 说“创建常量的参数必须是常量表达式。尝试使参数成为有效常量,或者使用'new'来调用构造函数。”
另一个在labelText中,错误是“无效的常量值”。
我想将这些参数从外部传递给这个无状态小部件。
解决方案
试试这个,只需从构造函数中删除 const
class InputField extends StatelessWidget {
InputField(
{
@required this.labelText,
@required this.onChanged,
@required this.icon,
@required this.validator,}
);
final String labelText;
final void Function(String) onChanged;
final IconData icon;
final String Function(String) validator;
@override
Widget build(BuildContext context) {
return TextFormField(
decoration: InputDecoration(
prefixIcon: Icon(icon),
labelText: labelText,
),
onChanged: onChanged,
validator: validator,
);
}
}
推荐阅读
- swift - 在添加 LinkPresentation 视图的堆栈上重用单元格时不显示元素
- telosys - Telosys 不生成列定义(即用于 CHAR 列)
- python - Plotly-Dash:如何从 Dash WebApp 中删除状态图标?
- sql - 使用 group by 和 max() 查询不会使用索引
- python - 8 拼图游戏。如何检查和更改代表游戏板图块的目录键值
- node.js - 如何使用 tilda~ 从命令行安装 npm 包?
- erlang - 如何编译包含来自 erl shell 的 Erlang 文件?
- google-app-engine - Google App Engine 网址格式改为显示默认服务
- vue.js - 如何在 Vue 3 的 Composition API 中对反应性嵌套对象使用 .value?
- sql-server - 使用 Python 将 .xls DataFrame 插入 SQL 表