flutter 抖动-可滑动,无法为可滑动的图标属性放置svg

rn0zuynd  于 2023-02-25  发布在  Flutter
关注(0)|答案(2)|浏览(179)
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?”。
我明白为什么我不能指定这些属性,但是有没有什么方法可以解决这个问题呢?

2hh7jdfx

2hh7jdfx1#

SlidableAction在其icon属性中只接受IconData。MaterialIcons的列表在here中可用。

SlidableAction(
   icon: Icons.archive,
 ),

对于您的用例,您可以改用CustomSlidableAction(检查包的API参考here)。

CustomSlidableAction (
  child: //Your action's icon or label.
 )

您可以将SVG作为子对象传递给它。

o2gm4chl

o2gm4chl2#

Flutter无法从svgs生成IconData。您必须将其转换为ttf文件并将其用作图标源。您可以使用在线转换器(如https://fluttericon.com)或使用包(如https://pub.dev/packages/icon_font_generator)在本地进行转换
然后将其导入到pubspec.yaml中,如下所示:

fonts:
- family: MyIcons
  fonts:
    - asset: assets/fonts/MyIcons.ttf

然后将Icon传递给小部件:

SlidableAction(
      onPressed: (_) {},
      backgroundColor: Color(0xFFFE4A49),
      foregroundColor: Colors.white,
      icon: MyIcons.Delete,
      label: 'Delete',
    ),

相关问题