Car オブジェクトのリストをフローとして返す Dao クラスがあります。
@Query("SELECT * FROM Car")
fun getAllCars(): Flow<List<Car>>
私のリポジトリでは、この Dao を次のように使用できます。
fun getAllCars(): Flow<List<Car>>
//Implementation
override fun getAllCars() = carDao.getAllCars()
これをビューモデルで観察できflow
、すべてが機能し、人生は順調でした。
さて、Developer Android サイトの投稿を読んだ後、
このデータの読み込みに関するデータとステータスを含むジェネリック クラス。
私はインスピレーションを得たので、ここで Result クラスを持つことについて議論しているもう 1 つの投稿を読みました。
そのため、リポジトリにいくつかの変更を加えましたが、解決できません。
エラー:
suspend fun getSomeData(): Flow<Result<List<Car>>> {
carDao.getAllCars().collect {
if (it.isNotEmpty()) {
return flowOf(Result.Success(it)) //<-- Here I am getting error from IDE
}
else {
val throwable = Throwable()
return flowOf(Result.Failure<List<Car>>(throwable)) //<-- Here I am getting error from IDE
}
}
}
エラーはReturn is not allowed here
、Change to 'return@Collect'
私が達成したいことは次のとおりです。
// At view model side
viewmodelScope.launch {
repo.getSomeData().collect {
if (it == Result.Success) {
//Show data
}
else {
//Show empty screen
}
}
}
Result の実装の私のアプローチは間違っていますか? 何が悪いのかわかりません。フローからフローを返すことができない理由