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

section_view 封面
套件詳情v2.0.6

section_view

提供一個包含字母和重新整理功能的分組列表視圖,您可以完全自訂您的控制

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
1890
喜歡數
34
Pub 分數
140

安裝套件

flutter pub add section_view

套件介紹

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

SectionView 是一個 Flutter 套件,可建立帶有字母索引和下拉刷新功能的分節式列表檢視。它允許完全自訂分節標題並控制捲動行為,非常適合用於聯絡人清單、目錄或任何依字母順序排序的資料。此套件支援所有主要平台,包括 Android、iOS、Web、macOS、Windows 和 Linux。開發者可調整 UI 與互動,以符合應用程式的設計語言。

適用情境

  • 帶字母索引的聯絡人清單
  • 產品目錄,包含分組項目
  • 可自訂的可捲動區塊
  • 帶刷新功能的數據顯示
  • 列表中的字母導航

主要特色

  • 字母順序章節標題
  • 下拉刷新支援
  • 完全可自訂的使用者介面
  • 跨平台相容性
  • 在區段之間實現平滑滾動
  • 可設定的標題樣式

適合對象

  • 需要字母排序的應用程式
  • 希望自訂區段控制項的開發者
  • 需要可刷新清單的專案
  • 具有群組資料的UI密集型應用
  • 跨平台行動與Web應用

使用建議

  • 需要手動處理資料分組
  • 自訂可能會增加複雜性
  • 效能取決於清單大小
  • 有限的內建動畫
  • 未針對超大資料集進行優化
  • 需要仔細的狀態管理

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

Notice: 2.0.0 has break changing

  • The header sticky will use flutter_list_view to implement
  • Refresh control will construct by user, like pull_to_refresh
SectionView<AlphabetHeader<CountryModel>, CountryModel>(
  source: _filterCountries,
  onFetchListData: (header) => header.items,
  enableSticky: true,
  alphabetAlign: Alignment.center,
  alphabetInset: const EdgeInsets.all(4.0),
  headerBuilder: getDefaultHeaderBuilder((d) => d.alphabet),
  alphabetBuilder: getDefaultAlphabetBuilder((d) => d.alphabet),
  tipBuilder: getDefaultTipBuilder((d) => d.alphabet),
  refreshBuilder: (child) {
    return SmartRefresher(
        enablePullDown: true,
        enablePullUp: false,
        header: const WaterDropHeader(),
        controller: _refreshController,
        onRefresh: _onRefresh,
        child: child);
  },
  itemBuilder:
      (context, itemData, itemIndex, headerData, headerIndex) {
    return Padding(
      padding: const EdgeInsets.only(right: 12.0),
      child: ListTile(
          title: Text(itemData.name),
          trailing: Text(itemData.phoneCode)),
    );
  },
),

Features

  1. Show with section view
  2. Alphabet support
  3. Refresh support

Screen

Usage

Firstly, you can construct data like

List<GroupModel> data = [
    GroupModel(name: "Group 1", items: [
      ItemModel(name: "Item 1-1"),
      ItemModel(name: "Item 1-2"),
      ItemModel(name: "Item 1-3"),
      ItemModel(name: "Item 1-4"),
      ItemModel(name: "Item 1-5"),
    ]),
    GroupModel(name: "Group 2", items: [
      ItemModel(name: "Item 2-1"),
      ItemModel(name: "Item 2-2"),
      ItemModel(name: "Item 2-3"),
      ItemModel(name: "Item 2-4"),
      ItemModel(name: "Item 2-5"),
    ]),
    GroupModel(name: "Group 3", items: [
      ItemModel(name: "Item 3-1"),
      ItemModel(name: "Item 3-2"),
      ItemModel(name: "Item 3-3"),
      ItemModel(name: "Item 3-4"),
      ItemModel(name: "Item 3-5"),
    ]),
  ];

After that, you can put code into you project like as below

SectionView<GroupModel, ItemModel>(
  source: data,
  onFetchListData: (header) => header.items,
  headerBuilder: getDefaultHeaderBuilder((d) => d.name,
      bkColor: Colors.green,
      style:
          const TextStyle(fontSize: 18, color: Colors.white)),
  itemBuilder:
      (context, itemData, itemIndex, headerData, headerIndex) =>
          ListTile(
            title: Text(itemData.name),
          )),

Additional information

If you want to custom your UI, please follow /example/lib/fullSectionList.dart

Todo

  • Provide tailer load more functionality
  • Provide programaticly invoke onRefresh.

所屬分類

依賴

依賴清單 1 項

原始碼儲存庫

使用此套件的專案

暫無相關資料。