Flutter图标库插件kmbal_ionicons的使用
Flutter图标库插件kmbal_ionicons的使用
Ionicons
该插件是ionicons
包的一个分支。它包含了来自Ionicons v7.4.0的所有图标。命名约定与CSS名称相同,所有破折号都被替换为下划线。
使用方法
import 'package:kmbal_ionicons/kmbal_ionicons.dart';
// ...
Icon(Ionicons.add)
Icon(Ionicons.add_outline)
Icon(Ionicons.add_sharp)
示例代码
example/lib/main.dart
import 'package:flutter/material.dart';
import 'package:kmbal_ionicons/kmbal_ionicons.dart';
import 'package:url_launcher/url_launcher_string.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// 这个小部件是你的应用程序的根。
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Ionicons',
theme: ThemeData(primarySwatch: Colors.blue),
debugShowCheckedModeBanner: false,
home: MyHomePage(),
);
}
}
/// 示例页面
class MyHomePage extends StatelessWidget {
final _outlineItems = ValueNotifier<List<MapEntry<String, String>>>([]);
final _filledItems = ValueNotifier<List<MapEntry<String, String>>>([]);
final _sharpItems = ValueNotifier<List<MapEntry<String, String>>>([]);
MyHomePage({super.key}) {
_onTextChanged(''); // 触发搜索
}
[@override](/user/override)
Widget build(BuildContext context) {
return DefaultTabController(
length: 3,
child: Scaffold(
appBar: AppBar(
title: const Text('Flutter Ionicons'),
bottom: const TabBar(tabs: [
Tab(text: '轮廓'),
Tab(text: '填充'),
Tab(text: '锐利'),
]),
actions: [
IconButton(
onPressed: _onPressedGitHub,
icon: const Icon(Ionicons.logo_github),
),
TextButton(
onPressed: _onPressedPub,
child: const Text(
'v0.2.1',
style: TextStyle(color: Colors.white),
),
),
],
),
body: Column(
children: [
Padding(
padding: const EdgeInsets.symmetric(vertical: 16),
child: TextField(
autofocus: true,
decoration: const InputDecoration(
hintText: '搜索图标',
prefixIcon: Padding(
padding: EdgeInsets.only(left: 32, right: 16),
child: Icon(Ionicons.search_outline),
),
),
onChanged: _onTextChanged,
),
),
Expanded(
child: TabBarView(
children: [
ValueListenableBuilder<dynamic>(
valueListenable: _outlineItems,
builder: (context, value, child) => _ItemList(items: value),
),
ValueListenableBuilder<dynamic>(
valueListenable: _filledItems,
builder: (context, value, child) => _ItemList(items: value),
),
ValueListenableBuilder<dynamic>(
valueListenable: _sharpItems,
builder: (context, value, child) => _ItemList(items: value),
),
],
),
),
],
),
),
);
}
/// 处理搜索图标
void _onTextChanged(String value) {
final items = value.isEmpty
? ioniconsMapping.entries.toList()
: ioniconsMapping.entries
.where((e) => e.key.contains(value.toLowerCase()))
.toList();
_outlineItems.value =
items.where((e) => e.key.endsWith('-outline')).toList();
_filledItems.value = items
.where((e) => !(e.key.endsWith('-outline') || e.key.endsWith('-sharp')))
.toList();
_sharpItems.value = items.where((e) => e.key.endsWith('-sharp')).toList();
}
/// 处理按下GitHub按钮
void _onPressedGitHub() {
launchUrlString('https://github.com/KMBAL/flutter-ionicons');
}
/// 处理按下Pub按钮
void _onPressedPub() {
launchUrlString('https://pub.dev/packages/kmbal_ionicons');
}
}
/// 渲染图标列表
class _ItemList extends StatelessWidget {
final List<MapEntry<String, String>> items;
final _controller = ScrollController();
_ItemList({super.key, required this.items});
[@override](/user/override)
Widget build(BuildContext context) {
return GridView.extent(
controller: _controller,
maxCrossAxisExtent: 86,
childAspectRatio: 0.7,
children: List.generate(items.length, (index) {
final item = items[index];
return Column(
children: [
Icon(IoniconsData(int.parse(item.value)), size: 64),
const SizedBox(height: 8),
Text(
item.key,
textAlign: TextAlign.center,
style: const TextStyle(fontSize: 12),
),
],
);
}),
);
}
}
更多关于Flutter图标库插件kmbal_ionicons的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter图标库插件kmbal_ionicons的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用kmbal_ionicons
图标库插件的示例代码。kmbal_ionicons
是一个Flutter包,它提供了对Ionicons图标的访问。
步骤 1: 添加依赖
首先,在你的pubspec.yaml
文件中添加kmbal_ionicons
依赖:
dependencies:
flutter:
sdk: flutter
kmbal_ionicons: ^latest_version # 请替换为最新版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 导入包
在你的Dart文件中导入kmbal_ionicons
包:
import 'package:kmbal_ionicons/kmbal_ionicons.dart';
步骤 3: 使用图标
接下来,你可以在你的Flutter应用中使用这些图标。以下是一个简单的示例,展示如何在按钮和文本中使用Ionicons图标。
import 'package:flutter/material.dart';
import 'package:kmbal_ionicons/kmbal_ionicons.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('kmbal_ionicons Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 使用图标按钮
IconButton(
icon: Icon(KmbalIonicons.home),
color: Colors.blue,
onPressed: () {
print('Home icon pressed');
},
),
SizedBox(height: 20),
// 使用图标文本
Text(
'Search',
style: TextStyle(
fontSize: 24,
foreground: Paint()
..shader = ui.Gradient.linear(
Offset.zero,
const Offset(1, 0),
[Colors.red, Colors.yellow],
[0.0, 1.0],
),
),
// 在文本前添加图标
prefixIcon: Icon(KmbalIonicons.search),
),
SizedBox(height: 20),
// 使用带有图标的自定义按钮
ElevatedButton(
onPressed: () {
print('Settings icon button pressed');
},
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Icon(KmbalIonicons.settings),
SizedBox(width: 10),
Text('Settings'),
],
),
),
],
),
),
),
);
}
}
注意事项
- 图标名称:确保你使用的图标名称与
kmbal_ionicons
包中提供的名称相匹配。你可以在包的官方文档或源代码中查找可用的图标名称。 - 自定义样式:你可以根据需要调整图标的颜色、大小等样式属性。
- 依赖更新:定期检查并更新你的依赖项,以确保你使用的是最新版本的
kmbal_ionicons
包。
通过上述步骤,你就可以在Flutter应用中使用kmbal_ionicons
图标库插件了。希望这对你有所帮助!