Flutter图标字体转换插件iconfont_convert的使用

发布于 1周前 作者 vueper 来自 Flutter

Flutter图标字体转换插件iconfont_convert的使用

安装

在项目中安装(推荐)

pubspec.yaml 中添加:

dev_dependencies:
  iconfont: ^1.0.0

运行方式:

flutter packages pub run iconfont_convert
全局安装
flutter pub global activate iconfont_convert

运行方式:

iconfont-convert

参数:

-c  --config     config file path
                 (defaults to "pubspec.yaml")
-h, --help       help

使用

pubspec.yaml 中添加配置:

# pubspec.yaml
iconfont:
  - icons:
    - url: //at.alicdn.com/t/c/font_3892650_94qckhszrmg.css
      icon_name: test_icons
      icon_class: TestIcons
      #font_family: other_test_icons #可以用来覆盖默认的 Font Family
      #package: other_package #在其他 package 中定义图标时记得添加包名
    font_assets_path: assets/iconfont/
    icon_class_path: lib/icons/

运行 iconfont-convert

或者使用独立配置文件 iconfont.yaml

# iconfont.yaml
- icons:
  - url: //at.alicdn.com/t/c/font_3892650_94qckhszrmg.css
    icon_name: test_icons
    icon_class: TestIcons
  font_assets_path: assets/iconfont/
  icon_class_path: lib/icons/

运行 iconfont-convert --config iconfont.yaml

常见问题

  1. 参考官方文档解决 iconfont command not found
  2. 多个项目中的字体名可能会冲突,可以使用 font_family 来设置不同的字体名。推荐在 iconfont.cn 的项目设置中修改 Font Family。

感谢


示例代码

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:iconfont_convert_example/icons/test_icons.dart'; // 引入测试图标类
import 'package:other_package/icons/other_test_icons.dart'; // 引入其他包中的图标类

void main() {
  runApp(const MyApp()); // 运行应用
}

class MyApp extends StatefulWidget {
  const MyApp({super.key}); // 构造函数

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState(); // 创建状态对象
}

class _MyAppState extends State<MyApp> {
  int _currentTabIndex = 0; // 当前选中的标签页索引

  void _onItemTapped(int index) { // 底部导航栏点击事件处理
    setState(() {
      _currentTabIndex = index;
    });
  }

  final _previewPages = [
    const TestIconsPreview(), // 测试图标预览页面
    const OtherTestIconsPreview(), // 其他包中的图标预览页面
  ];

  [@override](/user/override)
  Widget build(BuildContext context) { // 构建UI
    return MaterialApp(
      title: 'Iconfont Convert Demo', // 应用标题
      theme: ThemeData(
        primarySwatch: Colors.blue, // 主色调
      ),
      home: Scaffold(
        body: _previewPages[_currentTabIndex], // 显示当前选中的预览页面
        bottomNavigationBar: BottomNavigationBar(
          currentIndex: _currentTabIndex, // 当前选中的底部导航栏项
          onTap: _onItemTapped, // 点击事件处理器
          items: const [
            BottomNavigationBarItem(
              icon: Icon(TestIcons.appstore), // 图标
              label: 'Example Icon', // 文本标签
            ),
            BottomNavigationBarItem(
              icon: Icon(OtherTestIcons.faxian), // 图标
              label: 'Other Package Icon', // 文本标签
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter图标字体转换插件iconfont_convert的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter图标字体转换插件iconfont_convert的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 iconfont_convert 插件将图标字体转换为 Flutter 可用图标的代码示例。iconfont_convert 插件允许你从图标字体文件(如 .ttf 文件)生成 Flutter 可用的 Dart 文件,其中包含图标的代码表示。

步骤 1: 添加依赖

首先,你需要在你的 pubspec.yaml 文件中添加 iconfont_convert 依赖:

dependencies:
  flutter:
    sdk: flutter
  iconfont_convert: ^x.y.z  # 请将 x.y.z 替换为最新版本号

然后运行 flutter pub get 以安装依赖。

步骤 2: 准备图标字体文件

假设你有一个名为 iconfont.ttf 的图标字体文件,你需要将其放置在你的 Flutter 项目的 assets 文件夹中(如果没有,请创建一个)。

步骤 3: 生成 Dart 文件

你可以使用命令行工具 iconfont_convert 来生成 Dart 文件。以下是一个简单的命令行示例:

flutter pub run iconfont_convert \
  --font-file=assets/fonts/iconfont.ttf \
  --class-name=MyIcons \
  --output=lib/generated/my_icons.dart

这里的参数解释如下:

  • --font-file:指定你的 .ttf 文件路径。
  • --class-name:指定生成的 Dart 文件中图标的类名。
  • --output:指定生成的 Dart 文件的输出路径。

步骤 4: 使用生成的图标

一旦 my_icons.dart 文件生成后,你就可以在你的 Flutter 应用中使用这些图标了。例如:

import 'package:flutter/material.dart';
import 'generated/my_icons.dart'; // 根据实际输出路径导入

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Icon Font Example'),
        ),
        body: Center(
          child: Icon(MyIcons.home, size: 48), // 使用生成的图标
        ),
      ),
    );
  }
}

在这个例子中,MyIcons.home 是从 my_icons.dart 文件中生成的一个图标。你需要确保图标的名称与 .ttf 文件中的名称匹配。

注意事项

  1. 图标名称:生成的 Dart 文件中图标的名称可能与 .ttf 文件中的名称有所不同,通常会自动转换为驼峰命名法。
  2. 缓存:如果你对 .ttf 文件做了更改,记得重新运行 flutter pub run iconfont_convert 命令来生成新的 Dart 文件。

通过上述步骤,你可以轻松地将图标字体转换为 Flutter 应用中可用的图标。

回到顶部