Buscar pacotes, repositórios e categorias de apps

Detalhes do pacotev0.4.8

swipeable_page_route

Deslize para navegar de volta e admirar widgets com belos morfismos

AndroidiOSmacOSWindowsLinux
Downloads em 30 dias
14,2 mil
Curtidas
320
Pontos Pub
160

Instalar pacote

flutter pub add swipeable_page_route

Visão geral do pacote

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

SwipeablePageRoute é um pacote Flutter que permite gestos intuitivos de deslizar para voltar nas páginas, melhorando a experiência do usuário com transições suaves e morphing entre telas. Ele estende o PageRoute padrão, oferecendo animações personalizáveis e integração perfeita em fluxos de navegação existentes. Ideal para aplicativos que priorizam navegação fluida e interativa, ele suporta múltiplas plataformas, incluindo Android, iOS, macOS, Windows e Linux. O pacote é leve e foi projetado para funcionar sem esforço com o sistema de roteamento do Flutter.

Casos de uso

  • Implementando navegação por deslize de volta em aplicativos móveis
  • Criando experiências imersivas de usuário com transições animadas
  • Aprimorando a interatividade do aplicativo com navegação baseada em gestos
  • Criando padrões de navegação consistentes entre plataformas
  • Adicionando acabamento visual às transições de tela

Principais recursos

  • Suporte de gesto suave de deslizar para trás
  • Animações de transição personalizáveis
  • Compatibilidade multiplataforma
  • Integração fácil com rotas existentes
  • Transições de widget de morfologia durante a navegação

Indicado para

  • Desenvolvedores procurando navegação baseada em gestos
  • Aplicativos focados em engajamento do usuário e UX
  • Projetos Flutter direcionados para múltiplas plataformas
  • Aplicações com foco em design e animações ricas
  • Equipes que desejam configuração mínima para navegação avançada

Considerações

  • Pode exigir estilos adicionais para transições complexas
  • Impacto no desempenho com widgets pesados durante a animação
  • Personalização limitada além do comportamento básico de deslize
  • Não ideal para fluxos de navegação simples e estáticos
  • Requer manipulação cuidadosa em cenários de navegação aninhada

README original

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

🔙 Swipe to navigate back and admire beautifully morphing widgets.

swipeable_page_route demo

SwipeablePageRoute

SwipeablePageRoute is a specialized CupertinoPageRoute that allows your users to go back by swiping anywhere on the current page. Use it instead of MaterialPageRoute or CupertinoPageRoute:

Navigator.of(context).push(SwipeablePageRoute(
  builder: (BuildContext context) => MyPageContent(),
));

If your page contains horizontally scrollable content, you can limit SwipeablePageRoute to only react on drags from the start (left in LTR, right in RTL) screen edge — just like CupertinoPageRoute:

Navigator.of(context).push(SwipeablePageRoute(
  canOnlySwipeFromEdge: true,
  builder: (BuildContext context) => MyHorizontallyScrollablePageContent(),
));

You can get the SwipeablePageRoute wrapping your current page using context.getSwipeablePageRoute<T>().

To use swipeable pages with a PageTransitionsTheme, use SwipeablePageTransitionsBuilder.

⚠️ SwipeablePageTransitionsBuilder must be set for TargetPlatform.iOS. For all other platforms, you can decide whether you want to use it. This is because PageTransitionsTheme uses the builder for iOS whenever a pop gesture is in progress.

Usage with Go Router

To use swipeable pages with Flutter's Go Router, use SwipeablePage and the pageBuilder parameter in GoRoute instead of builder:

// Before, without swipeable pages:
GoRoute(
  builder: (context, state) => const MyScreen(),
  // ...
)

// After, with swipeable pages:
GoRoute(
  pageBuilder: (context, state) => SwipeablePage(
    builder: (context) => MyScreen(),
  ),
  // ...
)

MorphingAppBar & MorphingSliverAppBar

As you can see in the demo above, there's a beautiful animation happening to the app bar. That's a MorphingAppBar!

You can construct MorphingAppBar (corresponds to AppBar) and MorphingSliverAppBar (corresponds to SliverAppBar) just like the originals:

MorphingAppBar(
  backgroundColor: Colors.green,
  title: Text('My Page'),
  actions: [
    IconButton(
      key: ValueKey('play'),
      icon: Icon(Icons.play_arrow),
      onPressed: () {},
    ),
    IconButton(
      key: ValueKey('favorite'),
      icon: Icon(Icons.favorite),
      onPressed: () {},
    ),
    PopupMenuButton<void>(
      key: ValueKey('overflow'),
      itemBuilder: (context) => [
        PopupMenuItem<void>(child: Text('Overflow action 1')),
        PopupMenuItem<void>(child: Text('Overflow action 2')),
      ],
    ),
  ],
  bottom: TabBar(tabs: [
    Tab(text: 'Tab 1'),
    Tab(text: 'Tab 2'),
    Tab(text: 'Tab 3'),
  ]),
)

Both MorphingAppBars internally use Heros, so if you're not navigating directly inside a MaterialApp, you have to add a HeroController to your Navigator:

Navigator(
  observers: [HeroController()],
  onGenerateRoute: // ...
)

To animate additions, removals, and constants in your AppBars actions, we compare them using Widget.canUpdate(Widget old, Widget new). It compares Widgets based on their type and key, so it's recommended to give every action Widget a key (that you reuse across pages) for correct animations.

Categorias

Dependências

Lista de dependências 3 itens

Repositório-fonte

Projetos que usam este pacote

Ainda não há dados.