Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

403
Views
Obtenga una vista previa de una "pantalla" en la navegación de composición de jetpack de Android con un PreviewParameter NavController

Descubro Android Cetpack Compose (y Navigation) e intento mostrar una vista previa de una vista con un navController como parámetro.

Para lograrlo, uso PreviewParameter y no tengo ningún error, pero no aparece nada en la ventana de vista previa.

¿Alguien sabe cómo pasar una instancia falsa de NavController a Composable?

 class FakeNavController : PreviewParameterProvider<NavController> { override val values: Sequence<NavController> get() {} } @Preview @Composable fun Preview( @PreviewParameter(FakeNavController::class) fakeNavController: NavController ) { HomeView(fakeNavController) }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

PreviewParameter se usa para crear múltiples vistas previas de la misma vista con diferentes datos. Se espera que devuelva los valores necesarios de values . En su ejemplo, no devuelve nada, por eso no funciona (ni siquiera se compila en mi caso).

Eso no lo ayudará a simular el controlador de navegación, ya que aún necesita crearlo de alguna manera para regresar de values . creo que es imposible

En su lugar, puede pasar un controlador, en este caso no necesita burlarse de él:

 @Composable fun HomeView(openOtherScreen: () -> Unit) { } // your Navigation view composable(Destinations.Home) { from -> HomeView( openOtherScreen = { navController.navigate(Destinations.Other) }, ) }
over 4 years ago · Santiago Trujillo Report

0

No tienes que hacerlo anulable y pasarle nulo. Solo necesitas pasar esto: rememberNavController()

 @Preview @Composable fun Preview() { HomeView(rememberNavController()) }
over 4 years ago · Santiago Trujillo Report

0

Finalmente, declaro un NavController anulable y funciona.

 @Composable fun HomeView(navController: NavController?) { Surface { Column( modifier = Modifier .padding(all = 4.dp) ) { Text( text = "Home View", style = MaterialTheme.typography.body2 ) Spacer(modifier = Modifier.height(8.dp)) Button(onClick = { navController?.navigate("lineRoute") }) { Text(text = "nav to Line view") } } } } @Preview @Composable fun Preview (){ HomeView(null) }
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!