错误:无法将参数类型“图片”分配给参数类型“ IconData”

时间:2019-09-23 01:34:57

标签: flutter dart

我想使用资产中的图像作为图标,然后建立列表,但是尝试将Image.asset作为类添加到具有IconData作为数据类型的变量作为图标时,发生了一些错误,而不是使用Icons作为课。

有解决此问题的主意吗?

谢谢。

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')),
],

错误:无法将参数类型“图像”分配给参数类型“ IconData”。 (在[sinergi] lib \ home.dart:12处为argument_type_not_assignable)

3 个答案:

答案 0 :(得分:1)

如果要使用默认图标

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),
];

答案 1 :(得分:1)

要将图片设置为显示为图标,您需要传递一个ImageProvider实例。为此,您需要创建属于ImageProvider后代的任何类的实例,例如AssetImageNetworkImageMemoryImageResizeImage。以下示例使用AssetImage加载图像。

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

答案 2 :(得分:0)

请使用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'))),
];