将小部件内的图标名称传递给变量

Passing the icon name inside a widget to a variable

如何将图标直接传递给 abstract class Widget extends ?我正在尝试创建此小部件,但它不支持我将图标名称放入字符串中并将其传递到图标 (icons)

              buildTextFormField(
              "Email teste", emailController, "usuario@imodulo.com",
              ),

    
Widget buildTextFormField(
  String label,
  TextEditingController c,
  String hintText,
  String icone,
) {
  return TextFormField(
    controller: c,
    autofocus: true,
    obscureText: true,
    keyboardType: TextInputType.emailAddress,
    style: TextStyle(color: Colors.white, fontSize: 16),
    decoration: InputDecoration(
      labelText: label,
      **prefixIcon: Icon(Icons.'$icone'),**
      hintText: hintText,
      labelStyle: TextStyle(color: Colors.white),
    ),
  );
}

如果您查看 Icons,您会发现它们只是字体的索引。所以,实际上图标并没有 'names' 它们有数字。

这是一个随机示例:

  static const IconData checklist = IconData(0xe15b, fontFamily: 'MaterialIcons');

因此,与其尝试使用名称 'checklist' 实例化图标,不如使用其编号 0xe15b.

你打算在哪里存储图标的名称(数据库?后端?),而不是存储一个数字,你的代码变成:

  prefixIcon: Icon(IconData(icone, fontFamily: 'MaterialIcons')),

我传递了一个iconData参数

Widget buildTextFormField(
  String label,
  TextEditingController c,
  String hintText,
  **IconData icone,**
) {
  return TextFormField(
    controller: c,
    keyboardType: TextInputType.emailAddress,
    style: TextStyle(color: Colors.white, fontSize: 16),
    decoration: InputDecoration(
      labelText: label,
      **prefixIcon: Icon(icone),**
      hintText: hintText,
      labelStyle: TextStyle(color: Colors.white),
    ),
  );
}