搜索插件、代码仓与 APP 分类

插件详情v2.0.0

flutter_chips_input

用于构建输入字段的 Flutter 库,其中输入选项以 InputChips 形式呈现。

近 30 天下载
1770
喜欢数
106
Pub 分数
70

安装插件

flutter pub add flutter_chips_input

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

一个 Flutter 库,可创建输入字段,让用户可以添加和管理芯片作为输入选项。它支持动态添加、删除和自定义芯片,非常适合用于标签或基于选择的表单。该包与 Flutter 的 Material Design 组件无缝集成,并允许开发者定义自定义芯片样式、验证规则和输入行为。在需要用户驱动的内容标签或多重选择输入的场景中尤为有用。

适合场景

  • 标签系统
  • 多选表单输入
  • 动态内容过滤
  • 用户生成的关键词输入
  • 带交互式芯片的表单字段
  • 使用建议标签搜索

主要特点

  • 交互式芯片输入
  • 可自定义的芯片样式
  • 实时芯片管理
  • 支持验证
  • 可扩展的输入处理
  • 与现有表单的轻松集成

适合对象

  • 开发基于标签的用户界面的开发者
  • 需要多选的表单
  • 具有动态用户输入的应用程序
  • 需要视觉反馈的UI
  • 使用 Flutter 开发移动应用的团队

使用建议

  • 有限的平台特定行为文档
  • 无内置自动补全功能
  • 需要手动处理芯片数据持久化
  • 复杂布局可能需要额外的样式
  • 未针对非常大的数据集进行优化

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

flutter_chips_input

Flutter library for building input fields with InputChips as input options.

Pub Version GitHub Workflow Status Codecov CodeFactor Grade

GitHub OSS Lifecycle Gitter

Usage

Installation

Follow installation instructions here

Import
import 'package:flutter_chips_input/flutter_chips_input.dart';
Example
ChipsInput
ChipsInput(
    initialValue: [
        AppProfile('John Doe', 'jdoe@flutter.io', 'https://d2gg9evh47fn9z.cloudfront.net/800px_COLOURBOX4057996.jpg')
    ],
    decoration: InputDecoration(
        labelText: "Select People",
    ),
    maxChips: 3,
    findSuggestions: (String query) {
        if (query.length != 0) {
            var lowercaseQuery = query.toLowerCase();
            return mockResults.where((profile) {
                return profile.name.toLowerCase().contains(query.toLowerCase()) || profile.email.toLowerCase().contains(query.toLowerCase());
            }).toList(growable: false)
                ..sort((a, b) => a.name
                    .toLowerCase()
                    .indexOf(lowercaseQuery)
                    .compareTo(b.name.toLowerCase().indexOf(lowercaseQuery)));
        } else {
            return const <AppProfile>[];
        }
    },
    onChanged: (data) {
        print(data);
    },
    chipBuilder: (context, state, profile) {
        return InputChip(
            key: ObjectKey(profile),
            label: Text(profile.name),
            avatar: CircleAvatar(
                backgroundImage: NetworkImage(profile.imageUrl),
            ),
            onDeleted: () => state.deleteChip(profile),
            materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
        );
    },
    suggestionBuilder: (context, state, profile) {
        return ListTile(
            key: ObjectKey(profile),
            leading: CircleAvatar(
                backgroundImage: NetworkImage(profile.imageUrl),
            ),
            title: Text(profile.name),
            subtitle: Text(profile.email),
            onTap: () => state.selectSuggestion(profile),
        );
    },
)

To-do list

  • [x] Ability to limit the number of chips
  • [x] Overlay doesn't move when input height changes i.e. when chips wrap
  • [ ] Create a FormField implementation (ChipsInputField) to be used within Flutter Form Widget

Known Issues

  • Deleting chips with keyboard on IOS makes app to crush (Flutter Issue with special characters used as replacement characters). Already reported #1
  • For some reason Overlay floats above AppBar when scrolling

所属分类

源码仓库

使用此插件的项目

暂无相关数据。