0

我正在尝试在我的使用 jetpack compose 的应用程序上实现一个入职屏幕,该屏幕只会在第一次使用该应用程序时打开,并且“入职”布尔值随后保存在数据存储首选项中。如果您知道存储数据存储首选项的更好方法,我也想知道,我的最小示例显示了问题:

val Context.dataStore: DataStore<Preferences> by preferencesDataStore(name = "settings")
val ONBOARDING = booleanPreferencesKey("onboarding")

class MainActivity : ComponentActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        NearbyConnectionsApi.setContext(applicationContext)
        val onBoarding: Flow<Boolean> = baseContext.dataStore.data
            .map { preferences ->
                preferences[ONBOARDING] ?: false
            }
        super.onCreate(savedInstanceState)
        setContent {
            val navController = rememberNavController()
            if(!onBoarding)//how to use the value here please
{
                navController.navigate("onboarding"){
                    popUpTo(0)
                }
            }
            //....screen implementation 
        }

请问如何使用流量值的值?提前致谢

4

1 回答 1

0

您可以将流收集为状态

setContent {
        val navController = rememberNavController()
        val onBoardingState = onBoarding.collectAsState(initial = false)


        if(!onBoarding.value)
        {
            navController.navigate("onboarding"){
                popUpTo(0)
            }
        }
        //....screen implementation 
}
于 2022-02-03T10:56:28.653 回答