4

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 hereChange to 'return@Collect'

私が達成したいことは次のとおりです。

// At view model side
viewmodelScope.launch {

    repo.getSomeData().collect {
      if (it == Result.Success) {
        //Show data
      }
      else {
        //Show empty screen
      }

    }
}

Result の実装の私のアプローチは間違っていますか? 何が悪いのかわかりません。フローからフローを返すことができない理由

4

2 に答える 2