4

我想将资产中的图像用作图标,然后构建列表,但是在尝试将Image.asset作为类添加到图标作为具有IconData数据类型的变量而不是将图标用作班级。

任何想法来解决这个问题?

谢谢你。

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)
4

3 回答 3

5

请使用 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'))),
];
于 2019-09-23T02:00:49.457 回答
2

要将图像设置为图标显示,您需要传递一个 ImageProvider 实例。为此,您需要创建任何类的实例,该类是 ImageProvider 诸如 AssetImage、  NetworkImage、 MemoryImage和 的后代ResizeImage。下面的示例用于 AssetImage 加载图像。

const List<Menu> menus = const <Menu>[
  const Menu(title: 'menu_icon_1', icon: ImageIcon(AssetImage('assets/menu/1-1.png'))),
];
于 2020-11-03T06:46:43.493 回答
-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),
];
于 2020-11-02T08:50:38.053 回答