inlay_compose 0.1.0 copy "inlay_compose: ^0.1.0" to clipboard
inlay_compose: ^0.1.0 copied to clipboard

PlatformAndroid

Optional Jetpack Compose integration for the inlay framework. Add this plugin when you want to embed inlay Flutter screens directly into Compose navigation graphs. Android-only; the core `inlay` plugi [...]

inlay_compose #

License inlay_compose pub.dev badge

Jetpack Compose integration for the inlay add-to-app framework. Embed inlay Flutter screens and dialogs directly in Compose UIs with typed results.

This is a separate package so that projects not using Compose depend only on inlay - the core plugin pulls in no Compose transitive dependencies. Android-only.

Setup #

Add it next to inlay in your Flutter module's pubspec.yaml:

dependencies:
  inlay: ^0.1.0
  inlay_compose: ^0.1.0

Embed a Flutter screen #

InlayFlutterScreen renders an inlay Flutter page as a regular Compose destination:

import co.leancode.inlay.compose.InlayFlutterScreen

NavHost(navController, startDestination = "home") {
    composable("home") { HomeScreen() }

    composable("counter") {
        InlayFlutterScreen(
            route = CounterPage(seed = null),
            modifier = Modifier.fillMaxSize(),
            onResult = { count ->
                // count: Long? - already decoded
            },
        )
    }
}

When Flutter calls pop(), the screen integrates with Compose Navigation's back stack via onBackPressedDispatcher. onResult is invoked exactly once - with the result the page pops with, or null when the destination leaves the composition without one.

Show a Flutter dialog #

InlayFlutterDialog is state-driven, the Compose counterpart of SwiftUI's .inlayDialog modifier. While isPresented is true, a transparent dialog window is shown over the Activity and Flutter renders the dialog content (barrier, animation, positioning):

import co.leancode.inlay.compose.InlayFlutterDialog

var showDialog by remember { mutableStateOf(false) }
var lastResult by remember { mutableStateOf<String?>(null) }

Button(onClick = { showDialog = true }) { Text("Delete") }

InlayFlutterDialog(
    isPresented = showDialog,
    route = ConfirmDeleteDialog(itemId = "42"),
    onDismissRequest = { showDialog = false },
    onResult = { confirmed ->
        lastResult = confirmed?.toString() // confirmed: Boolean? - already decoded
    },
)

Do not wrap InlayFlutterDialog in a Compose Dialog or a Compose Navigation dialog() destination - it manages its own window (and a FragmentManager cannot attach fragments inside a Compose dialog window). onDismissRequest fires when the dialog goes away for any reason (Flutter pop, barrier tap, back); flip isPresented back to false there.

Documentation #


🛠️ Maintained by LeanCode #

This package is built with 💙 by LeanCode. We are top-tier experts focused on Flutter Enterprise solutions.

Why LeanCode? #

  • Creators of Patrol – the next-gen testing framework for Flutter.

  • Production-Ready – We use this package in apps with millions of users.

  • Full-Cycle Product Development – We take your product from scratch to long-term maintenance.


Need help with your Flutter project?

👉 Hire our team   •   Check our other packages

1
likes
140
points
174
downloads

Documentation

API reference

Publisher

verified publisherleancode.co

Weekly Downloads

Optional Jetpack Compose integration for the inlay framework. Add this plugin when you want to embed inlay Flutter screens directly into Compose navigation graphs. Android-only; the core `inlay` plugin has no Compose dependency.

Repository (GitHub)
View/report issues

Topics

#add-to-app #navigation #flutter-module #codegen #state

License

Apache-2.0 (license)

Dependencies

flutter, inlay

More

Packages that depend on inlay_compose

Packages that implement inlay_compose