Vid*_*uri 38 android kotlin material-components-android android-jetpack-compose android-jetpack-compose-material3
我想用
记住脚手架状态()
在android Material3 compose中,但无法使用它。
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun AppFeatureScreen(viewModel: AppFeatureViewModel = viewModel()) {
val scaffoldState = rememberScaffoldState()
Scaffold() {
}
}
Run Code Online (Sandbox Code Playgroud)
小智 21
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.material3.ExtendedFloatingActionButton
import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState
import androidx.compose.material3.Text
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
val snackbarHostState = remember { SnackbarHostState() }
val scope = rememberCoroutineScope()
Scaffold(
snackbarHost = { SnackbarHost(snackbarHostState) },
floatingActionButton = {
var clickCount by remember { mutableStateOf(0) }
ExtendedFloatingActionButton(
onClick = {
// show snackbar as a suspend function
scope.launch {
snackbarHostState.showSnackbar(
"Snackbar # ${++clickCount}"
)
}
}
) { Text("Show snackbar") }
},
content = { innerPadding ->
Text(
text = "Body content",
modifier = Modifier.padding(innerPadding).fillMaxSize().wrapContentSize()
)
}
)
Run Code Online (Sandbox Code Playgroud)
mah*_*mnj 14
rememberScaffoldState已在材料 3 中删除,迁移文档显示
\n\nM2 ScaffoldState 类不再存在于 M3 中,因为它包含不再需要的抽屉状态参数。要使用 M3 Scaffold 显示小吃栏,请改用 SnackbarHostState:
\n
这就是材料 3 中显示小吃栏的方式。
\nimport androidx.compose.material3.Scaffold\nimport androidx.compose.material3.SnackbarHost\nimport androidx.compose.material3.SnackbarHostState\n\nval snackbarHostState = remember { SnackbarHostState() }\nval scope = rememberCoroutineScope()\n\nScaffold(\n snackbarHost = { SnackbarHost(snackbarHostState) },\n content = {\n \xe2\x80\xa6\n Button(\n onClick = {\n scope.launch {\n snackbarHostState.showSnackbar(\n message = "Hey this is a snackbar",\n actionLabel = "Click me",\n duration = SnackbarDuration.Short\n )\n }\n })\n {\n Text(text = "Click me")\n }\n }\n)\nRun Code Online (Sandbox Code Playgroud)\n
您需要记住SnackbarHostState()并向脚手架提供 SnackbarHost 以便您可以显示小吃栏。
val snackbarHostState = remember { SnackbarHostState() }
Scaffold(
...
snackbarHost = { SnackbarHost(hostState = snackbarHostState) }
...
)
Run Code Online (Sandbox Code Playgroud)
然后你可以用来snackbarHostState.showSnackbar显示snackbar。
| 归档时间: |
|
| 查看次数: |
15006 次 |
| 最近记录: |