Pakete, Repositories und App-Kategorien suchen

Cover von sticky_and_expandable_list
Paketdetailsv1.1.3

sticky_and_expandable_list

Erstellen Sie eine gruppierte Liste, die Erweiterung/Zusammenklappung von Abschnitten und haftende Kopfzeilen unterstützt und mit Sliver-Widgets verwendet werden kann.

AndroidiOSWebmacOSWindowsLinux
30-Tage-Downloads
7820
Likes
175
Pub-Punkte
140

Paket installieren

flutter pub add sticky_and_expandable_list

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

Ein Flutter-Paket, das die Erstellung von gruppierten Listen mit ein- und ausklappbaren Abschnitten und haftenden Kopfzeilen ermöglicht, ideal zur hierarchischen Organisation von Inhalten. Es integriert sich nahtlos mit Sliver-Widgets und ist daher für den Einsatz in benutzerdefinierten Scrollansichten wie CustomScrollView geeignet. Das Paket unterstützt alle wichtigen Plattformen einschließlich Android, iOS, Web, macOS, Windows und Linux und bietet eine konsistente Erfahrung über Geräte hinweg. Es vereinfacht komplexe Listeninteraktionen mit minimalem Boilerplate-Code.

Anwendungsfälle

  • Gruppierte Datenanzeige
  • Klappbare Abschnittslisten
  • Haftender Kopfzeilen-Navigation
  • Benutzerdefinierte Scrollansichten
  • Dynamische Inhaltsoptimierung
  • Verbesserte Benutzeroberfläche für lange Listen

Hauptmerkmale

  • Erweiterbare/einklappbare Abschnitte
  • Sticky Abschnittskopfzeilen
  • Sliver-Widget-Kompatibilität
  • Plattformübergreifende Unterstützung
  • Minimale Einrichtung erforderlich
  • Glatte Animationen

Geeignet für

  • Entwickler, die komplexe Listen erstellen
  • UI-Designer, die interaktive Layouts benötigen
  • Anwendungen mit hierarchischen Daten
  • Scrollbare Schnittstellen mit Kopfzeilen
  • Mobile- und Web-Anwendungen

Hinweise

  • Erfahrung mit Sliver-Widgets erforderlich
  • Kann die Leistung bei sehr großen Datensätzen beeinträchtigen
  • Eingeschränkte Anpassung über die grundlegende Gestaltung hinaus
  • Am besten geeignet für mittelgroße gruppierte Daten
  • Nicht empfehlenswert für einfache flache Listen

Original-README

Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.

sticky_and_expandable_list

Flutter implementation of sticky headers and expandable list.Support use it in a CustomScrollView.

Pub README i18n:中文说明

Screenshot

Features

  • Build a grouped list, which support expand/collapse section and sticky header.
  • Use it with CustomScrollView、SliverAppBar.
  • Listen the scroll offset of current sticky header, current sticky header index and switching header index.
  • Only use one list widget, so it supports large data and a normal memory usage.
  • More section customization support, you can return a new section widget by sectionBuilder, to customize background,expand/collapse animation, section layout, and so on.
  • Support add divider.
  • Support overlap content.
  • Support scroll to index like ListView, by scroll-to-index.
  • Pull to refresh and load more, by pull_to_refresh.

Getting Started

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  sticky_and_expandable_list: ^1.1.3

Basic Usage

sectionList is a custom data source for ExpandableListView. We should create a model list to store the information of each section, the model must implement ExpandableListSection.

    //In this example, we create a custom model class(ExampleSection).
    //class ExampleSection implements ExpandableListSection<String> {}
    //so: SliverExpandableChildDelegate<String, ExampleSection>()
    List<ExampleSection> sectionList = List<ExampleSection>();
    return ExpandableListView(
      builder: SliverExpandableChildDelegate<String, ExampleSection>(
          sectionList: sectionList,
          headerBuilder: (context, sectionIndex, index) =>
              Text("Header #$sectionIndex"),
          itemBuilder: (context, sectionIndex, itemIndex, index) {
            String item = sectionList[sectionIndex].items[itemIndex];
            return ListTile(
              leading: CircleAvatar(
                child: Text("$index"),
              ),
              title: Text(item),
            );
          }),
    );

Detail Examples

If you want to use it with sliver widget, use SliverExpandableList instead of ExpandableListView.

FAQ

How to expand/collapse item?
setState(() {
  sectionList[i].setSectionExpanded(true);
});

Example

How to listen current sticky header or the sticky header scroll offset?
  @override
  Widget build(BuildContext context) {
    ExpandableListView(
      builder: SliverExpandableChildDelegate<String, ExampleSection>(
        headerController: _getHeaderController(),
      ),
    )
  }

  _getHeaderController() {
    var controller = ExpandableListController();
    controller.addListener(() {
      print("switchingSectionIndex:${controller.switchingSectionIndex}, stickySectionIndex:" +
          "${controller.stickySectionIndex},scrollPercent:${controller.percent}");
    });
    return controller;
  }
How to set background for each section?

Use sectionBuilder

Customize expand/collapse animation support?

Example

Change Log

CHANGELOG

Kategorien

Quell-Repository

Projekte, die dieses Paket verwenden