Код: Выделить всё
@Module
@InstallIn(SingletonComponent::class)
object AppDatabaseModule {
@Provides
@Singleton
fun providesAppDatabase(
@ApplicationContext applicationContext: Context,
): AppDatabase = Room.databaseBuilder(
context = applicationContext,
klass = AppDatabase::class.java,
name = "database",
).build()
@Provides
fun providesDataDao(db: AppDatabase): DataDao = db.dataDao()
}
@HiltViewModel
class DataModel @Inject constructor (
dataDao: DataDao,
) : ViewModel() {
val data: StateFlow = dataDao.getAll()
.stateIn(
scope = viewModelScope,
started = SharingStarted.WhileSubscribed(5),
initialValue = emptyList(),
)
}
@Database(entities = [Data::class], version = 1)
abstract class DataDatabase: RoomDatabase() {
abstract fun dataDao(): DataDao
}
@Entity (tableName = "data")
data class Data(
val str: String
)
@Dao
interface DataDao {
@Query("SELECT * FROM data")
fun getAll(): Flow
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... tviewmodel