Flutter字体图标管理插件flutter_glyph_kit的使用

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

Flutter字体图标管理插件flutter_glyph_kit的使用

Flutter Glyph Kit

Flutter实现的由Nothing Technology Ltd开发的Glyph-Developer-Kit插件。

开始使用

注意事项

此插件只能在Nothing Phone (1) 和 Nothing Phone (2) 上使用。

安装

在你的pubspec.yaml文件中添加以下内容:

flutter pub add flutter_glyph_kit

在你的AndroidManifest.xml文件中添加以下内容:

<!-- 在调试模式下使用以下行 -->
<meta-data android:name="NothingKey" android:value="test"/>

<!-- 在发布模式下使用以下行 -->
<meta-data android:name="NothingKey" android:value="YOUR_KEY"/>

注意

在调试模式下,你可以使用test键。但在发布模式下,你需要使用由Nothing提供的密钥。

为了在调试模式下使用插件,你还需要在终端中执行以下命令:

adb shell settings put global nt_glyph_interface_debug_enable 1

使用

该插件的使用非常简单,它提供了两个类Phone1GlyphPhone2Glyph

它还提供了两个枚举类型Phone1LedPhone2Led,以帮助你使用该插件。

如果你想开发自己的实现,可以使用包含所有方法的GlyphInterfaceSdk类。

Phone1Glyph

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Phone 1 Glyph Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final glyph = Phone1Glyph();
              await glyph.toggle(
                channels: [
                    Phone1Led.a1,
                    Phone1Led.a2,
                ]
              );
              // 这将打开A1和A2 LED灯
            },
            child: const Text('Toggle'),
          )
        ),
      ),
    );
  }
}

Phone2Glyph

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Phone 2 Glyph Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              final glyph = Phone2Glyph();
              await glyph.toggle(
                channels: [
                    Phone2Led.a1,
                    Phone2Led.a2,
                ]
              );
              // 这将打开A1和A2 LED灯
            },
            child: const Text('Toggle'),
          )
        ),
      ),
    );
  }
}

更多信息

有关SDK的更多信息,可以查看官方仓库:https://github.com/Nothing-Developer-Programme/Glyph-Developer-Kit

许可证

该项目采用MIT许可证,详情请参见LICENSE文件。


示例代码

以下是使用flutter_glyph_kit插件的示例代码:

import 'package:flutter/material.dart';
import 'package:flutter_glyph_kit/flutter_glyph_kit.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> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Column(
            children: [
              ElevatedButton(
                  onPressed: () async {
                    final phone2Glyph = Phone2Glyph();
                    await phone2Glyph.toggle(
                        channels: [Phone2Led.a1, Phone2Led.a2, Phone2Led.c1_1]);
                  },
                  child: const Text('切换')),
              ElevatedButton(
                  onPressed: () async {
                    final phone2Glyph = Phone2Glyph();
                    await phone2Glyph.animate(
                      channels: [Phone2Led.a1, Phone2Led.a2, Phone2Led.c1_1],
                      duration: const Duration(seconds: 5),
                      cycles: 5,
                      intervalDuration: 10,
                    );
                  },
                  child: const Text('动画')),
              ElevatedButton(
                  onPressed: () async {
                    final phone2Glyph = Phone2Glyph();
                    await phone2Glyph.animate(
                      channels: [Phone2Led.a2, Phone2Led.c2, Phone2Led.c3],
                      duration: const Duration(milliseconds: 500),
                      cycles: 5,
                      intervalDuration: 1,
                    );
                  },
                  child: const Text('复杂动画'))
            ],
          ),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何使用 flutter_glyph_kit 插件来管理 Flutter 应用中的字体图标的代码示例。这个插件允许你从字体文件中提取图标,并在 Flutter 应用中使用它们。

1. 添加依赖

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

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

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

2. 准备字体文件

将你的字体文件(例如 MaterialIcons-Regular.ttf)放置在 assets/fonts/ 目录下,并在 pubspec.yaml 中声明它:

flutter:
  assets:
    - assets/fonts/MaterialIcons-Regular.ttf

3. 使用 flutter_glyph_kit

下面是一个完整的 Flutter 应用示例,展示如何使用 flutter_glyph_kit 插件来加载和使用字体图标。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Glyph Kit Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  final GlyphKit _glyphKit;

  MyHomePage() : _glyphKit = GlyphKit(
    fontFamily: 'MaterialIcons', // 字体名称(必须与字体文件中的名称匹配)
    fontPackage: null, // 如果字体文件在项目的 assets 文件夹中,则设置为 null
  );

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Glyph Kit Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Icon(
              // 使用 GlyphWidget 来显示字体图标
              _glyphKit.icon(0xe87c), // 0xe87c 是 "home" 图标的 Unicode 码点
              size: 48,
              color: Colors.blue,
            ),
            SizedBox(height: 20),
            Text(
              'Home Icon',
              style: TextStyle(fontSize: 24),
            ),
          ],
        ),
      ),
    );
  }
}

4. 获取图标的 Unicode 码点

要获取特定图标的 Unicode 码点,你可以参考字体文件的图标对照表,或者使用在线工具来查找。例如,对于 Material Icons,你可以在 Material Icons 网站上找到每个图标的名称和对应的 Unicode 码点。

5. 运行应用

确保所有步骤都正确无误后,运行你的 Flutter 应用。你应该会在屏幕上看到一个使用 flutter_glyph_kit 插件加载和显示的字体图标。

这个示例展示了如何使用 flutter_glyph_kit 插件来管理和显示字体图标。你可以根据需要扩展这个示例,以在你的 Flutter 应用中使用更多的字体图标。

回到顶部