JetPack Compose 實(shí)戰(zhàn) Jetchat(2)

繼續(xù)看配置app/build.gradle

 buildFeatures {
        compose true
        viewBinding true

        // Disable unused AGP features
        buildConfig false
        aidl false
        renderScript false
        resValues false
        shaders false
    }

指的注意的是這里開啟和關(guān)閉功能的做法

承接上篇
import com.example.compose.jetchat.buildsrc.Libs
和我們平時(shí)寫的gradle差不多,只不過Libs腳本化了變量而已。
開始看代碼
Jetchat 地址:

入口類NavActivity

  • 委托,聲明MainViewModel
    private val viewModel: MainViewModel by viewModels()

看代碼就是打開關(guān)閉抽屜的動(dòng)作

  • onCreate

關(guān)閉裝飾裝修系統(tǒng)窗口,它允許我們處理插圖

        WindowCompat.setDecorFitsSystemWindows(window, false)

setContent
設(shè)置主界面,布局,類似我們 setContentView

ProvideWindowInsets(consumeWindowInsets = false)
為我們的內(nèi)容提供 WindowInsets。 我們不想消耗它們,所以它們一直向下傳遞視圖層次結(jié)構(gòu)(因?yàn)槲覀兪褂闷危?/p>

Providers(LocalBackPressedDispatcher provides this.onBackPressedDispatcher)

提供者將值綁定到 ProvidableCompositionLocal 鍵。 使用 CompositionLocal.current 讀取 CompositionLocal 將返回 Providers 的 values 參數(shù)中為內(nèi)容 lambda 中直接或間接調(diào)用的所有可組合函數(shù)提供的值。

主界面使用了Navigation,做導(dǎo)航用。

用ViewBinding做了視圖的綁定


@Composable
fun JetchatScaffold(
    scaffoldState: ScaffoldState = rememberScaffoldState(),
    onProfileClicked: (String) -> Unit,
    onChatClicked: (String) -> Unit,
    content: @Composable (PaddingValues) -> Unit
) {
    JetchatTheme {
        Scaffold(
            scaffoldState = scaffoldState,
            drawerContent = {
                JetchatDrawer(
                    onProfileClicked = onProfileClicked,
                    onChatClicked = onChatClicked
                )
            },
            bodyContent = content
        )
    }
}

自定義了組件JetchatDrawer,組合使用,并定義了主題JetchatTheme

val myColors = colors ?: if (isDarkTheme) JetchatDarkPalette else JetchatLightPalette

定義了兩套主題色

JetchatDrawer
定義了抽屜內(nèi)容和點(diǎn)擊事件

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容