热门标签 | 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是个纯前端的网站,那么我之前的图标集怎么找的回来呢,这就需要你好好保管好之前下载的压缩包,重新上传到网站就可以找回并修改你的图标集了。



推荐阅读
  • Flutter中计算文本尺寸的方法
    在Flutter开发中,有时需要计算文本的宽度和高度。本文介绍了一种利用TextPainter类实现这一功能的方法。 ... [详细]
  • 字节流(InputStream和OutputStream),字节流读写文件,字节流的缓冲区,字节缓冲流
    字节流抽象类InputStream和OutputStream是字节流的顶级父类所有的字节输入流都继承自InputStream,所有的输出流都继承子OutputStreamInput ... [详细]
  • 在Java项目中,当两个文件进行互相调用时出现了函数错误。具体问题出现在 `MainFrame.java` 文件中,该文件位于 `cn.javass.bookmgr` 包下,并且导入了 `java.awt.BorderLayout` 和 `java.awt.Event` 等相关类。为了确保项目的正常运行,请求提供专业的解决方案,以解决函数调用中的错误。建议从类路径、依赖关系和方法签名等方面入手,进行全面排查和调试。 ... [详细]
  • 在Spring Boot项目中,通过YAML配置文件为静态变量设置值的方法与实践涉及以下几个步骤:首先,创建一个新的配置类。需要注意的是,自动生成的setter方法默认是非静态的,因此需要手动将其修改为静态方法,以确保静态变量能够正确初始化。此外,建议使用`@Value`注解或`@ConfigurationProperties`注解来注入配置属性,以提高代码的可读性和维护性。 ... [详细]
  • Android目录遍历工具 | AppCrawler自动化测试进阶(第二部分):个性化配置详解
    终于迎来了“足不出户也能为社会贡献力量”的时刻,但有追求的测试工程师绝不会让自己的生活变得乏味。与其在家消磨时光,不如利用这段时间深入研究和提升自己的技术能力,特别是对AppCrawler自动化测试工具的个性化配置进行详细探索。这不仅能够提高测试效率,还能为项目带来更多的价值。 ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • 本文介绍了在 Java 编程中遇到的一个常见错误:对象无法转换为 long 类型,并提供了详细的解决方案。 ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • JComponentJLabel的setBorder前言用例2205262241前言setBorder(Border边框)实现自JComponentjava.awt.Insets ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 本文详细解析了客户端与服务器之间的交互过程,重点介绍了Socket通信机制。IP地址由32位的4个8位二进制数组成,分为网络地址和主机地址两部分。通过使用 `ipconfig /all` 命令,用户可以查看详细的IP配置信息。此外,文章还介绍了如何使用 `ping` 命令测试网络连通性,例如 `ping 127.0.0.1` 可以检测本机网络是否正常。这些技术细节对于理解网络通信的基本原理具有重要意义。 ... [详细]
  • 在C#编程中,设计流畅的用户界面是一项重要的任务。本文分享了实现Fluent界面设计的技巧与方法,特别是通过编写领域特定语言(DSL)来简化字符串操作。我们探讨了如何在不使用`+`符号的情况下,通过方法链式调用来组合字符串,从而提高代码的可读性和维护性。文章还介绍了如何利用静态方法和扩展方法来实现这一目标,并提供了一些实用的示例代码。 ... [详细]
  • 在Java程序设计中,实现高效的分页功能是提升应用性能的关键之一。本文介绍了通过使用 `PageController` 类来处理大数据集的分页操作,该类能够从一个较大的集合中提取出指定大小的小集合。具体实现中,通过优化数据访问和减少内存消耗,确保了分页操作的高效性和稳定性。此外,文章还探讨了分页算法的优化策略,包括缓存机制和懒加载技术的应用,以进一步提高系统的响应速度和用户体验。 ... [详细]
  • 本文深入探讨了 Spring Cloud 微服务架构中 Gateway 组件的应用,详细介绍了其在实现高效请求路由与过滤方面的关键作用。文章首先从基本配置入手,逐步讲解了如何通过静态路由和动态路由实现灵活的服务访问控制。此外,还特别介绍了如何配置 Gateway 以自动从 Nacos 服务注册中心拉取服务列表,进一步提升系统的可维护性和扩展性。 ... [详细]
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社区 版权所有