Yasin Kaçmaz
03/13/2021, 3:58 PM1.0.0-beta02
and MaterialTheme.colors.isLight
does not change when we give light and dark themes with a Boolean mutable state. It was working before. Is there anyone else with the same situation.Yasin Kaçmaz
03/13/2021, 3:59 PM@Composable
fun JetflixTheme(isDarkTheme: Boolean = false) {
val colors = if (isDarkTheme) DarkThemeColors else LightThemeColors
MaterialTheme(colors = colors, content = content)
}
Yasin Kaçmaz
03/13/2021, 4:00 PMval systemTheme = isSystemInDarkTheme()
val isDarkTheme = remember { mutableStateOf(systemTheme) }
JetflixTheme(isDarkTheme = isDarkTheme.value) {
// MyUiContent
}
Yasin Kaçmaz
03/13/2021, 4:02 PMisDarkTheme
MaterialTheme.colors.isLight
does not change and so the color of my ui does not change too.MBegemot
03/13/2021, 5:20 PMYasin Kaçmaz
03/13/2021, 5:33 PMisSystemInDarkTheme()
. As now you cannot change dark theme inside your appLouis Pullen-Freilich [G]
03/15/2021, 3:46 PM.copy()
before you pass colors
to MaterialTheme
is a workaroundSamir Basnet
03/18/2021, 11:56 AMLouis Pullen-Freilich [G]
03/18/2021, 1:00 PMSamir Basnet
03/18/2021, 1:05 PM@ExperimentalAnimationApi
@Composable
fun LoginScreen(navController: NavController, viewModel: UserViewModel) {
val loginState = viewModel.loginState.value
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center
) {
var startAnimation by remember { mutableStateOf(false) }
LaunchedEffect(Unit) {
delay(5)
if (!startAnimation)
startAnimation = true
}
Image(
modifier = Modifier.fillMaxSize(),
contentScale = ContentScale.Crop,
painter = painterResource(id = R.drawable.gradient_background),
contentDescription = null,
)
AnimatedVisibility(
visible = startAnimation,
enter = slideInVertically(animationSpec = TweenSpec(durationMillis = 900))
) {
Card(
modifier = Modifier
.padding(horizontal = 15.dp, vertical = 20.dp)
.fillMaxWidth()
.wrapContentHeight()
) {
Column(
modifier = Modifier.verticalScroll(rememberScrollState()),
horizontalAlignment = Alignment.CenterHorizontally
) {
MahalSectionHeader(
modifier = Modifier
.padding(top = 20.dp, start = 15.dp)
.align(Alignment.Start), label = "LOGIN"
)
val passwordFocusRequester = remember { FocusRequester() }
val focusManager = LocalFocusManager.current
MahalFirstTextField(
label = "Mobile Number",
keyboardType = KeyboardType.Phone,
leadingIcon = Icons.Filled.Phone,
nextFocusRequester = passwordFocusRequester
) {
viewModel.onLoginChange(it)
}
MahalPasswordField(
label = "Password",
imeAction = ImeAction.Done,
focusRequester = passwordFocusRequester,
focusManager = focusManager
) {
viewModel.onPasswordChange(it)
}
MahalTextButton(
modifier = Modifier
.align(Alignment.End)
.padding(end = 15.dp),
label = "Forgot password?",
performAction = { })
MahalSolidButton(label = "Login", apiState = loginState) {
//viewModel.loginUser()
navController.navigate("home")
}
val noAccount = with(AnnotatedString.Builder()) {
pushStyle(
SpanStyle(
color = MaterialTheme.colors.onSurface
)
)
append("Don't have an account? ")
pushStyle(
SpanStyle(
fontSize = 16.sp,
color = pinkA200,
)
)
append("SignUp")
toAnnotatedString()
}
ClickableText(
modifier = Modifier
.align(Alignment.CenterHorizontally)
.padding(top = 10.dp)
.indication(
interactionSource = remember { MutableInteractionSource() },
indication = rememberRipple(true)
),
text = noAccount,
style = MaterialTheme.typography.subtitle2
) {
Timber.d("$it")
}
Text(
modifier = Modifier.padding(top = 15.dp),
text = "Or Connect With",
color = pink800,
style = MaterialTheme.typography.overline
)
Row(modifier = Modifier.wrapContentSize()) {
IconButton(onClick = { /*TODO*/ }) {
Icon(
modifier = Modifier.size(30.dp),
painter = painterResource(id = R.drawable.ic_facebook),
contentDescription = "Login via facebook",
tint = Color.Unspecified,
)
}
IconButton(
modifier = Modifier.padding(horizontal = 5.dp),
onClick = { /*TODO*/ }) {
Icon(
modifier = Modifier
.size(30.dp),
painter = painterResource(id = R.drawable.ic_twitter),
contentDescription = "Login via facebook",
tint = Color.Unspecified,
)
}
IconButton(onClick = { /*TODO*/ }) {
Icon(
modifier = Modifier.size(30.dp),
painter = painterResource(id = R.drawable.ic_google),
contentDescription = "Login via facebook",
tint = Color.Unspecified,
)
}
}
Spacer(modifier = Modifier.padding(bottom = 20.dp))
}
}
}
MahalErrorSnackBar(apiState = loginState, modifier = Modifier.align(Alignment.TopCenter))
if (loginState is ApiState.Success)
navController.navigate("home")
}
}
Samir Basnet
03/18/2021, 1:06 PMpackage com.view9.mahal.theme
import android.graphics.Color
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material.MaterialTheme
import androidx.compose.material.darkColors
import androidx.compose.material.lightColors
import androidx.compose.runtime.Composable
private val DarkColorPalette = darkColors(
primary = pink800,
primaryVariant = pink800,
secondary = darkGray,
surface = darkGray
)
private val LightColorPalette = lightColors(
primary = pink800,
primaryVariant = pink800,
secondary = white,
surface = white
/* Other default colors to override
background = Color.White,
surface = Color.White,
onPrimary = Color.White,
onSecondary = Color.Black,
onBackground = Color.Black,
onSurface = Color.Black,
*/
)
@Composable
fun MahalTheme(darkTheme: Boolean = isSystemInDarkTheme(), content: @Composable() () -> Unit) {
val colors = if (darkTheme) {
DarkColorPalette
} else {
LightColorPalette
}
MaterialTheme(
colors = colors.copy(),
typography = typography,
shapes = shapes,
content = content
)
}
Samir Basnet
03/18/2021, 1:07 PMLouis Pullen-Freilich [G]
03/18/2021, 1:08 PMLouis Pullen-Freilich [G]
03/18/2021, 1:08 PMLouis Pullen-Freilich [G]
03/18/2021, 1:10 PMSamir Basnet
03/18/2021, 1:15 PMclass MahalActivity : AppCompatActivity() {
private val viewModel:UserViewModel by viewModels()
@ExperimentalAnimationApi
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
MahalTheme {
val navController = rememberNavController()
SetUpNavHost(navController)
}
}
}
@ExperimentalAnimationApi
@Composable
private fun SetUpNavHost(navController: NavHostController) {
NavHost(navController = navController, startDestination = "splash") {
composable("splash") { SplashScreen(navController) }
composable("login") { LoginScreen(navController,viewModel) }
composable("signup") { SignUpScreen(navController,viewModel) }
composable("home") { HomeScreen() }
}
}
}
Louis Pullen-Freilich [G]
03/18/2021, 1:17 PMSamir Basnet
03/18/2021, 1:18 PMSamir Basnet
03/18/2021, 2:03 PMLouis Pullen-Freilich [G]
03/18/2021, 2:05 PMAppCompatActivity
should still work though hereSamir Basnet
03/18/2021, 2:07 PM