搜尋套件、儲存庫與 APP 分類

套件詳情v2.0.0

flutter_chips_input

用於建構輸入欄位的 Flutter 庫,輸入選項以 InputChips 的形式呈現。

近 30 天下載
1770
喜歡數
106
Pub 分數
70

安裝套件

flutter pub add flutter_chips_input

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

一個 Flutter 庫,可建立輸入欄位,讓使用者能新增與管理晶片作為輸入選項。它支援動態新增、移除與自訂晶片,非常適合用於標籤或基於選擇的表單。此套件與 Flutter 的材質設計元件無縫整合,並允許開發者定義自訂晶片樣式、驗證規則與輸入行為。在需要使用者驅動內容標籤或多重選擇輸入的場景中特別實用。

適用情境

  • 標籤系統
  • 多選表單輸入
  • 動態內容過濾
  • 使用者產生的關鍵字輸入
  • 帶互動式晶片的表單欄位
  • 使用建議標籤搜尋

主要特色

  • 互動式晶片輸入
  • 可自定義的晶片樣式
  • 即時晶片管理
  • 支援驗證
  • 可擴充的輸入處理
  • 與現有表單的輕鬆整合

適合對象

  • 開發基於標籤的使用者介面的開發者
  • 需要多選的表單
  • 具有動態使用者輸入的應用程式
  • 需要視覺反饋的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

所屬分類

原始碼儲存庫

使用此套件的專案

暫無相關資料。