hinzugefügt
Code: Select all
ui-backhandler = { module = "org.jetbrains.compose.ui:ui-backhandler", version.ref = "compose-multiplatform" }
Code Beispiel:
@Composable
@Preview
fun App(
navController: NavHostController = rememberNavController(),
) {
...
KoinContext {
MyTheme {
Scaffold() { innerPadding ->
NavHost(
navController = navController,
startDestination = Screen.Dashboard.name
) {
composable(route = Screen.MyGroups.name) {
GroupsScreen(
navigateUp = {
navController.navigateUp()
}
)
}
< /code>
@OptIn(ExperimentalComposeUiApi::class)
@Composable
fun GroupsScreen(
navigateUp: () -> Unit
) {
BackHandler(enabled = true) {
navigateUp()
}
...
}
< /code>
iosMain:
fun MainViewController() = ComposeUIViewController { App() }
< /code>
on iOS side:
struct ComposeView: UIViewControllerRepresentable {
func makeUIViewController(context: Context) -> UIViewController {
MainViewControllerKt.MainViewController()
}
func updateUIViewController(_ uiViewController: UIViewController, context: Context) {}
}
struct ContentView: View {
var body: some View {
ComposeView()
.ignoresSafeArea(edges: .all)
.ignoresSafeArea(.keyboard)
}
}
< /code>
If I'm not mistaken, this should be enough for BackHandler to work, but it doesn't work on iOS: the "back" gesture from the left edge does not close the screen.
Additionally: Where can I find an example of using BackHandler on iOS? I can't find a single example in the official repository, and I can't even try to add it to the projects in the "Examples" folder, because they are either outdated or have only one screen