Pakete, Repositories und App-Kategorien suchen

Paketdetailsv5.0.0

extended_tabs

Eine leistungsstarke offizielle Erweiterungsbibliothek für Tab/TabBar/TabView, die die Scrollung von übergeordneten oder untergeordneten Tabs bei Überschreiten der aktuellen Grenze unterstützt und die Scrollrichtung sowie den Cacheumfang festlegen lässt.

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

Paket installieren

flutter pub add extended_tabs

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

ExtendedTabs ist eine leistungsstarke offizielle Erweiterungsbibliothek für die Flutter-Widgets Tab, TabBar und TabView. Sie erweitert das Standardverhalten von Tabs, indem sie die Scrollpropagation auf übergeordnete oder untergeordnete Tabs bei Überschreiten der Grenzen ermöglicht, benutzerdefinierte Scrollrichtungen unterstützt und die Einstellung des Cache-Umfangs zur Verbesserung der Leistung erlaubt. Für komplexe Tab-Navigations-Szenarien entwickelt, bietet sie in allen wichtigen Plattformen flüssigere Benutzererfahrungen in verschachtelten oder scrollbaren Tab-Strukturen.

Anwendungsfälle

  • Verschachtelte Tab-Navigation
  • Scrollbare Tab-Schnittstellen
  • Leistungsoptimierte Tab-Ansichten
  • Benutzerdefinierte Scrollrichtungshandhabung
  • Dynamisches Laden von Tab-Inhalten

Hauptmerkmale

  • Überscroll-Propagation zwischen übergeordneten und untergeordneten Tabs
  • Konfigurierbare Scrollrichtung
  • Einstellbare Cache-Erweiterung
  • Offizielle Erweiterung mit starker Plattformunterstützung
  • Nahtlose Integration mit bestehenden Tab-Widgets

Geeignet für

  • Entwickler, die komplexe tabbasierte Benutzeroberflächen erstellen
  • Apps, die verschachtelte oder scrollbare Tab-Layouts erfordern
  • Teams, die Leistung und reibungsloses Scrollen priorisieren
  • Projekte für mehrere Plattformen
  • Flutter-Anwendungen mit dynamischem Tab-Inhalt

Hinweise

  • Erfordert Verständnis des Scrollsystems von Flutter
  • Kann die Komplexität bei einfachen Tab-Implementierungen erhöhen
  • Am besten geeignet für fortgeschrittene Anwendungsfälle anstelle grundlegender Tab-Anforderungen
  • Beschränkte Dokumentation über grundlegende Beispiele hinaus
  • Möglicher Bedarf an manueller Steuerung des Scrollcontrollers

Original-README

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

extended_tabs

pub package GitHub stars GitHub forks GitHub license GitHub issues FlutterCandies QQ 群

Language: English | 中文简体

A powerful official extension library of Tab/TabBar/TabView, which support to scroll ancestor or child Tabs when current is overscroll, and set scroll direction and cache extent.

Web demo for ExtendedTabs

Usage

dependencies:
  flutter:
    sdk: flutter
  extended_tabs: any
CarouselIndicator

Show tab indicator as Carousel style

   CarouselIndicator(
     controller: _controller,
     selectedColor: Colors.white,
     unselectedColor: Colors.grey,
     strokeCap: StrokeCap.round,
     indicatorPadding: const EdgeInsets.all(5),
   ),
ColorTabIndicator

Show tab indicator with color fill

    TabBar(
      indicator: ColorTabIndicator(Colors.blue),
      labelColor: Colors.black,
      tabs: [
        Tab(text: "Tab0"),
        Tab(text: "Tab1"),
      ],
      controller: tabController,
    )
Link
  /// if link is true and current tabbarview over scroll,
  /// it will check and scroll ancestor or child tabbarView.
  /// default is true
  final bool link;
  
  ExtendedTabBarView(
    children: <Widget>[
      List("Tab000"),
      List("Tab001"),
      List("Tab002"),
      List("Tab003"),
    ],
    controller: tabController2,
    link: true,
  )
ScrollDirection
  /// The axis along which the tab bar and tab view scrolls.
  ///
  /// Defaults to [Axis.horizontal].
  final Axis scrollDirection;

  Row(
    children: <Widget>[
      ExtendedTabBar(
        indicator: const ColorTabIndicator(Colors.blue),
        labelColor: Colors.black,
        scrollDirection: Axis.vertical,
        tabs: const <ExtendedTab>[
          ExtendedTab(
            text: 'Tab0',
            scrollDirection: Axis.vertical,
          ),
          ExtendedTab(
            text: 'Tab1',
            scrollDirection: Axis.vertical,
          ),
        ],
        controller: tabController,
      ),
      Expanded(
        child: ExtendedTabBarView(
          children: <Widget>[
            const ListWidget(
              'Tab1',
              scrollDirection: Axis.horizontal,
            ),
            const ListWidget(
              'Tab1',
              scrollDirection: Axis.horizontal,
            ),
          ],
          controller: tabController,
          scrollDirection: Axis.vertical,
        ),
      )
    ],
      )
CacheExtent
  /// cache page count
  /// default is 0.
  /// if cacheExtent is 1, it has two pages in cache
  final int cacheExtent;
  
  ExtendedTabBarView(
    children: <Widget>[
      List("Tab000"),
      List("Tab001"),
      List("Tab002"),
      List("Tab003"),
    ],
    controller: tabController2,
    link: true,
    cacheExtent: 1,
  )  
ShouldIgnorePointerWhenScrolling
  /// Whether the contents of the widget should ignore [PointerEvent] inputs.
  ///
  /// Setting this value to true prevents the use from interacting with the
  /// contents of the widget with pointer events. The widget itself is still
  /// interactive.
  ///
  /// For example, if the scroll position is being driven by an animation, it
  /// might be appropriate to set this value to ignore pointer events to
  /// prevent the user from accidentally interacting with the contents of the
  /// widget as it animates. The user will still be able to touch the widget,
  /// potentially stopping the animation.
  ///
  ///
  /// if true, child can't accept event before [ExtendedPageView],[ExtendedScrollable] stop scroll.
  ///
  ///
  /// if false, child can accept event before [ExtendedPageView],[ExtendedScrollable] stop scroll.
  /// notice: we don't know there are any issues if we don't ignore [PointerEvent] inputs when it's scrolling.
  ///
  ///
  /// Two way to solve issue that child can't hittest before [PageView] stop scroll.
  /// 1. set [shouldIgnorePointerWhenScrolling] false
  /// 2. use LessSpringClampingScrollPhysics to make animation quickly
  ///
  /// default is true.
  final bool shouldIgnorePointerWhenScrolling;
  
  ExtendedTabBarView(
    children: <Widget>[
      List("Tab000"),
      List("Tab001"),
      List("Tab002"),
      List("Tab003"),
    ],
    controller: tabController2,
    shouldIgnorePointerWhenScrolling: false,
    cacheExtent: 1,
  )  

Kategorien

Abhängigkeiten

Abhängigkeiten 1 Einträge

  • sync_scroll_library^1.1.0

Quell-Repository

Projekte, die dieses Paket verwenden