Getting Started
Kopieren Sie einen Setup-Vorschlag mit den Installationsanweisungen und dem vollständigen Markdown-Leitfaden für diesen Plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-native-navigation`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/native-navigation/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Installation
Abschnitt mit dem Titel “Installation”Sie können unsere AI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie die Capgo-Fähigkeiten Ihrem AI-Tool hinzu, indem Sie den folgenden Befehl ausführen:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsVerwenden Sie dann den folgenden Vorschlag:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-native-navigation` plugin in my project.Wenn Sie die manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und die darunter angegebenen Plattform-spezifischen Anweisungen befolgen.
-
Installieren Sie das Paket
Terminalfenster npm i @capgo/capacitor-native-navigation -
Synchronisieren Sie native Projekte
Terminalfenster npx cap sync -
Natives Chrome konfigurieren
import { NativeNavigation } from '@capgo/capacitor-native-navigation';await NativeNavigation.configure({contentInsetMode: 'css',animationDuration: 360,colors: {tint: '#0f172a',inactiveTint: '#64748b',},}); -
Die native Navbar rendern
await NativeNavigation.setNavbar({title: 'Home',subtitle: 'Native chrome',transparent: true,backButton: { visible: false },rightItems: [{id: 'compose',title: 'Compose',icon: {svg: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M12 20h9"/><path d="M16.5 3.5a2.12 2.12 0 0 1 3 3L7 19l-4 1 1-4Z"/></svg>',},},],}); -
Die native Tabbar rendern
await NativeNavigation.setTabbar({selectedId: 'home',labelVisibilityMode: 'selected',icons: true,colors: {dynamic: true,tint: '#0f172a',inactiveTint: '#64748b',},tabs: [{id: 'home',title: 'Home',icon: {svg: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M3 10.5 12 3l9 7.5"/><path d="M5 10v10h14V10"/></svg>',},},{id: 'settings',title: 'Settings',badge: '2',icon: {svg: '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="3"/><path d="M12 2v3M12 19v3M2 12h3M19 12h3"/></svg>',},},],}); -
Native Intent-Ereignisse bearbeiten
await NativeNavigation.addListener('navbarBack', () => {router.back();});await NativeNavigation.addListener('navbarItemTap', ({ id }) => {if (id === 'compose') router.push('/compose');});await NativeNavigation.addListener('tabSelect', ({ id }) => {router.push(`/${id}`);});
Übergangsflow
ÜbergangsbetriebsablaufNativ-Übergänge sind eine Transaktion um Ihre normale JavaScript-Route-Änderung:
const transition = await NativeNavigation.beginTransition({ direction: 'forward',});
router.push('/detail');await router.ready?.();
await NativeNavigation.setNavbar({ title: 'Detail', backButton: { visible: true, title: 'Back' },});
await NativeNavigation.finishTransition({ id: transition.id, direction: 'forward',});Zoom-Übergang
Abschnitt mit dem Titel „Zoom-Übergang“Verwenden Sie die Zoom-Hilfsmittel für Flüsse von Karte zu Detail oder Medien-Vorschau. Geben Sie das angeklickte Element vor dem Wechsel des Inhalts durch Ihren Router ein und beenden Sie ihn nachdem die Detail-Seite bereit ist.
import { beginZoomTransition, finishZoomTransition } from '@capgo/capacitor-native-navigation';
const card = document.querySelector('[data-message-card]');if (card) { const transition = await beginZoomTransition(card, { cornerRadius: 18 });
router.push('/message/42'); await router.ready?.();
await NativeNavigation.setNavbar({ title: 'Message', backButton: { visible: true, title: 'Inbox' }, });
await finishZoomTransition(undefined, { id: transition.id, cornerRadius: 18, });}Verwenden Sie mit @capgo/capacitor-Übergängen
Abschnitt mit dem Titel „Verwenden Sie mit @capgo/capacitor-Übergängen“Verwenden Sie Native Navigation für das native Navbar, Tabbar, safe-Area-Einrückungen und native Intent-Ereignisse. Verwenden Sie @capgo/capacitor-transitions für die WebView-Seitenspur unterhalb des nativen Chrome.
npm install @capgo/capacitor-native-navigation @capgo/capacitor-transitionsnpx cap syncInitialisieren Sie beide Pakete einmal:
import { NativeNavigation } from '@capgo/capacitor-native-navigation';import '@capgo/capacitor-transitions';import { initTransitions, setupRouterOutlet, setDirection } from '@capgo/capacitor-transitions/react';
initTransitions({ platform: 'auto' });
const outlet = document.querySelector('cap-router-outlet');if (outlet) { setupRouterOutlet(outlet, { platform: 'auto', swipeGesture: 'auto' });}
await NativeNavigation.configure({ contentInsetMode: 'css',});Behalten cap-router-outlet fokussiert auf Seiten, nicht auf duplizierte Web-Bars:
<cap-router-outlet platform="auto" swipe-gesture="auto"> <cap-page> <cap-content slot="content" fullscreen> <main class="page">Inbox content</main> </cap-content> </cap-page></cap-router-outlet>Führen Sie beide Pakete von denselben Router-Aktionen aus:
async function openMessage(id: string) { setDirection('forward'); await router.push(`/messages/${id}`); await NativeNavigation.setNavbar({ title: 'Message', backButton: { visible: true, title: 'Inbox' }, });}
await NativeNavigation.addListener('navbarBack', () => { setDirection('back'); router.back();});
await NativeNavigation.addListener('tabSelect', ({ id }) => { setDirection('root'); router.push(`/${id}`);});Wählen Sie eine Animationsebene pro Routenänderung. Lassen Sie @capgo/capacitor-transitions normalen Seitenverschiebungen animieren und verwenden Sie die Zoom-Helfer von Native Navigation nur für gemeinsame-Element- oder Zoom-Routen.
CSS-Einschübe
Abschnitt mit dem Titel „CSS-Einschübe“Mit contentInsetMode: 'css'das Plugin schreibt die Abmessungen der native Bar in document.documentElement.
.page { padding-top: var(--cap-native-navigation-top); padding-bottom: var(--cap-native-navigation-bottom);}Verfügbare Variablen:
--cap-native-navigation-top--cap-native-navigation-right--cap-native-navigation-bottom--cap-native-navigation-left--cap-native-navbar-height--cap-native-tabbar-height
Icon Beschreibungen
Abschnitt mit dem Titel „Icon Beschreibungen“Icons müssen serielierbar sein, da sie von der native UI gerendert werden. Sie können cross-platform SVG, platform-spezifische SVG, SF Symbols, eingebundene iOS-Bilder, Android-Drawable-Ressourcen oder eingebundene Android-Bilder verwenden.
const icon = { svg: '<svg viewBox="0 0 24 24"><path d="M3 10.5 12 3l9 7.5"/></svg>', width: 24, height: 24, template: true, src: 'fallback_asset_name', ios: { svg: '<svg viewBox="0 0 24 24"><path d="M3 10.5 12 3l9 7.5"/></svg>', sfSymbol: 'house.fill', image: 'BundledAssetName', }, android: { svg: '<svg viewBox="0 0 24 24"><path d="M3 10.5 12 3l9 7.5"/></svg>', resource: 'ic_menu_view', image: 'bundled_drawable_name', },};Inline SVG unterstützt die icon-fokussierte Teilmenge, die von gängigen Icon-Sets wie Lucide und Feather verwendet wird: path, line, polyline, polygon, circle, und rectSVG Icons werden standardmäßig als Vorlagenbilder gerendert, sodass native Tönungen sie neu einfärben können.
Optionale Web-Komponenten
Abschnitt mit dem Titel „Optionale Web-Komponenten“Das Paket kann für eine framework-agnostische deklarative Einrichtung benutzerdefinierte Elemente registrieren:
import { defineNativeNavigationElements } from '@capgo/capacitor-native-navigation';
defineNativeNavigationElements();<cap-native-navigation-provider enabled="true" content-inset-mode="css"></cap-native-navigation-provider>
<cap-native-navbar title="Home" transparent right-items='[{"id":"compose","title":"Compose","icon":{"svg":"<svg viewBox=\"0 0 24 24\"><path d=\"M12 20h9\"/></svg>"}}]'></cap-native-navbar>
<cap-native-tabbar selected-id="home" tabs='[{"id":"home","title":"Home","icon":{"ios":{"sfSymbol":"house.fill"}}}]'></cap-native-tabbar>Hinweise zur Plattform
Abschnitt mit dem Titel ‘Hinweise zur Plattform’- iOS render
UINavigationBarundUITabBarIOS 26+ verwendet das System-Liquid-Glas-Leiste-Verhalten. - Android render eine AppCompat-Leiste und Material-Bottom-Navigation.
- Web-Fallback zeichnet keine nativen Leisten. Es spiegelt Ereignisse und Einstellvariablen für Browser-Entwicklung wider.
- Das Plugin hält einen vollbildschirmigen Capacitor WebView. Die Native-Ebene besitzt den Rahmen, die Leisten, die sichere Bereichsberichterstattung und die Übergangshülle.
Weiter geht es von Getting Started
Abschnitt mit dem Titel „Weiter geht es von Getting Started“Wenn Sie Capgo verwenden Getting Started für die native Fähigkeit in Using @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-native-navigation Verwendung von @capgo/capacitor-native-navigation für die native Fähigkeit in Using @capgo/capacitor-live-activities Verwendung von @capgo/capacitor-live-Aktivitäten für die native Fähigkeit in Verwendung von @capgo/capacitor-live-Aktivitäten, @capgo/capacitor-live-aktivitäten für die Implementierungsdetails in @capgo/capacitor-live-activities Mit @capgo/capacitor-video-player für die native Fähigkeit in Mit @capgo/capacitor-video-player und für @capgo/capacitor-video-player für die Implementierungsdetail in @capgo/capacitor-video-player.