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

426
Views
Jetpack compose comprueba si una función se ha ejecutado en modo de vista previa

¿Es posible verificar si una función se ha ejecutado en modo de vista previa en Jetpack compose? Tengo una función que devuelve una cadena adecuada para usar en la aplicación, pero esta función usa algunos objetos que deshabilitan el modo de vista previa para los componentes @Composable . Lo que podría hacer es pasar val isPreview: Boolean = false flag a cada componente y luego ejecutar una función simplificada si el indicador es true , pero esto agrega un código repetitivo a cada componible.

over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

No alojan (a partir de enero de 2022) el código @Preview Jetpack Compose en su MainActivity al obtener una vista previa de los elementos en Android Studio.

Esto significa que puede recorrer el árbol context.baseContext para determinar si está en la clase MainActivity de su aplicación o en la clase de actividad de nivel superior de otra aplicación. Mi actividad de nivel superior se llama MainActivity, entonces:

 fun Context.findMainActivityOrNull(): MainActivity?{ var context = this while (context is ContextWrapper) { if (context is MainActivity) return context context = context.baseContext } return null }

Esto hace que pueda evitar configurar el color de la barra de estado cuando esté en la vista previa, de esa manera no falla la vista previa al intentar hacer eso.

Llamas a la función anterior así:

 context.findMainActivityOrNull() //when in a non-@Composable area

Si está en una función @Composable, entonces debería poder ir:

 LocalContext.current.findMainActivityOrNull()

Puede volverse elegante y envolver la clase que se comporta mal en un adaptador para estar limpio y ordenado al respecto, o simplemente verificar si el resultado de lo anterior es nulo cuando solucione algunos problemas.

over 4 years ago · Santiago Trujillo Report

0

Normalmente hago esto llamando a LocalInspectionMode.current para saber si estoy en modo de vista previa. Devuelve true si está en modo de vista previa.

Esto es lo que dice la documentación sobre LocalInspectionMode :

Modo inspeccionable ComposiciónLocal. True si la composición está compuesta dentro de un componente inspeccionable.

over 4 years ago · Santiago Trujillo Report

0

Esto violará el paradigma funcional de una función componible. Debe ser sin estado y no le importará si se ejecuta en modo de vista previa o en una aplicación real o, de lo contrario, encontrará errores inesperados en el futuro cuando la aplicación sea muy grande para administrar.

Debe intentar refactorizar o reestructurar su composición para que solo dependa de la cadena directamente como parámetro. El modo de vista previa puede enviar una cadena codificada para este componible, pero para su aplicación real, puede llamar a esa función que devuelve la cadena adecuada (que usa algunos objetos).

Más sobre "Pensar en Componer" aquí

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!