так, чтобы загрузка значения была синхронной с отрисовкой экрана.
                  
                  
                  
                  
                  
                  Сейчас делаю вот так, но это совсем не катит....
                  
                  
                  val context = LocalContext.current
                  
                  
                  val datastore = SubscriptionRepository(context)
                  
                  
                  val isUserHasSub = runBlocking { datastore.isUserHaveSubscription.first() }
                  
                  
                
Смотреть доку композа по SideEffects
А почему не катит?
 Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Подскажи более конкретнее, пожалуйста. Какая штука мне может помочь, потому что тема-то довольно обширная, а мне бы сегодня завершить
За Вас я код писать не буду, задача типовая и есть примеры подобного в офф доках.
runblocking засунуть в remember можно
 Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Спасибо, дай бог тебе здоровья!👍
Секция по Side Effects вполне нормально описывает то, что Вам нужно
 Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Блокирует поток, ну и получает только первое значение из дата стор, получается некорректно. А если указываю last(), то приложение зависает на запуске сплэш скрина
А зачем "чтобы загрузка значения была синхронной с отрисовкой экрана" ?
По своему опыту оно блокирует на не более чем 1мс Можно ещё flow.collectAsState(init = null)
 Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  У меня в isUserHaveSubscription хранится логическое значение есть ли у пользователя подписка. Если выпадает false, то отображается оформите подписку, реклама откручивается. Это очень критично, вообщем)
 Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Это тоже в runblocking?
collect as state? Нет
звучит так, будтно здесь нужно вводить третье состояние "данные ещё не загружены"
Это технически невозможно. Нужно состояние загрузки, и потом состояние с данными.
Сейчас и до sealed дойдем, чутка подождать надо
 Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                      
                      
                        
                          Михаил
                          
                        
                      
                    
                    
                    
                    
                      Автор вопроса
                    
                    
                  Окей, спасибо. Так и сделаю значит через состояния.
Советы в таком тоне всем только мешают. Вы можете вообще не отвечать сюда, если вам не нравится тема обсуждения, кажется слишком простой или обсуждавшейся сто раз. Кто-нибудь другой обязательно объяснит нормально
А runBlocking на главном потоке может приводить к deadlock.
Советы прочитать поподробнее доку композа и его стиль работы - всем мешают? Ок, если хочется превратить чат в аналог android_ru где мусолят "а как мне строку в бандл передать" - ваше право
Так его коммент был не к совету, а к тону)
Обсуждают сегодня