Quiero que el texto se tome del recurso de cadena, depende de item.route, que se especifica antes del código de abajo.
Pero toda la expresión "cuando" me da el error: "No coincide el tipo: el tipo inferido es () -> Int pero se esperaba Int". No tengo idea de cómo resolverlo.
Text( text = stringResource(id = { when (item.route) { "menu_screen" -> R.string.menu "orders_screen" -> R.string.orders else -> R.string.orders } }), textAlign = TextAlign.Center )Solo quita la llave extra ;)
Text( text = stringResource(id = when (item.route) { "menu_screen" -> R.string.menu "orders_screen" -> R.string.orders else -> R.string.orders } ), textAlign = TextAlign.Center )Cuando pones corchetes desnudos { } alrededor de algo, se interpreta como una función lambda. Por "desnudo" me refiero a no después de una clase/diversión/cuándo/si/si no, etc. Debe eliminar los corchetes adicionales que puso allí.
Text( text = stringResource(id = when (item.route) { "menu_screen" -> R.string.menu "orders_screen" -> R.string.orders else -> R.string.orders } ), textAlign = TextAlign.Center ) Algunos otros lenguajes (como Java) le permiten rodear el código con corchetes para limitar el alcance de las variables declaradas dentro o para calcular algo que toma múltiples expresiones. Para hacer esto en Kotlin, debe usar una función de alcance en línea como run { } .