Compose 在material3中找不到ScaffoldState类

material3中找不到ScaffoldState

官方说 M2 ScaffoldState 类在 M3 中已不存在,因为它包含不再需要的 drawerState 参数。如需使用 M3 Scaffold 显示信息提示控件,请改用 SnackbarHostState
M2:

import androidx.compose.material.Scaffold
import androidx.compose.material.rememberScaffoldState

val scaffoldState = rememberScaffoldState()
val scope = rememberCoroutineScope()

Scaffold(
    scaffoldState = scaffoldState,
    content = {
    
    
        …
        scope.launch {
    
    
            scaffoldState.snackbarHostState.showSnackbar()
        }
    }
)

M3

import androidx.compose.material3.Scaffold
import androidx.compose.material3.SnackbarHost
import androidx.compose.material3.SnackbarHostState

val snackbarHostState = remember {
    
     SnackbarHostState() }
val scope = rememberCoroutineScope()

Scaffold(
    snackbarHost = {
    
     SnackbarHost(snackbarHostState) },
    content = {
    
    
        …
        scope.launch {
    
    
            snackbarHostState.showSnackbar()
        }
    }
)

M2 Scaffold 中的所有 drawer* 参数都已从 M3 Scaffold 中移除。其中包括 drawerShapedrawerContent 等参数。如需使用 M3 Scaffold 显示抽屉式导航栏,请改用抽屉式导航栏可组合项(如 ModalNavigationDrawer):
M2:

import androidx.compose.material.DrawerValue
import
import androidx.compose.material.Scaffold
import androidx.compose.material.rememberDrawerState
import androidx.compose.material.rememberScaffoldState

val scaffoldState = rememberScaffoldState(
    drawerState = rememberDrawerState(DrawerValue.Closed)
)
val scope = rememberCoroutineScope()

Scaffold(
    scaffoldState = scaffoldState,
    drawerContent = {
    
    },
    drawerGesturesEnabled =,
    drawerShape =,
    drawerElevation =,
    drawerBackgroundColor =,
    drawerContentColor =,
    drawerScrimColor =,
    content = {
    
    
        …
        scope.launch {
    
    
            scaffoldState.drawerState.open()
        }
    }
)

M3:

import androidx.compose.material3.DrawerValue
import androidx.compose.material3.ModalDrawerSheet
import androidx.compose.material3.ModalNavigationDrawer
import androidx.compose.material3.Scaffold
import androidx.compose.material3.rememberDrawerState

val drawerState = rememberDrawerState(DrawerValue.Closed)
val scope = rememberCoroutineScope()

ModalNavigationDrawer(
    drawerState = drawerState,
    drawerContent = {
    
    
        ModalDrawerSheet(
            drawerShape =,
            drawerTonalElevation =,
            drawerContainerColor =,
            drawerContentColor =,
            content = {
    
    }
        )
    },
    gesturesEnabled =,
    scrimColor =,
    content = {
    
    
        Scaffold(
            content = {
    
    
                …
                scope.launch {
    
    
                    drawerState.open()
                }
            }
        )
    }
)