Flutter ——3步骤使用自定义Icon

作者: 2c3d4f7ba0d4 | 来源:发表于2019-07-15 21:50 被阅读5次

    写在前面:一名有三年Android开发经验的女程序员(欢迎大家关注我 ~期待和大家一起交流和学习Android的相关知识)

    官方Icon

    Flutter本身自带了MaterialDesign的图标集,在pubspec.yaml中有如下配置

    ...
    flutter:
      users-material-design: true
    ...
    

    通过以上配置,就可以在代码中引用任何MD的官方图标(需翻墙)。这些图片都定义在了IconDatas中。

    Icon(Icons.favorite)
    

    第三方Icon

    第三方图标库和MD的图片库在使用上没有区别,但需要手动引入和配置路径。为了方便复用,我们可以把图标制作为一个第三方库来调用。例如:

    ...
    import 'package:my_icon/my_icon.dart';
    
    ...
    Icon icon = Icon(MyIcon.zhihu);   # 知乎LOGO
    

    制作Icon库

    1.制作ttf文件

    一般我们会在iconfont.cn上去寻找合适的图标集或自行绘制,完成后打包下载,压缩包里有制作好的ttf文件。


    2.编写配置文件

    作为示例,在/lib目录下创建一个名为my_font的文件夹,文件夹中的pubspec.yaml内容如下:

    name: my_font
    description: The font for my application
    author: Lynx <lynx86@126.com>
    homepage: http://www.a-lightyear.com/
    version: 1.0.0
    
    environment:
      sdk: ">=2.0.0-dev.28.0 <3.0.0"
    
    dependencies:
      flutter:
        sdk: flutter
    
    dev_dependencies:
      recase: "^2.0.0+1"
    
    flutter:
      fonts:
        - family: MyIcon
          fonts:
            - asset: lib/fonts/iconfont.ttf
              weight: 400
    

    从配置文件看出,iconfont下载的ttf文件放在/lib/my_font/lib/fonts/下面,该路径可以自行设置。

    3.编写库文件

    library font_social_flutter;
    
    import 'package:flutter/widgets.dart';
    
    class MyIcon {
      static const IconData zhihu = const _MyIconData(0xe6a2);
      static const IconData wechat = const _MyIconData(0xe697);
      static const IconData alipay = const _MyIconData(0xe698);
      static const IconData weibo = const _MyIconData(0xe6ab);
      static const IconData wechat_friends = const _MyIconData(0xe6ae);
      static const IconData qq = const _MyIconData(0xe6ac);
    }
    
    class _MyIconData extends IconData {
      const _MyIconData(int codePoint)
          : super(
        codePoint,
        fontFamily: 'MyIcon',
        fontPackage: 'my_icon',
      );
    }
    

    这里的0xe6a2即为每个Icon的unicode字符。在iconfont下载包里有一个html文件,打开后可以看到每个图片的unicode值。


    使用Icon

    引入Icon库

    在使用之前,需要把该库引入到当前flutter工程中。编辑flutter项目的pubspec.yaml,添加如下内容:

    ...
    dependencies:
      flutter:
        sdk: flutter
      ...
      my_icon:
          path: lib/my_icon/   # 在这里引入第三方icon库
      ...
    ...
    

    使用Icon

    如开篇所述,在做好以上准备工作后,即可以如MD图标一般方便的引入自制的图标集。

    ...
    import 'package:my_icon/my_icon.dart';
    
    ...
    Icon icon = Icon(MyIcon.zhihu);   # 知乎LOGO
    

    相关文章

      网友评论

        本文标题:Flutter ——3步骤使用自定义Icon

        本文链接:https://www.haomeiwen.com/subject/gmgokctx.html