Closed taratara10 closed 2 years ago
仮にofflineするとて、ステータスはどのタイミングでpostするんだろうか
goodしたら、震えて、ステータス更新
onClick: (Int) -> ()
UI
viewModel
skip と good は片方しか選択しえない
+ニュートラルの3パターンなので、sealedにする
TopicUiState
スワイプ時
うーん
saveStateHandleとは https://note.com/kauche/n/n27d456bcaa78 https://developer.android.com/topic/libraries/architecture/viewmodel-savedstate?hl=ja
viewModelを復元するsharedPref的なやつ?
正直stateFlowがコールドストリームであること以外何もしらないので、コードラボやった方がいいかもしれない。
https://zenn.dev/ko2ic/articles/3601dea3d35013
ほーん。
viewModelに@Stable
するとメソッド呼び出しだけのrecompositionが防げそう?
viewModelでどっち採用するか
collectAsState()
そもそもStateってなにもの
A value holder where reads to the value property during the execution of a Composable function, the current RecomposeScope will be subscribed to changes of that value.
Stateに変化があるとrecompositionがinvoke. なにそれ凄すぎ
https://medium.com/androiddevelopers/migrating-from-livedata-to-kotlins-flow-379292f419fb
うーんStateFlowをListでやるのが良く分からん。
<Result<UiState>>(Result.Success(UiState(...)))
みたいにSugerしたほうがええんやろか
StateFlow, It only has one value.
Since the state holders always have a value, it’s a good idea to wrap our UI state in some kind of Result class that supports states such as Loading, Success, and Error.
あ~~~ なるほど。 UiStateの観点でいったら、常に値がある方が望ましいのか。
https://stackoverflow.com/questions/69932411/correct-way-to-handle-mutable-state-of-list-of-data-in-jetpack-compose https://medium.com/geekculture/add-remove-in-lazycolumn-list-aka-recyclerview-jetpack-compose-7c4a2464fc9f
mutableStateList vs mutableState(listOf)
mutableStateListで良さそう。
https://stackoverflow.com/questions/67252538/jetpack-compose-update-composable-when-list-changes
Caution: Using mutable objects such as ArrayList
or mutableListOf() as state in Compose will cause your users to see incorrect or stale data in your app.
In your code use
val favourites by mutableStateListOf
instead of
var favourites: MutableList
なるほど!?mutableListでState持つと、整合性バグる可能性あるっぽいな
公式にかいてあったわ https://developer.android.com/jetpack/compose/state?hl=ja
https://stackoverflow.com/questions/67252538/jetpack-compose-update-composable-when-list-changes
when state list work. たぶん、equalじゃなくなった時
個々のitemのStateを変化させたときに発火するかが気になる。 {page-> } の中にrememberで各ページのStateでも持たせたろか
うーん なにがやりたいか問題が定式化できてないので、とりあえずrepository作るか
repositoryからはgetTopic
で単一のデータを取得する、、、RepositoryからFlowで取得できない?
Flowってつまり、、、元のデータソースに変更があったら通知してくれるLiveData的な値、、、ってコト!?
問題は、List
が各 DAO 関数から 1 回しか返されないことです。基となるデータが更新されても、submitList() が呼び出されて UI が更新されることはありません。ユーザーからは、何も変わっていないように見えます。 これを修正するには、「非同期フロー」(多くの場合は単に「フロー」と呼びます)という Kotlin の機能を利用して、DAO が継続的にデータベースからデータを出力できるようにします。項目が挿入、更新、削除されると、その結果がフラグメントに返されます。collect(), という関数を使用すると、フローから出力された新しい値を使用して submitList() を呼び出すことができます。これにより、ListAdapter は新しいデータに基づいて UI を更新できます。
https://developer.android.com/codelabs/basic-android-kotlin-training-intro-room-flow#8
RoomでLiveDataを指定すると、observerで登録できて、テーブルに更新があると自動で通知してくれんのか。 は~~~~~
でけた
goodとskip押したときの実装