Slidable(
groupTag: 0,
key: UniqueKey(),
endActionPane: ActionPane(
children: [
SlidableAction(
onPressed: (BuildContext context) {
//whatever I will do here
},
icon: Icons.delete
)// SvgPicture.asset(Assets.svg.trash.svg()),)
],
),
child: _makeColumnTile(
myCard,
),
);
这只是一个基本的可滑动项,我对每个列表项都这样做。我理解,并且可以使用可滑动项和listTile。但是,我想把我自己的自定义svg文件保存在我的assets文件夹中,而不是预先构建的图标。但是icon:
显然只需要IconData
我尝试将svg直接与SvgPicture.asset(Assets.svg.trash.svg())
放在一起,但错误是
参数类型SvgPicture
不能赋值给参数类型IconData?
,
同样,当我想将Icon
赋值给icon
时,会弹出此错误。
参数类型“Icon”不能分配给参数类型“IconData?”。
我明白为什么我不能指定这些属性,但是有没有什么方法可以解决这个问题呢?
2条答案
按热度按时间2hh7jdfx1#
SlidableAction
在其icon
属性中只接受IconData
。MaterialIcons的列表在here中可用。对于您的用例,您可以改用
CustomSlidableAction
(检查包的API参考here)。您可以将SVG作为子对象传递给它。
o2gm4chl2#
Flutter无法从svgs生成IconData。您必须将其转换为ttf文件并将其用作图标源。您可以使用在线转换器(如https://fluttericon.com)或使用包(如https://pub.dev/packages/icon_font_generator)在本地进行转换
然后将其导入到pubspec.yaml中,如下所示:
然后将Icon传递给小部件: