flutter中使用图标(含自制图标库方案)

简介: flutter中使用图标(含自制图标库方案)

flutter中使用图标(含自定义图标图)


1. 官方图标的使用

1.1 在Flutter中的使用方式

在Flutter中,官方图标库已经为我们提供了足够多的字体图标可以直接使用之,每一个官方图标都有一个唯一的标识码,它们都是Icons类的一个静态属性。我们使用Icons.xxx(xxx表示某个图标的 Flutter ID)来指定图标,并将其作为Icon类的参数。

import 'package:flutter/material.dart';
Icon(
  Icons.format_list_bulleted,
),

Icon类的接口为具有如下属性:

属性 类型 描述
color Color? 绘制图标时使用的颜色。
hashCode int 要显示的图标。
icon IconData? 要显示的图标。
key Key? 控制一个部件如何替换树中的另一个部件。
runtimeType Type 对象运行时类型的表示形式。
semanticLabel String? 图标的语义标签。
size double? 以逻辑像素为单位的图标大小。
textDirection TextDirection? 用于呈现图标的文本方向。

另一个例子是:

Row(
  mainAxisAlignment: MainAxisAlignment.spaceAround,
  children: const <Widget>[
    Icon(
      Icons.favorite,
      color: Colors.pink,
      size: 24.0,
      semanticLabel: 'Text to announce in accessibility modes',
    ),
    Icon(
      Icons.audiotrack,
      color: Colors.green,
      size: 30.0,
    ),
    Icon(
      Icons.beach_access,
      color: Colors.blue,
      size: 36.0,
    ),
  ],
)

1.2 图标查询

以下图标名使用时,如Format List Numbered,对应的 Flutter IDformat_list_numbered

1.2.1 Action

1.2.2 Navigation

1.2.3 Social

1.2.4 Content

1.2.5 Image

1.2.6 Communication

1.2.7 File

1.2.8 Maps

1.2.9 Audio & Video

1.2.10 Toggle

1.2.11 Alert

1.2.12 Editor

1.2.13 Notification

1.2.14 Hardware

1.2.15 Device

1.2.16 Search

1.2.17 Places

1.2.18 Home

2. 自制字体图标库(能像官方图标那样使用)

2.1 绘制图标图像

可以使用Adobe IllustratorInkscape等软件绘制SVG格式的图标。也可以上一些网站下载SVG矢量图标,如阿里矢量图标库谷歌矢量图标库等等:

2.2 生成字体文件

可以借助一些方便的在线工具直接生成,如:IcoMoonhttps://icomoon.io/

点击Import Icons导入你需要制作成字体图标的SVG图片:

完成后点击 Generate Font,点击 **Download**下载你的字体文件:

2.3 将图标字体引入Flutter项目

打开我们的flutter项目,建立assets目录,在其下建立``子目录iconfonts

将字体文件解压到iconfonts子目录下,所需要的字体文件在其中的fonts目录下:

将该文件引入 **pubspec.yaml**文件:

2.4 封装成图标库

// jcicons.dart
import 'package:flutter/foundation.dart' show defaultTargetPlatform;
import 'package:flutter/widgets.dart';
class PlatformAdaptiveIcons implements JCIcons {
  const PlatformAdaptiveIcons._();
  static bool _isCupertino() {
    switch (defaultTargetPlatform) {
      case TargetPlatform.android:
      case TargetPlatform.fuchsia:
      case TargetPlatform.linux:
      case TargetPlatform.windows:
        return false;
      case TargetPlatform.iOS:
      case TargetPlatform.macOS:
        return true;
    }
  }
}
class JCIcons {
  JCIcons._();
  static PlatformAdaptiveIcons get adaptive => const PlatformAdaptiveIcons._();
  static const IconData me = IconData(0xecb5, fontFamily: 'jcicon');
  static const IconData friend = IconData(0xecb6, fontFamily: 'jcicon');
  static const IconData new_ = IconData(0xecb7, fontFamily: 'jcicon');
  static const IconData news = IconData(0xecb8, fontFamily: 'jcicon');
  // ...继续列出你的图标
}

2.5 使用你自己封装的图标库

导入你的图标库:

// 依据你实际项目中的位置决定
import '../jcicon.dart';

使用你的图标:

Icon(
    JCIcons.me, // 对比:如果使用的是官方图标库,则此处形式为 Icons.xxx
    size: 24.0,
),

附 使用图标徽章

效果

demo code

Badge(
  badgeContent: Text("9"),
  child: Icon(
    Icons.access_time,
  )
)

场景

往往应用于需要进行提示的场景,如时钟提示最近的事项,通讯录提示未读好友消息的数目等等。

安装

flutter pub add badges

安装完成后再你的项目的pubspec.yaml文件中增加了如下依赖:

dependencies:
  badges: ^2.0.2

导入和使用

基本使用

import 'package:badges/badges.dart';
// ...某个位置
    Badge(
      badgeContent: Text('3'),
      child: Icon(Icons.settings),
    )

使用动画

动画 效果
BadgeAnimationType.slide
BadgeAnimationType.scale
BadgeAnimationType.fade
目录
相关文章
|
7月前
|
存储 JavaScript 前端开发
盘点主流 Flutter 状态管理库2024
状态管理是每个应用不可缺少的,本文将会盘点下主流的状态管理包。
349 2
盘点主流 Flutter 状态管理库2024
|
7月前
|
iOS开发 UED
Flutter 动态修改应用图标功能指南
探索Flutter中动态应用图标的实现方法,了解如何为用户提供独特体验,促进用户升级和应用内购买。
207 0
Flutter 动态修改应用图标功能指南
|
3月前
|
开发框架 Dart 前端开发
Android 跨平台方案对比之Flutter 和 React Native
本文对比了 Flutter 和 React Native 这两个跨平台移动应用开发框架。Flutter 使用 Dart 语言,提供接近原生的性能和丰富的组件库;React Native 则基于 JavaScript,具备庞大的社区支持和灵活性。两者各有优势,选择时需考虑团队技能和项目需求。
384 8
|
4月前
|
Android开发 C++ 开发者
Android经典实战之跨平台开发方案:Kotlin Multiplatform vs Flutter
本文对比了Kotlin Multiplatform与Flutter两大跨平台开发框架,从技术特性、性能、开发效率、UI体验、可扩展性及适用场景等维度进行了详尽分析,帮助开发者根据项目需求和技术背景选择最优方案。
147 2
|
5月前
|
敏捷开发 前端开发 程序员
Hugeicons Flutter 图标库 | 4000+ 开源免费
在全栈开发的征途中,设计素材的匮乏往往是程序员的一大挑战,尤其是那些为MVP产品增添魅力的元素,比如图标(icons)。 一个优秀的免费图标库,对于快速搭建原型、优化视觉效果至关重要。今天,让我们聚焦于Flutter开发者的一个福音——Hugeicons图标库,它蕴藏着超过4000枚精心设计的图标,为你的应用程序注入无限创意潜力。
121 0
Hugeicons Flutter 图标库 | 4000+ 开源免费
|
4月前
|
Dart API
状态管理的艺术:探索Flutter的Provider库
状态管理的艺术:探索Flutter的Provider库
50 0
|
5月前
flutter 导航组件 AppBar (含顶部选项卡TabBar,抽屉菜单 drawer ,自定义导航图标)
flutter 导航组件 AppBar (含顶部选项卡TabBar,抽屉菜单 drawer ,自定义导航图标)
87 1
|
5月前
Flutter-仿淘宝京东录音识别图标效果
Flutter-仿淘宝京东录音识别图标效果
28 0
|
7月前
|
前端开发 开发者 UED
【Flutter前端技术开发专栏】Flutter中的图标、字体与样式管理
【4月更文挑战第30天】本文介绍了在Flutter中管理图标、字体和样式的做法。Flutter提供`Icons`类用于内置矢量图标,支持第三方图标库如FontAwesome。自定义字体可通过添加字体文件至`assets`目录并配置`pubspec.yaml`,然后使用`TextStyle`设置。借助`ThemeData`,开发者能统一管理应用主题样式,局部样式可覆盖全局。通过集中管理样式,提升代码复用性和应用一致性。
181 0
【Flutter前端技术开发专栏】Flutter中的图标、字体与样式管理
|
7月前
|
开发框架 API 开发者
Flutter的动画:实现方式与动画库的技术探索
【4月更文挑战第26天】探索Flutter动画机制与库:基础动画、自定义动画、物理动画及Lottie、AnimatedWidgets、EasyAnimations等库的应用,助开发者实现丰富动画效果,提升用户体验。同时,了解性能优化技巧,如避免重绘、利用离屏渲染和GPU加速,确保动画流畅。 Flutter为移动应用开发带来强大动画支持。