首页 > 解决方案 > 我正在写颤振代码,我得到一个与 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中,错误是“无效的常量值”。

我想将这些参数从外部传递给这个无状态小部件。

标签: flutterdart

解决方案


试试这个,只需从构造函数中删除 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,
    );
  }
}

推荐阅读