Capitulo 3 del Módulo 2 Navegación y Base de Datos

➜ Navegación y pantalla de Inicio

Jetpack Compose: Pantalla de Inicio y Navegación en tu App de Carta | Pantalla de inicio y configurar la navegación entre pantallas en una app Android de carta digital usando Kotlin y Jetpack Compose. Ideal para apps de restaurante modernas

En esta lección del curso Carta Digital App en Kotlin, aprenderás a implementar la pantalla de bienvenida de tu aplicación y cómo conectar múltiples pantallas usando el componente NavHost de Jetpack Compose. Verás cómo configurar la navegación en tu MainActivity, y cómo diseñar una interfaz sencilla pero funcional para dar la bienvenida a tus usuarios.


🎯 ¿Qué aprenderás en esta lección?

  • Configurar una navegación básica con rememberNavController() y NavHost.
  • Crear rutas con un objeto AppRoutes centralizado.
  • Diseñar la pantalla de inicio con Jetpack Compose.
  • Realizar la transición entre pantallas (por ejemplo, de inicio a carta digital).

MainActivity.kt

package codea.app.cartadigital

import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import codea.app.cartadigital.screens.ScreenAdmin
import codea.app.cartadigital.screens.ScreenCarta
import codea.app.cartadigital.screens.ScreenInicio
import codea.app.cartadigital.ui.theme.CartaDigitalTheme

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContent {
            CartaDigitalTheme {
                Surface(
                    modifier = Modifier.fillMaxSize()
                ) {
                    AppNavigation()
                }
            }
        }
    }
}

@Composable
fun AppNavigation() {
    val navController = rememberNavController()

    NavHost(
        navController = navController,
        startDestination = AppRoutes.SCREEN_INICIO
    ) {
        // Pantalla de inicio
        composable(AppRoutes.SCREEN_INICIO) {
            ScreenInicio(
                onEnterClick = {
                    navController.navigate(AppRoutes.SCREEN_CARTA)
                }
            )
        }

        // Pantalla de la carta
        composable(AppRoutes.SCREEN_CARTA) {
            ScreenCarta()
        }

        // Si tuvieras más pantallas como admin, login o pedido:
        composable(AppRoutes.SCREEN_ADMIN) {
            ScreenAdmin()
        }
        // composable(AppRoutes.SCREEN_LOGIN) { /* ... */ }
        // composable(AppRoutes.SCREEN_PEDIDO) { /* ... */ }
    }
}

object AppRoutes {
    const val SCREEN_INICIO = "inicio"
    const val SCREEN_CARTA = "carta"
    const val SCREEN_PEDIDO = "pedido"
    const val SCREEN_LOGIN = "login"
    const val SCREEN_ADMIN = "admin"
}

ScreenInicio.kt

package codea.app.cartadigital.screens

import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.*
import androidx.compose.material3.Button
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp
import codea.app.cartadigital.R

@Composable
fun ScreenInicio(onEnterClick: () -> Unit) {
    Column(
        modifier = Modifier
            .fillMaxSize()
            .padding(16.dp),
        verticalArrangement = Arrangement.Center,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Image(
            painter = painterResource(id = R.drawable.logo),
            contentDescription = "LOGO CARTA DIGITAL",
            modifier = Modifier
                .fillMaxWidth(0.3f)
                .padding(bottom = 50.dp)
        )
        Text(
            text = "Bienvenido a nuestro restaurant",
            style = MaterialTheme.typography.headlineMedium,
            textAlign = TextAlign.Center,
            modifier = Modifier.padding(bottom = 100.dp)
        )
        Button(onClick = onEnterClick) {
            Text("VER LA CARTA")
        }
    }
}

ScreenCarta.kt

package codea.app.cartadigital.screens

import androidx.compose.runtime.Composable

@Composable
fun ScreenCarta() {
}

 

 

Pantalla Inicio y Pantalla Carta

 

Este módulo te enseña los fundamentos esenciales para estructurar una app moderna en Kotlin usando Jetpack Compose. La navegación declarativa y la composición modular hacen que el desarrollo sea más rápido, limpio y fácil de mantener.


298 visitas

Capítulo 4 – Base de Datos Room »

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Comprar

¡Qué aprenderás?

tooltip bs-tooltip-top bs-tooltip-end bs-tooltip-bottom bs-tooltip-start show fade tooltip-inner

Codea Applications

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú