Pakete, Repositories und App-Kategorien suchen

Paketdetailsv0.4.8

swipeable_page_route

Wischen Sie zurück, um wunderschön verformbare Widgets zu bewundern

AndroidiOSmacOSWindowsLinux
30-Tage-Downloads
14.200
Likes
320
Pub-Punkte
160

Paket installieren

flutter pub add swipeable_page_route

Paketübersicht

Aus öffentlichen Paketdaten erstellte Orientierung.

SwipeablePageRoute ist ein Flutter-Paket, das intuitive Wisch-Gesten zum Zurücknavigieren auf Seiten ermöglicht und die Benutzererfahrung durch reibungslose, sich verformende Übergänge zwischen Bildschirmen verbessert. Es erweitert den Standard-PageRoute und bietet anpassbare Animationen sowie nahtlose Integration in bestehende Navigationsflüsse. Ideal für Apps, die fließende, interaktive Navigation betonen, unterstützt es mehrere Plattformen wie Android, iOS, macOS, Windows und Linux. Das Paket ist leichtgewichtig und wurde speziell für eine problemlose Zusammenarbeit mit Flutter's Routing-System entwickelt.

Anwendungsfälle

  • Implementierung der Swipe-back-Navigation in mobilen Apps
  • Immersive Nutzererfahrungen mit animierten Übergängen schaffen
  • Verbesserung der App-Interaktivität durch gestenbasierte Navigation
  • Konsistente Navigationsmuster über Plattformen hinweg erstellen
  • Visuelle Aufwertung von Bildschirmübergängen hinzufügen

Hauptmerkmale

  • Glatte Swipe-zurück-Geste Unterstützung
  • Anpassbare Übergangsanimationen
  • Plattformübergreifende Kompatibilität
  • Einfache Integration mit bestehenden Routen
  • Morphing-Widget-Übergänge während der Navigation

Geeignet für

  • Entwickler, die eine gestenbasierte Navigation suchen
  • Apps, die sich auf Benutzerengagement und UX konzentrieren
  • Flutter-Projekte für mehrere Plattformen
  • designbewusste Anwendungen mit reichhaltigen Animationen
  • Teams, die eine minimale Einrichtung für erweiterte Navigation wünschen

Hinweise

  • Kann zusätzliche Stilisierung für komplexe Übergänge erfordern
  • Leistungsbeeinträchtigung bei schweren Widgets während der Animation
  • Eingeschränkte Anpassung über das grundlegende Swipe-Verhalten hinaus
  • Nicht ideal für einfache, statische Navigationsabläufe
  • Erfordert sorgfältige Handhabung in verschachtelten Navigations-Szenarien

Original-README

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

🔙 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.

Kategorien

Abhängigkeiten

Abhängigkeiten 3 Einträge

Quell-Repository

Projekte, die dieses Paket verwenden

Noch keine Daten verfügbar.