Flutter:参数类型 'Image' 无法分配给参数类型 'IconData'

Flutter : The argument type 'Image' can't be assigned to the parameter type 'IconData'

我想使用资产中的图像作为图标,然后构建列表,但是在尝试将 Image.asset 作为 class 添加到图标时出现了一些错误作为数据类型为 IconData 的变量,而不是将图标用作 class.

有解决这个问题的办法吗?

谢谢。

class Menu {
  const Menu({this.icon, this.title});

  final IconData icon;
  final String title;
}

const List<Menu> menus = const <Menu>[
  const Menu(title: 'menu_icon_1', icon: Image.asset('assets/menu/1-1.png')),
],
error: The argument type 'Image' can't be assigned to the parameter type 'IconData'. (argument_type_not_assignable at [sinergi] lib\home.dart:12)

请使用ImageIcon

class Menu {
  const Menu({this.icon, this.title});

  final ImageIcon icon;
  final String title;
}

const List<Menu> menus = const <Menu>[
  const Menu(title: 'menu_icon_1', icon: ImageIcon(AssetImage('assets/menu/1-1.png'))),
];

如果你想要默认图标

class Menu {
    const Menu({this.icon, this.title});

    final IconData icon;
    final String title;
}

const List<Menu> menus = const <Menu>[
    const Menu(title: 'Trending', icon: Icons.trending_up),
    const Menu(title: 'Favorite', icon: Icons.favorite),
    const Menu(title: 'Search', icon: Icons.search),
    const Menu(title: 'Category', icon: Icons.category),
    const Menu(title: 'Settings', icon: Icons.settings),
];

要将图像设置为显示为 图标,您需要传递一个 ImageProvider 实例。为此,您需要创建任何 class 的实例,它是 ImageProvider 的后代,例如 AssetImageNetworkImageMemoryImageResizeImage.下面的示例使用 AssetImage 加载图像。

const List<Menu> menus = const <Menu>[
  const Menu(title: 'menu_icon_1', icon: ImageIcon(AssetImage('assets/menu/1-1.png'))),
];