fix: 修复房间管理增删改;优化 UI 性能与交互

This commit is contained in:
zzh 2026-07-14 10:01:09 +08:00
parent e2c6741afc
commit bba4e3abb7
5 changed files with 50 additions and 27 deletions

View File

@ -4,6 +4,9 @@ import android.os.Bundle
import androidx.activity.ComponentActivity import androidx.activity.ComponentActivity
import com.example.smarthome.ui.theme.SmartHomeTheme import com.example.smarthome.ui.theme.SmartHomeTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.LocalOverscrollConfiguration
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.ViewCompositionStrategy import androidx.compose.ui.platform.ViewCompositionStrategy
import androidx.compose.material3.Surface import androidx.compose.material3.Surface
@ -72,6 +75,7 @@ class MainActivity : ComponentActivity() {
} }
} }
@OptIn(ExperimentalFoundationApi::class)
@Composable @Composable
fun AppRoot() { fun AppRoot() {
val context = androidx.compose.ui.platform.LocalContext.current val context = androidx.compose.ui.platform.LocalContext.current
@ -79,16 +83,19 @@ fun AppRoot() {
// 监听登录状态 // 监听登录状态
val isLoggedIn by UserManager.isLoggedIn.collectAsState() val isLoggedIn by UserManager.isLoggedIn.collectAsState()
if (!isLoggedIn) { // 禁用上下滑到边界时的拉伸回弹效果,降低滑动重绘开销
// 未登录,显示登录页面 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {
LoginScreen( if (!isLoggedIn) {
onLoginSuccess = { // 未登录,显示登录页面
// 登录成功后会自动更新isLoggedIn状态 LoginScreen(
} onLoginSuccess = {
) // 登录成功后会自动更新isLoggedIn状态
} else { }
// 已登录,显示主界面 )
MainContent() } else {
// 已登录,显示主界面
MainContent()
}
} }
} }

View File

@ -132,7 +132,8 @@ fun MainScaffold(
selectedNavItem = selectedNavItem, selectedNavItem = selectedNavItem,
onNavItemSelect = onNavItemSelect, onNavItemSelect = onNavItemSelect,
modifier = Modifier.fillMaxHeight(), modifier = Modifier.fillMaxHeight(),
hazeState = hazeState hazeState = hazeState,
rooms = rooms
) )
// 间距 // 间距
@ -2347,18 +2348,12 @@ fun GlassSidebar(
selectedNavItem: Int = 0, selectedNavItem: Int = 0,
onNavItemSelect: (Int) -> Unit = {}, onNavItemSelect: (Int) -> Unit = {},
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
hazeState: HazeState hazeState: HazeState,
rooms: List<String> = listOf("总览", "客厅", "厨房", "卧室", "影音室", "游戏房")
) { ) {
// 房间列表 - 放在总览上面 // 房间列表 - 使用外部传入,支持动态增删改
val roomNavItems = listOf( val roomNavItems = rooms
"总览",
"客厅",
"厨房",
"卧室",
"影音室",
"游戏房"
)
// 导航项列表 // 导航项列表
val navItems = listOf( val navItems = listOf(

View File

@ -485,6 +485,7 @@ fun SettingsContent(
onRenameRoom: (Int, String) -> Unit = { _, _ -> } onRenameRoom: (Int, String) -> Unit = { _, _ -> }
) { ) {
var showEditRoomsDialog by remember { mutableStateOf(false) } var showEditRoomsDialog by remember { mutableStateOf(false) }
var showAddRoomDialog by remember { mutableStateOf(false) }
Column( Column(
modifier = Modifier modifier = Modifier
@ -517,7 +518,18 @@ fun SettingsContent(
onDismiss = { showEditRoomsDialog = false }, onDismiss = { showEditRoomsDialog = false },
onRenameRoom = onRenameRoom, onRenameRoom = onRenameRoom,
onDeleteRoom = onDeleteRoom, onDeleteRoom = onDeleteRoom,
onAddRoom = { /* 添加房间通过对话框内的按钮处理 */ } onAddRoom = { showAddRoomDialog = true }
)
}
// 添加房间对话框
if (showAddRoomDialog) {
AddRoomDialog(
onDismiss = { showAddRoomDialog = false },
onConfirm = { roomName ->
onAddRoom(roomName)
showAddRoomDialog = false
}
) )
} }
} }

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M19,13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"/>
</vector>

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB