Mi cliente tiene pautas de diseño muy estrictas, por ejemplo, para alfa: el texto no debe tener alfa.
Sin embargo, parece que no puedo personalizar el alfa de MaterialDesign de una manera similar a un tema .
Claro, puedo personalizar todos y cada uno de los componentes, pero esto es tedioso: Modifier.alpha(1.0f)
Claro, puedo envolver toda mi aplicación en un proveedor alfa, pero la mayoría de los componentes de material la sobrescriben, por ejemplo, AppBar , por lo que esto tampoco funciona como se esperaba.
// my wrapper: CompositionLocalProvider(LocalContentAlpha provides 1.0f) { /* my ui */ } // will be overwritten by @Composable private fun AppBar(...) { Surface(...) { CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.medium) { Row(..., content) } } } Entonces, supongo que lo que debería hacer es proporcionar un ContentAlpha personalizado, ya que se usa en casi todos los componentes materiales, pero no sé cómo hacerlo. ¿Vos si?
Me parece que realmente no necesitas el diseño de materiales y solo quieres un tema personalizado. Está bien, de verdad, actualmente estoy trabajando en una aplicación de producción que fue en esa dirección y es completamente viable.
Todavía estamos ajustando nuestro contenido con MaterialTheme para que ALGUNOS de los componentes materiales estén disponibles, pero la dependencia del material es interna al módulo base de la interfaz de usuario. Entonces, si queremos usar cualquier componente de material en el código de la interfaz de usuario (en función, por ejemplo), tenemos que crear nuestro contenedor para ello. De esta manera, estamos usando solo nuestro código en la interfaz de usuario sin perder algunos de los componentes materiales. Y si el diseño del material cambia de una manera que no podemos aceptar, podemos simplemente volver a implementar el envoltorio delgado a algo 100% personalizado (como hicimos con el Button y los campos de texto).
Puede anular cualquier parte del componente de material dentro de esos envoltorios delgados usando Modifier.alpha(1.0f) . Lo estás haciendo una vez y luego te olvidas de eso :)