Flutter图标选择器插件flutter_iconpicker的使用

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

Flutter图标选择器插件flutter_iconpicker的使用

介绍

flutter_iconpicker 是一个Flutter插件,它提供了一个图标选择器,用户可以通过AlertDialog来选择图标。所有图标都映射了它们的名字到IconData中,这使得通过名称搜索图标成为可能。以下是此插件的一些关键特性:

  • 支持多种图标包(Material、Cupertino、FontAwesome等)
  • 单选和多选模式
  • 自定义图标支持
  • 图标预览和搜索功能

免责声明

由于Flutter框架会不断更新,可能导致某些图标的codePoint发生变化,因此不能保证所有图标都能正确显示。为确保图标显示正确,请使用自定义图标并提供正确的codePoint

使用方法

添加依赖

pubspec.yaml文件中添加flutter_iconpicker作为依赖项。

dependencies:
  flutter_iconpicker: ^latest_version

生成图标包

为了保持应用体积尽可能小,图标包是按需生成的。你需要执行以下命令来生成所需的图标包:

dart run flutter_iconpicker:generate_packs --packs material,cupertino,..

示例代码

下面是一个完整的示例,展示了如何使用flutter_iconpicker插件:

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

void main() {
  runApp(
    const MaterialApp(
      home: HomeScreen(),
    ),
  );
}

class HomeScreen extends StatefulWidget {
  const HomeScreen({Key? key}) : super(key: key);

  @override
  _HomeScreenState createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  Icon? _icon;

  _pickIcon() async {
    IconPickerIcon? icon = await showIconPicker(
      context,
      configuration: SinglePickerConfiguration(
        iconPackModes: [IconPack.cupertino],
      ),
    );

    if (icon != null) {
      _icon = Icon(icon.data);
      setState(() {});
      debugPrint('Picked Icon:  $icon');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter Icon Picker Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: _pickIcon,
              child: const Text('Open IconPicker'),
            ),
            const SizedBox(height: 10),
            AnimatedSwitcher(
              duration: const Duration(milliseconds: 300),
              child: _icon ?? Container(),
            ),
          ],
        ),
      ),
    );
  }
}

参数说明

以下是showIconPicker函数的主要参数:

参数名 类型 默认值 描述
context BuildContext - 必填项,用于AlertDialog的基础。
configuration SinglePickerConfiguration - 配置单选或多项选择器的参数。
adaptiveDialog bool false 如果为true,图标选择器将根据屏幕大小自适应;如果为false,则显示在AlertDialog中。
barrierDismissible bool true 定义用户是否可以通过点击外部区域关闭对话框。
iconSize double 40.0 设置可选图标的大小。
iconColor Color Theme.of(context).iconTheme.color 设置可选图标的颜色。
showTooltips bool false 是否在图标下方显示标签。
showSearchBar bool true 是否显示搜索栏。
iconPackModes List<IconPack> const [IconPack.material] 指定要显示的图标包。
customIconPack Map<String, IconPickerIcon> null 自定义图标包。

迁移指南

如果你从旧版本升级到>=3.6.0,需要注意以下变化:

  • 使用configuration参数来配置单选或多选选择器。
  • showIconPicker返回IconPickerIcon?,而showMultipleIconPicker返回List<IconPickerIcon>?

解决问题

树摇优化错误

如果你遇到树摇优化错误,可以尝试在构建命令中添加--no-tree-shake-icons标志。

图标包未显示

如果你设置了iconPackModes但图标包未显示,请确保已生成所需的图标包。

dart run flutter_iconpicker:generate_packs --packs material,cupertino,..

希望以上内容能帮助你更好地理解和使用flutter_iconpicker插件!如果有任何问题,欢迎随时提问。


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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_iconpicker插件的一个示例代码案例。这个插件允许用户在应用中从一系列图标中选择一个图标。

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

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

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

接下来,你可以在你的Flutter项目中实现图标选择器。以下是一个简单的示例:

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

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

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

class IconPickerScreen extends StatefulWidget {
  @override
  _IconPickerScreenState createState() => _IconPickerScreenState();
}

class _IconPickerScreenState extends State<IconPickerScreen> {
  IconData? selectedIcon;

  void _pickIcon(BuildContext context) async {
    final Icon? result = await showIconPicker(
      context,
      iconPacks: IconPack.all, // 显示所有图标包
      theme: IconPickerThemeData(
        cellShape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(10.0),
        ),
        searchBarStyle: TextStyle(color: Colors.white),
        selectedColor: Colors.blue,
        doneButtonTextStyle: TextStyle(color: Colors.white),
      ),
    );
    if (result != null) {
      setState(() {
        selectedIcon = result.icon;
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Icon Picker Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            if (selectedIcon != null)
              Icon(
                selectedIcon!,
                size: 100,
                color: Colors.blue,
              ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () => _pickIcon(context),
              child: Text('Pick an Icon'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮,当用户点击该按钮时,会弹出一个图标选择器对话框。用户可以从对话框中选择一个图标,选择完成后,选中的图标会显示在屏幕上。

注意几点:

  1. showIconPicker函数用于显示图标选择器对话框。
  2. IconPack.all表示显示所有可用的图标包。
  3. IconPickerThemeData允许你自定义图标选择器的主题,比如单元格形状、搜索栏样式等。
  4. 选中图标后,通过setState方法更新UI以显示选中的图标。

这个示例应该能帮助你快速上手flutter_iconpicker插件的使用。如果你需要更多自定义功能,可以查阅该插件的官方文档。

回到顶部