inavi_global_navi_flutter 1.0.0 copy "inavi_global_navi_flutter: ^1.0.0" to clipboard
inavi_global_navi_flutter: ^1.0.0 copied to clipboard

NaviSDK (Orbis) Flutter plugin — Android (KMP) / iOS (Swift) navigation core APIs exposed via a single Dart surface.

iNavi Global Navigation SDK Plugin #

A Flutter plugin that wraps the iNavi NaviSDK Core for Android and iOS, exposing native map display, map controls, search, routing, and guidance UI through a single Dart API.

SDK App Key Required — An iNavi-issued app key must be configured on both platforms before the SDK can initialize. Contact visit visit the Maps Platform to request a key.

Features #

  • Native map rendering via NaviMapView (Android PlatformView / iOS UiKitView)
  • SDK initialization with an event-driven readiness signal (onInitEvent)
  • Map interactions: mode changes, tap events, camera move phase
  • Location and country change events
  • Route search and turn-by-turn guidance state streaming
  • Unified Dart API backed by Android (Kotlin/KMP) and iOS (Swift) implementations

Requirements #

Platform Minimum version
Android API 23 (Android 6.0)
iOS 14.0
Xcode 16 or later
Flutter 3.x

Installation #

Add inavi_global_navi_flutter to your pubspec.yaml:

dependencies:
  inavi_global_navi_flutter: ^1.0.0

Then run:

flutter pub get

Platform Setup #

Android #

1. Add the iNavi Maven repository

The Android SDK artifacts are served from the iNavi Artifactory repository. Add the repository to your host app's Gradle configuration.

In android/settings.gradle (or android/build.gradle for older project structures):

dependencyResolutionManagement {
    repositories {
        // ... other repositories
        maven { url "https://repo.inavi.com/artifactory/navigation" }
    }
}

2. Declare permissions

Add the following entries to android/app/src/main/AndroidManifest.xml:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />

Request runtime location permission in your app before calling any navigation API.

3. Set the SDK app key

Inside the <application> element of android/app/src/main/AndroidManifest.xml:

<application ...>
    <!-- ... -->
    <meta-data
        android:name="com.inavi.navisdk.appkey"
        android:value="YOUR_APP_KEY_HERE" />
</application>

Replace YOUR_APP_KEY_HERE with your iNavi-issued app key.


iOS #

1. Add Info.plist entries

Add location usage descriptions and background modes to ios/Runner/Info.plist:

<!-- Location permission descriptions -->
<key>NSLocationWhenInUseUsageDescription</key>
<string>This app needs your location to provide navigation guidance.</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>This app needs your location in the background to continue navigation.</string>

<!-- Background modes required for navigation -->
<key>UIBackgroundModes</key>
<array>
  <string>location</string>
  <string>audio</string>
</array>

2. Set the SDK app key

In the same ios/Runner/Info.plist:

<key>INaviAppKey</key>
<string>YOUR_APP_KEY_HERE</string>

Replace YOUR_APP_KEY_HERE with your iNavi-issued app key.

3. Install CocoaPods dependencies

From the host app's ios/ directory, run:

cd ios
pod install --repo-update

The plugin podspec references Global-iNavi-Navigation-SDK from the public CocoaPods CDN, so no additional source entry is required in your Podfile. The --repo-update flag refreshes the local CDN cache to ensure the pinned version is available.

Bundled xcframeworks: iNaviNavigationSdk · NaviSDKIOS · NaviSDKMMC · NaviSDKROUTE · NaviSDKCore · MapLibre


Usage #

1. Import the package #

import 'package:inavi_global_navi_flutter/inavi_global_navi_flutter.dart';

2. Display the map #

Embed NaviMapView in your widget tree. The native view is created asynchronously; use the onPlatformViewCreated callback to know when it is ready:

NaviMapView(
  onPlatformViewCreated: (int viewId) {
    // Native map view is ready.
  },
)

3. Initialize the SDK #

Use NaviController.instance (a singleton) to interact with the SDK. Call initializeNavi() after the map view is ready, and wait for the onInitEvent stream before invoking any other API:

final navi = NaviController.instance;
late final StreamSubscription<InitEvent> _initSub;

@override
void initState() {
  super.initState();
  _initSub = navi.onInitEvent.listen((event) {
    if (event.isSuccess) {
      // SDK is ready — safe to call map/search/route/guidance APIs.
    } else {
      debugPrint('SDK init failed: ${event.errorCode} ${event.errorMessage}');
    }
  });
}

Future<void> _startSdk() async {
  await navi.initializeNavi();
}

@override
void dispose() {
  _initSub.cancel();
  super.dispose();
}

initializeNavi() sends the initialization request to the native layer. The onInitEvent stream emits the result asynchronously.

4. Listen to map and guidance events #

// Map tap
navi.onMapClickEvent.listen((event) {
  final lat = event.latitude;
  final lng = event.longitude;
});

// Camera move phase
navi.onMapMoveEvent.listen((event) { ... });

// Map mode change
navi.onMapModeEvent.listen((event) { ... });

// Guidance state (start / stop / reroute, etc.)
navi.onGuidanceStateEvent.listen((event) { ... });

// Country change
navi.onCountryEvent.listen((event) { ... });

Use only APIs and streams documented by the official NaviSDK guide. Undocumented or internal symbols may change without notice and are not supported.


Example App #

A complete integration example is available in the example/ directory. It covers platform permission handling, SDK app key placement, initialization, search, routing, guidance start/stop, and map controls.

cd example
flutter pub get
flutter run

Grant location permission on the device before running; the SDK requires it for positioning and navigation guidance.


Additional Information #

  • SDK documentation: refer to the official iNavi NaviSDK guide for supported APIs, event payloads, and behavioral guarantees.
  • Issues: report bugs or feature requests via the project issue tracker.
  • App key requests: contact iNavi at https://www.inavi.com.

License #

See LICENSE for details.

0
likes
140
points
0
downloads

Documentation

API reference

Publisher

verified publisherinavi.kr

Weekly Downloads

NaviSDK (Orbis) Flutter plugin — Android (KMP) / iOS (Swift) navigation core APIs exposed via a single Dart surface.

Homepage

License

unknown (license)

Dependencies

flutter, meta

More

Packages that depend on inavi_global_navi_flutter

Packages that implement inavi_global_navi_flutter