Flutter图标库插件heroicons的使用

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

Flutter图标库插件heroicons的使用

HeroIcons简介

HeroIcons 是一个由 Tailwind Labs 提供的图标集合,现在已经被移植到了 Flutter 中。这个包以SVG图片的形式渲染这些图标。

该包最后更新至使用 HeroIcons 2.2.0版本(更新日期:2024年12月15日)。如果有更新版本的HeroIcons可用,请创建问题或拉取请求。

使用方法

基本用法

你可以通过HeroIcon小部件来使用这些图标。下面是一个简单的例子:

class MyExampleWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return HeroIcon(
      HeroIcons.calendar,
      style: HeroIconStyle.outline, // 默认使用轮廓图标
      color: Colors.red,
      size: 30,
    );
  }
}

设置默认样式

你还可以使用 HeroIconTheme 来为应用中的所有图标设置默认样式(例如,轮廓或实心)。对于单个图标,你仍然可以覆盖默认样式。

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: HeroIconTheme(
        style: HeroIconStyle.solid,
        child: MyHomePage(),
      ),
    );
  }
}

安装

要快速添加最新版本的 heroicons 到你的项目中,可以通过命令行运行以下命令:

flutter pub add heroicons

开发指南

获取新图标并自动生成源代码

如果你想要获取新的图标,并自动为 heroicons.dart 文件生成源代码(执行以下两个步骤),可以运行以下命令:

dart tool/update.dart

额外命令

如果需要分别执行上述步骤,可以这样做:

  • 获取新图标:将新图标组织到 assets/ 目录下,并更新README文件。

    dart tool/fetch_icons.dart
    

    可选地,你可以指定一个分支来获取图标。例如,从 dev 分支获取图标:

    dart tool/fetch_icons.dart dev
    

    注意,旧分支(如 v1)可能无法正常工作,因为SVG的组织方式不同,并不是所有的样式都可用。

  • 生成源代码:为每个图标创建一个枚举条目,并生成 heroicons.dart 文件。

    dart tool/generator.dart
    

示例代码

这里提供了一个完整的示例代码,展示了如何在Flutter应用中使用heroicons

import 'package:flutter/material.dart';
import 'package:heroicons/heroicons.dart';

void main() {
  runApp(const ExampleApp());
}

class ExampleApp extends StatelessWidget {
  const ExampleApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
        iconTheme: const IconThemeData(
          color: Colors.red,
        ),
      ),
      home: const HeroIconTheme(
        // .outline 是默认样式,但这是改变应用中所有 HeroIcons 默认样式的做法。
        style: HeroIconStyle.outline,
        child: HomeScreen(),
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  const HomeScreen({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('HeroIcons'),
      ),
      body: const Center(
        child: IconTheme(
          data: IconThemeData(color: Colors.black),
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              HeroIcon(HeroIcons.arrowLeft),
              HeroIcon(HeroIcons.arrowRight),
              HeroIcon(HeroIcons.calendar),
              HeroIcon(HeroIcons.arrowLeft, style: HeroIconStyle.solid),
              HeroIcon(HeroIcons.arrowRight, style: HeroIconStyle.solid),
              HeroIcon(HeroIcons.calendar, style: HeroIconStyle.solid),
              IconTheme(
                data: IconThemeData(
                  size: 40,
                  color: Colors.blue,
                ),
                child: HeroIcon(
                  HeroIcons.calendar,
                  style: HeroIconStyle.outline,
                ),
              ),
              IconTheme(
                data: IconThemeData(
                  size: 40,
                  color: Colors.red,
                ),
                child: HeroIcon(HeroIcons.calendar, style: HeroIconStyle.solid),
              ),
              IconTheme(
                data: IconThemeData(
                  size: 40,
                  color: Colors.blue,
                ),
                child: HeroIcon(HeroIcons.calendar, style: HeroIconStyle.mini),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

这段代码展示了如何在Flutter应用中使用不同的HeroIcons样式和大小,并且演示了如何通过HeroIconTheme来全局配置图标的样式。


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

1 回复

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


在Flutter项目中,使用Heroicons图标库可以方便地引入高质量的SVG图标。Heroicons 提供了一套简洁且现代的图标集,非常适合用于各种UI设计。为了在Flutter中使用Heroicons图标库,你可以通过以下步骤进行集成和使用。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加heroicons_flutter这个依赖。这个库已经封装好了Heroicons图标,可以直接在Flutter中使用。

dependencies:
  flutter:
    sdk: flutter
  heroicons_flutter: ^1.0.0  # 确保版本号是最新的

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

2. 导入库

在你的Dart文件中,导入heroicons_flutter库。

import 'package:heroicons_flutter/icons.dart';

3. 使用图标

Heroicons库提供了多种图标集,包括SolidOutline两种风格。你可以根据需要选择并使用图标。

示例代码

以下是一个简单的Flutter应用示例,展示了如何使用Heroicons图标:

import 'package:flutter/material.dart';
import 'package:heroicons_flutter/icons.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Heroicons Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
        appBar: AppBar(
          title: Text('Heroicons Flutter Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              // 使用Solid风格的图标
              Icon(Solid.home, size: 48, color: Colors.blue),
              SizedBox(height: 20),
              // 使用Outline风格的图标
              Icon(Outline.user, size: 48, color: Colors.green),
              SizedBox(height: 20),
              // 自定义图标的样式
              IconButton(
                icon: Icon(Solid.heart, size: 36, color: Colors.red),
                onPressed: () {
                  print('Heart icon pressed!');
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

4. 运行应用

保存所有文件并运行Flutter应用,你应该会在界面上看到Heroicons图标。

注意事项

  • 确保你安装的heroicons_flutter库版本是最新的,以获取最新的图标和功能。
  • 你可以通过查看heroicons_flutter库的文档或源代码,了解更多关于可用图标和属性的信息。

通过以上步骤,你就可以在Flutter项目中轻松集成和使用Heroicons图标库了。

回到顶部