热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

flutter显示图标_小技巧:Flutter如何引用自定义图标

Flutter自带了Material的图标,但是还是不太适合中国的国情,比如微信、微博、QQ这些国内常用的图标就没有收录,或者为了让APP

Flutter自带了Material的图标,但是还是不太适合中国的国情,比如微信、微博、QQ这些国内常用的图标就没有收录,或者为了让APP更有个性,我们希望换掉Material的风格,这个时候,自定义图标就成了一个不大不小的问题,Flutter对于引用自定义的解决思路其实不太复杂,按照以下思路走就可以了:

把图标打包成ttf文件放在项目路径下并且修改pubspec.yaml文件,比如:

fonts:

- family: MyIcons

fonts:

# 字体文件所在的路径+文件名

- asset: assets/fonts/MyIcons.ttf

然后添加一个.dart文件,我习惯按font family名字命名为my_icons.dart(注意文件名要符合dart的代码规范),代码内容如下:

import 'package:flutter/widgets.dart';

class MyIcons {

CustomIcons._();

static const _kFontFam = 'MyIcons';

static const _kFontPkg = null;

static const IconData weibo = IconData(0xf18a, fontFamily: _kFontFam, fontPackage: _kFontPkg);

static const IconData qq = IconData(0xf1d6, fontFamily: _kFontFam, fontPackage: _kFontPkg);

static const IconData wechat = IconData(0xf1d7, fontFamily: _kFontFam, fontPackage: _kFontPkg);

}

上述代码有两点需要特别注意:

_kFontFam这个私有变量要和pubspec.yaml的family的名称一致,

IconData第一个参数是codePoint,记得要图标在字体内的Unicode代码一致

设置好了就可以开始使用了,以下是一个例子:

import './assets/my_icons.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'Flutter Custom Icon Demo',

home: Scaffold(

appBar: AppBar(

title: Text('Login with WeChat'),

),

body: Center(

child: Icon(MyIcons.wechat), //重点在这里

),

),

);

}

}

...其实还有更省力的办法

我说的不是.ttf文件的难题,但是对于Flutter,这还远远不够,我说的是

新建我的图标集:

打开网站,在Names中搜索或点击图标进行选择,目前可以选择的图标集有

Material\Font Awesome 5\Entypo\Typicons\Iconic\Modern Pictograms\Meteocons\MFG Labs\Maki\Zocial\Brandico\Elusive\Linecons\Web Symbols\Linearicons Free\Octicons\RPG Awesome,如果没有的话,也可以自行上传SVG

点完餐后点击Download下载压缩包,解压,找到字体文件和.dart文件,拷贝到你的Flutter项目路径下,参考前述步骤1修改pubspec.yaml文件,参考步骤3引用图标;

修改我的图标集

fluttericon是个纯前端的网站,那么我之前的图标集怎么找的回来呢,这就需要你好好保管好之前下载的压缩包,重新上传到网站就可以找回并修改你的图标集了。



推荐阅读
author-avatar
两只兔子哦
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有