Flutter图标生成插件icomoon_generator的使用

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

Flutter图标生成插件icomoon_generator的使用

简介

icomoon_generator 是一个用于生成Flutter兼容的类的Dart包。该类包含每个IcoMoon选择图标的静态常量 IconData 字段。此包完全用Dart编写,不需要任何外部依赖。

字体生成

通过开发依赖安装
$ flutter pub add --dev icomoon_generator

# 安装完成后,可以运行以下命令:
$ flutter pub run icomoon_generator:generate <input-json-file> <output-class-file> [options]
或者全局激活包
$ pub global activate icomoon_generator

# 安装完成后,可以运行以下命令:
$ icomoon_generator <input-json-file> <output-class-file> [options]

必要的位置参数

  • <input-json-file>:输入JSON文件的路径,应具有 .json 扩展名。
  • <output-class-file>:输出类文件的路径,应具有 .dart 扩展名。

Flutter类选项

  • -c--class-name=<name>:生成类的名称。
  • -p--package=<name>:提供字体的包的名称。用于通过包依赖提供字体。
  • --[no-]format:格式化生成的Dart代码。

其他选项

  • -z--config-file=<path>:IcoMoon生成器YAML配置文件的路径,默认使用 pubspec.yamlicomoon_generator.yaml 文件。
  • -v--verbose:显示所有日志消息。
  • -h--help:显示使用信息。

使用示例

$ icomoon_generator fonts/selection.json lib/my_icons.dart --class-name=MyIcons -v

更新Flutter项目的 pubspec.yaml

flutter:
  fonts:
    - family: Icomoon
      fonts:
        - asset: fonts/icomoon.ttf

配置文件

icomoon_generator 的配置也可以放在YAML文件中。可以在 pubspec.yamlicomoon_generator.yaml 文件中添加 icomoon_generator 部分:

icomoon_generator:
  input_json_file: "fonts/selection.json"
  output_class_file: "lib/my_icons.dart"
  
  class_name: "MyIcons"
  package: my_font_package
  format: true

  verbose: false

input_json_fileoutput_class_file 键是必需的。可以通过使用 --config-file 选项指定其他配置文件。

input_json_file 结构示例

{
  "icons": [
    {
      "properties": {
        "name": "home",
        "code": 01
      }
    },
    {
      "properties": {
        "name": "home2",
        "code": 02
      }
    },
    {
      "properties": {
        "name": "home3",
        "code": 03
      }
    },
    {
      "properties": {
        "name": "office",
        "code": 04
      }
    }
  ]
}

示例项目

以下是一个完整的示例项目,展示了如何使用 icomoon_generator 生成图标并将其集成到Flutter应用中。

1. 创建一个新的Flutter项目
$ flutter create icon_example
$ cd icon_example
2. 添加 icomoon_generator 作为开发依赖

pubspec.yaml 中添加以下内容:

dev_dependencies:
  icomoon_generator: ^latest_version

然后运行:

$ flutter pub get
3. 准备IcoMoon JSON文件

将从IcoMoon导出的 selection.json 文件放入 fonts 文件夹中:

icon_example/
├── fonts/
│   └── selection.json
4. 生成图标类

运行以下命令生成图标类:

$ flutter pub run icomoon_generator:generate fonts/selection.json lib/my_icons.dart --class-name=MyIcons -v
5. 更新 pubspec.yaml 以包含字体

pubspec.yaml 中添加以下内容:

flutter:
  fonts:
    - family: Icomoon
      fonts:
        - asset: fonts/icomoon.ttf
6. 在Flutter应用中使用生成的图标

编辑 lib/main.dart 文件,使用生成的图标类:

import 'package:flutter/material.dart';
import 'package:icon_example/my_icons.dart'; // 导入生成的图标类

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'IcoMoon Generator Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('IcoMoon Generator Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Icon(MyIcons.home, size: 100), // 使用生成的图标
              Icon(MyIcons.home2, size: 100),
              Icon(MyIcons.home3, size: 100),
              Icon(MyIcons.office, size: 100),
            ],
          ),
        ),
      ),
    );
  }
}
7. 运行应用
$ flutter run

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用icomoon_generator插件来生成和使用图标的示例。这个插件允许你从IcoMoon项目中导入图标,并自动生成Dart代码以便在Flutter中使用这些图标。

步骤 1: 添加依赖

首先,你需要在pubspec.yaml文件中添加icomoon_generator依赖。

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

dev_dependencies:
  build_runner: ^x.y.z  # 请替换为最新版本号
  icomoon_generator: ^x.y.z  # 请替换为最新版本号

然后运行flutter pub get来获取依赖。

步骤 2: 准备IcoMoon项目

  1. 访问IcoMoon
  2. 选择你需要的图标并生成一个项目。
  3. 下载该项目(通常是一个.zip文件),解压后你会得到一个包含selection.json文件的文件夹。

步骤 3: 配置icomoon_generator

在你的Flutter项目根目录下创建一个名为icomoon的文件夹(或任何你喜欢的名字),然后将selection.json文件放入该文件夹中。

接着,在项目根目录下创建一个名为icomoon_config.yaml的文件,并添加以下内容:

icomoon:
  fonts:
    - family: MyIcons  # 你可以自定义这个名称
      files:
        - iconfont.ttf  # 这个文件将由icomoon_generator生成
      classes: false
  config_file: icomoon/selection.json  # 指向你的selection.json文件

步骤 4: 生成图标类

打开终端,在项目根目录下运行以下命令来生成图标类:

flutter pub run build_runner build --delete-conflicting-outputs

如果一切顺利,icomoon_generator会在lib目录下生成一个包含图标类的Dart文件(通常是icomoon_icons.dart)。

步骤 5: 使用生成的图标

现在你可以在你的Flutter项目中使用这些图标了。打开你需要使用图标的Dart文件,并导入生成的图标类文件:

import 'package:your_app_name/icomoon_icons.dart';

然后你可以像这样使用图标:

import 'package:flutter/material.dart';
import 'package:your_app_name/icomoon_icons.dart';  // 确保路径正确

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

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

在这个例子中,MyIcons.home是你从IcoMoon项目中选择的图标之一。确保替换MyIcons.home为你实际生成的图标名称。

总结

通过上述步骤,你已经成功地在Flutter项目中集成并使用了icomoon_generator插件来生成和使用IcoMoon图标。这个插件极大地简化了图标的管理和使用过程,使得图标资源的管理更加高效和灵活。

回到顶部