Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev5.0.0

extended_tabs

Uma poderosa biblioteca oficial de extensão para Tab/TabBar/TabView, que suporta rolagem de abas ancestrais ou filhas quando a atual está com sobrescrita, e permite definir a direção da rolagem e o alcance do cache.

AndroidiOSWebmacOSWindowsLinux
Downloads em 30 dias
12,7 mil
Curtidas
175
Pontos Pub
140

Instalar pacote

flutter pub add extended_tabs

Visão geral do pacote

Orientação gerada a partir de informações públicas. Apenas para referência.

ExtendedTabs é uma poderosa biblioteca oficial de extensão para os widgets Tab, TabBar e TabView do Flutter. Ela aprimora o comportamento padrão das abas permitindo a propagação de rolagem para abas ancestrais ou filhas quando ocorre sobrescrolagem, suporta direções de rolagem personalizáveis e permite definir a extensão de cache para melhor desempenho. Projetado para cenários complexos de navegação por abas, fornece experiências mais suaves em estruturas de abas aninhadas ou roláveis em todas as principais plataformas.

Casos de uso

  • Navegação de guia aninhada
  • Interfaces de guia roláveis
  • Visualizações de guia otimizadas para desempenho
  • Manipulação personalizada da direção de rolagem
  • Carregamento dinâmico de conteúdo de guia

Principais recursos

  • Propagação de sobrescrolagem entre guias pai e filho
  • Direção de rolagem configurável
  • Extensão de cache ajustável
  • Extensão oficial com forte suporte de plataforma
  • Integração contínua com widgets de guias existentes

Indicado para

  • Desenvolvedores construindo interfaces de usuário complexas com guias
  • Aplicativos que exigem layouts de guias aninhadas ou rolagem
  • Equipes priorizando desempenho e rolagem suave
  • Projetos direcionados para múltiplas plataformas
  • Aplicações Flutter com conteúdo dinâmico de guia

Considerações

  • Requer conhecimento do sistema de rolagem do Flutter
  • Pode aumentar a complexidade em implementações simples de guias
  • Mais adequado para casos de uso avançados em vez das necessidades básicas de guias
  • Documentação limitada além dos exemplos básicos
  • Necessidade potencial de gerenciamento manual do controlador de rolagem

README original

Snapshot do README original do repositório-fonte vinculado. Consulte o repositório para o conteúdo mais recente.

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,
  )  

Categorias

Dependências

Lista de dependências 1 itens

  • sync_scroll_library^1.1.0

Repositório-fonte

Projetos que usam este pacote