Flutter图标库插件ionicons_named的使用

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

ionicons_named #

目录 #

在线示例 #

介绍 #

这个库为所有基于 ionicons 的图标提供了自动生成功能,并且在 Flutter 中使用了 ionicons 包。

请注意,如果你包含此库,则 Flutter 在构建 Android 和 iOS 应用时会报错,提示无法树形摇动图标。你必须在构建时添加 --no-tree-shake-icons 标志。例如:

flutter build apk --release --no-tree-shake-icons

使用方法 #

import 'package:ionicons_named/ionicons_named.dart';

Icon(ionicons[‘boat_outline’]),

示例代码

// 导入必要的包
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:ionicons_named/ionicons_named.dart';

// 定义一个示例图标类 class ExampleIcon { final IconData iconData; final String title;

ExampleIcon(this.iconData, this.title); }

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

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

@override Widget build(BuildContext context) { return MaterialApp( title: ‘Ionicons 图标库’, theme: ThemeData.light().copyWith( iconTheme: const IconThemeData( color: Colors.black87, size: 36.0, ), textTheme: const TextTheme( bodyMedium: TextStyle( color: Colors.black87, fontSize: 16.0, ), ), ), home: const MaterialIconGalleryHome(), ); } }

class MaterialIconGalleryHome extends StatefulWidget { const MaterialIconGalleryHome({super.key});

@override State<StatefulWidget> createState() => MaterialIconGalleryHomeState(); }

class MaterialIconGalleryHomeState extends State<MaterialIconGalleryHome> { final List<ExampleIcon> icons = [];

@override void initState() { super.initState();

// 将所有的图标添加到列表中
for (var entry in ionicons.entries) {
  icons.add(ExampleIcon(entry.value, entry.key));
}

}

var _searchTerm = ‘’; var _isSearching = false;

@override Widget build(BuildContext context) { // 根据搜索条件过滤图标 final filteredIcons = icons .where((icon) => _searchTerm.isEmpty || icon.title.toLowerCase().contains(_searchTerm.toLowerCase())) .toList();

return Scaffold(
  appBar: _isSearching ? _searchBar(context) : _titleBar(),
  body: Scrollbar(
    thumbVisibility: kIsWeb,
    child: GridView.builder(
      itemCount: filteredIcons.length,
      gridDelegate: const SliverGridDelegateWithMaxCrossAxisExtent(
        maxCrossAxisExtent: 300,
      ),
      itemBuilder: (context, index) {
        final icon = filteredIcons[index];

        return InkWell(
          onTap: () {
            Navigator.push(
              context,
              MaterialPageRoute&lt;void&gt;(
                builder: (BuildContext context) {
                  return GestureDetector(
                    onTap: () {
                      Navigator.of(context).pop();
                    },
                    child: Container(
                      color: Colors.white,
                      alignment: Alignment.center,
                      child: Hero(
                        tag: icon,
                        child: Icon(
                          icon.iconData,
                          size: 100,
                        ),
                      ),
                    ),
                  );
                },
              ),
            );
          },
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: &lt;Widget&gt;[
              Hero(tag: icon, child: Icon(icon.iconData)),
              Container(
                padding: const EdgeInsets.only(top: 16.0),
                child: Text(icon.title),
              )
            ],
          ),
        );
      },
    ),
  ),
);

}

AppBar _titleBar() { return AppBar( title: const Text(‘Ionicons 图标库’), actions: [ IconButton( icon: const Icon(Icons.search), onPressed: () { ModalRoute.of(context)?.addLocalHistoryEntry( LocalHistoryEntry( onRemove: () { setState(() { _searchTerm = ‘’; _isSearching = false; }); }, ), );

          setState(() {
            _isSearching = true;
          });
        })
  ],
);

}

AppBar _searchBar(BuildContext context) { return AppBar( leading: IconButton( icon: const Icon(Icons.arrow_left), onPressed: () { setState( () { Navigator.pop(context); _isSearching = false; _searchTerm = ‘’; }, ); }, ), title: TextField( onChanged: (text) => setState(() => _searchTerm = text), autofocus: true, style: const TextStyle(fontSize: 18.0), decoration: const InputDecoration(border: InputBorder.none), ), ); } }


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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用ionicons_named插件的示例代码。ionicons_named是一个Flutter图标库插件,它提供了对Ionicons图标的访问。

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

dependencies:
  flutter:
    sdk: flutter
  ionicons_named: ^0.0.3  # 请注意版本号,根据实际情况调整

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

接下来,在你的Dart文件中,你可以按如下方式使用ionicons_named提供的图标:

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

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

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

class MyHomePage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Ionicons Named Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 使用IoniconsNamed图标
            Icon(
              Ionicons.add,
              size: 50,
              color: Colors.blue,
            ),
            SizedBox(height: 20),
            Icon(
              Ionicons.alert,
              size: 50,
              color: Colors.red,
            ),
            SizedBox(height: 20),
            Icon(
              Ionicons.home,
              size: 50,
              color: Colors.green,
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. pubspec.yaml文件中添加了ionicons_named依赖。
  2. 导入ionicons_named包。
  3. MyHomePage组件中,使用Icon小部件和Ionicons类来显示不同的Iconicons图标。

Ionicons类提供了对许多Ionicons图标的访问,每个图标都有一个静态常量表示,例如Ionicons.addIonicons.alertIonicons.home。你可以根据需要调整图标的大小和颜色。

确保你安装的ionicons_named版本与代码示例中的版本号兼容,或者根据最新版本更新代码中的版本号。

回到顶部