Flutter图标生成插件icon_generator的使用
Flutter图标生成插件icon_generator的使用
Icon Generator
将所有*.svg图标从目录转换为图标字体(.ttf),并生成与Flutter兼容的dart类。
它是NodeJs包fantasticon
的抽象层。
Requirements
Node.JS v11+
Install:
$ pub global activate icon_generator
Params:
-
- 必填项
–from
* - 输入包含svg文件的目录–out-font
* - 输出图标字体路径(例如:lib/font.ttf)–out-flutter
* - 输出Flutter图标类路径(例如:lib/icons.dart)–class-name
* - 类名也是在pubspec.yaml中使用的字体名称(作为字体名称)–height
- 固定字体高度值,默认为512–descent
- 应用于基线的偏移量,默认为240–package
- 生成图标数据的包名称(了解更多)–indent
- 生成dart文件的缩进,例如:’ ‘,默认为’ ’–normalize
- 规范化图标大小,默认为false–yarn
- 使用yarn代替npm,默认为false–naming-strategy
- 图标命名策略:snake(yaru_icon)或camel(yaruIcon),默认为snake
Example
文件结构:
project
└───icons
│ │ account.svg
│ │ arrow_left.svg
│ │ arrow_right.svg
│ │ collection.svg
│
└───lib
│ │ icon_font
│ │ widgets
运行命令:
$ icon_generator --from=icons --class-name=UiIcons --out-font=lib/icon_font/ui_icons.ttf --out-flutter=lib/widgets/icons.dart
生成结果:
project
└───icons
│ │ account.svg
│ │ arrow_left.svg
│ │ arrow_right.svg
│ │ collection.svg
│
└───lib
│ └───widgets
│ | │ icons.dart
│ │
│ └───icon_font
│ │ ui_icons.ttf
生成的icons.dart
:
// 自动生成的代码 - 请勿手动修改
import 'package:flutter/widgets.dart';
@immutable
class _UiIconsData extends IconData {
const UiIconsData(int codePoint)
: super(
codePoint,
fontFamily: 'UiIcons',
);
}
@immutable
class UiIcons {
const UiIcons._();
static const IconData account = _UiIconsData(0xe000);
static const IconData arrowLeft = _UiIconsData(0xe001);
static const IconData arrowRight = _UiIconsData(0xe002);
static const IconData collection = _UiIconsData(0xe003);
}
还需要在pubspec.yaml
中添加字体:
...
flutter:
fonts:
- family: UiIcons
fonts:
- asset: lib/src/icon_font/ui_icons.ttf
更多关于Flutter图标生成插件icon_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter图标生成插件icon_generator的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用icon_generator
插件来生成图标的示例代码。请注意,icon_generator
可能是一个假设的插件名称,因为Flutter社区中具体的图标生成插件可能有所不同。不过,这个示例将展示如何使用一个假想的图标生成插件来生成图标。
首先,确保你已经在pubspec.yaml
文件中添加了icon_generator
插件的依赖:
dependencies:
flutter:
sdk: flutter
icon_generator: ^x.y.z # 替换为实际的版本号
然后运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以使用以下代码来生成图标。以下是一个简单的例子,展示如何在main.dart
文件中使用图标生成插件:
import 'package:flutter/material.dart';
import 'package:icon_generator/icon_generator.dart'; // 假设的插件导入路径
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Icon Generator Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
IconData? generatedIcon;
@override
void initState() {
super.initState();
// 假设的图标生成方法,具体实现依赖于插件的API
generateIcon();
}
void generateIcon() async {
// 这里假设插件提供了一个名为generateIconData的静态方法
// 该方法接受一些参数并返回一个Future<IconData>
generatedIcon = await IconGenerator.generateIconData(
name: 'custom_icon', // 图标的名称或标识符
color: Colors.black, // 图标的颜色
size: 24, // 图标的尺寸
);
// 更新UI
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Icon Generator Demo'),
),
body: Center(
child: generatedIcon != null
? Icon(
generatedIcon!,
size: 48,
)
: CircularProgressIndicator(), // 在图标生成过程中显示加载指示器
),
);
}
}
在这个示例中,我们创建了一个简单的Flutter应用,该应用在启动时调用generateIcon
方法来生成一个图标。我们假设IconGenerator
插件提供了一个静态方法generateIconData
,该方法接受一些参数(如名称、颜色和大小)并返回一个Future<IconData>
。一旦图标生成完成,我们就使用setState
方法来更新UI,显示生成的图标。
请注意,由于icon_generator
可能不是一个实际存在的插件,因此你需要根据你所使用的实际图标生成插件的API来调整上述代码。大多数图标生成插件都会提供类似的静态方法来生成图标数据,你只需要查阅该插件的文档来了解其具体的用法和API。