Код: Выделить всё
class TVHomeActivity : ComponentActivity() {
var secureStorage: FlutterSecureStorage? = null
var socket: Socket? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
secureStorage = FlutterSecureStorage(this, emptyMap())
setSocketListener()
setContent {
MaterialTheme {
MainScreen()
}
}
}
@Composable
@Preview
private fun MainScreen() {
val navController = rememberNavController()
LocalContext.current
var selectedIndex by remember { mutableIntStateOf(0) }
val originalDensity = LocalDensity.current
val requiredContainerWidth = 500.dp
(requiredContainerWidth * originalDensity.density / 360.dp.value) + 1.dp
val items = listOf(
NavigationItem("Live TV", "live_tv", Icons.Default.LiveTv),
NavigationItem("Movies", "movies", Icons.Default.Movie),
NavigationItem("Games", "games", Icons.Default.Games),
NavigationItem("Settings", "settings", Icons.Default.Settings),
)
ModalNavigationDrawer(
scrimBrush = Brush.horizontalGradient(
colors = listOf(Color.Black, Color.Transparent),
// Perkecil jangkauan gradasi karena drawer sekarang lebih pendek
),
drawerState = rememberDrawerState(initialValue = DrawerValue.Closed),
drawerContent = {
val isClosed = it == DrawerValue.Closed
Column(
modifier = Modifier
.fillMaxHeight()
.selectableGroup()
) {
Spacer(modifier = Modifier.weight(1f))
items.forEachIndexed { index, item ->
NavigationDrawerItem(
modifier = Modifier.padding(
vertical = 10.dp,
horizontal = 4.dp
),
selected = selectedIndex == index,
onClick = {
selectedIndex = index
when (item.route) {
"games" -> {
}
else -> {
navController.navigate(item.route) {
popUpTo(navController.graph.startDestinationId)
launchSingleTop = true
}
}
}
},
shape = NavigationDrawerItemDefaults.shape(RoundedCornerShape(12.dp)),
colors = NavigationDrawerItemDefaults.colors(
contentColor = Color.White,
focusedContentColor = Color.White,
selectedContentColor = Color.White,
inactiveContentColor = Color.White,
),
content = {
if (!isClosed) {
Text(
text = item.title,
style = MaterialTheme.typography.titleSmall
)
}
},
leadingContent = {
Icon(
imageVector = item.icon,
contentDescription = null,
)
}
)
if (index == items.size - 2) {
Spacer(modifier = Modifier.weight(1f))
}
}
}
}
) {
Box(modifier = Modifier.fillMaxSize()) {
NavHost(
navController = navController,
startDestination = "live_tv" // Default screen saat dibuka
) {
// Route ke file baru
composable("live_tv") {
LiveTVScreen()
}
composable("movies") { PlaceholderScreen("Movies Content") }
composable("settings") { PlaceholderScreen("Settings Screen") }
}
}
}
}
@Composable
fun PlaceholderScreen(title: String) {
Box(Modifier.fillMaxSize().padding(start = 80.dp), contentAlignment = Alignment.Center) {
Text(text = title, style = MaterialTheme.typography.displayMedium)
}
}
private fun setSocketListener() {
}
}
data class NavigationItem(val title: String, val route: String, val icon: ImageVector)
с помощью add
fillMaxWidth(0.3f) OR width(250.dp) OR requireWidth(250.dp)
не работает, пожалуйста, помогите и большое спасибо


Подробнее здесь: https://stackoverflow.com/questions/798 ... ck-compose