meili_flutter 0.4.8 copy "meili_flutter: ^0.4.8" to clipboard
meili_flutter: ^0.4.8 copied to clipboard

Meili Flutter plugin

Meili Flutter Plugin #

pub package

The Meili Flutter Plugin allows you to integrate the Meili car rental experience into your Flutter applications on both iOS and Android.

Overview #

meili_flutter is a federated Flutter plugin that wraps the native Meili UX SDKs:

  • Android native SDK: hosted as a Maven artifact on GitHub Packages at meili-travel-tech/ux-native-android-sdk (requires auth).
  • iOS native SDK: distributed as a CocoaPod (MeiliSDK) via a private spec repo at meili-travel-tech/meili-ios-pods (requires SSH/HTTPS access).

Prerequisites #

Requirement Why
Flutter SDK >=3.4.0 Minimum required by the plugin.
Android Studio / Xcode CLI tools Needed for native builds.
CocoaPods (gem install cocoapods) iOS dependency manager.
GitHub Personal Access Token with read:packages scope Downloads the Android AAR from GitHub Packages.
Membership in the meili-travel-tech GitHub org Both the iOS spec repo and Android Maven artifacts are under this org. Contact Meili to get access.

1. Dart / pubspec setup #

dependencies:
  meili_flutter: 0.3.1-beta.1
flutter pub get

This resolves the federated sub-packages automatically — you do not need to add meili_flutter_android or meili_flutter_ios manually.


2. Android setup #

2.1 Declare the Maven repository #

The Android SDK is served from a public Maven repository over GitHub Pages, so no credentials are required. Add it to your project-level android/build.gradle.kts:

allprojects {
    repositories {
        google()
        mavenCentral()
        maven { url = uri("https://meili-travel-tech.github.io/ux-native-android/") }
    }
}

2.2 android/app/build.gradle.kts — NDK + minSdk #

android {
    ndkVersion = "27.0.12077973"
    defaultConfig {
        minSdk = 27
    }
}
  • ndkVersion must be pinned exactly — using flutter.ndkVersion may cause a linker error.
  • minSdk = 27 is required by the Meili Android SDK.

2.3 android/settings.gradle.kts — Kotlin Compose plugin #

plugins {
    id("dev.flutter.flutter-plugin-loader") version "1.0.0"
    id("com.android.application") version "8.7.3" apply false
    id("org.jetbrains.kotlin.android") version "2.1.0" apply false
    id("org.jetbrains.kotlin.plugin.compose") version "2.1.0" apply false  // add this
}

2.4 MainActivity.kt #

import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity : FlutterFragmentActivity()

If you leave FlutterActivity here you will get an IllegalStateException at runtime when opening the Meili view.


3. iOS setup #

3.1 ios/Podfile #

platform :ios, '16.0'

source 'https://cdn.cocoapods.org/'
source 'git@github.com:meili-travel-tech/meili-ios-pods.git'

ENV['COCOAPODS_DISABLE_STATS'] = 'true'

# ... rest of the standard Flutter Podfile unchanged

If you use a multi-account SSH setup, replace git@github.com: with your Host alias e.g. git@github.com-meili:.

3.2 iOS deployment target #

Set IPHONEOS_DEPLOYMENT_TARGET = 16.0 in three places in ios/Runner.xcodeproj/project.pbxproj (Debug, Release, Profile), or via Xcode under Runner target → General → Minimum Deployments → iOS.

3.3 ios/Flutter/AppFrameworkInfo.plist #

<key>MinimumOSVersion</key>
<string>16.0</string>

3.4 Install pods #

cd ios && pod install --repo-update && cd ..

--repo-update is needed the first time to clone the private spec repo. Plain pod install is sufficient on subsequent runs.


4. Usage #

Full-screen modal (iOS and Android) #

This is the only supported way to present the booking flow. It opens as a modal over the current screen and works identically on both platforms.

import 'package:meili_flutter/meili_flutter.dart';

await Meili.openMeiliView(MeiliParams(
  ptid: 'your-ptid',
  env: 'prod',
  flow: FlowType.direct,
));

Booking Manager #

await Meili.openMeiliView(MeiliParams(
  ptid: 'your-ptid',
  env: 'prod',
  flow: FlowType.bookingManager,
  additionalParams: AdditionalParams(
    confirmationId: '1234ABCD',
    lastName: 'Doe',
  ),
));

5. Troubleshooting #

Symptom Likely cause Fix
Could not find ... .aar during Gradle Maven repo URL missing, or the version isn't published yet Check the build.gradle.kts repo block points to the public Pages URL and that the version exists.
Unable to find a specification for MeiliSDK Missing source line in Podfile Add the private spec repo URL.
pod install hangs on first run First-time SSH clone of spec repo Confirm SSH key: ssh -T git@github.com.
IllegalStateException ... requires FragmentActivity MainActivity still extends FlutterActivity Change to FlutterFragmentActivity.
NDK strip / linker errors NDK version mismatch Pin ndkVersion = "27.0.12077973".
Env vars set in terminal but not in Android Studio macOS GUI apps don't load ~/.zshrc Move env vars to ~/.zshenv, relaunch Android Studio.

Platform Support #

Platform Supported
Android
iOS

Contributing #

Open issues or pull requests at github.com/meili-travel-tech/flutter_meili.