初めに
従来のDataBinding
などの実装では、ViewModel
にLiveData
を持たせてそれを監視することでview
の状態を切り替えていました。
しかしjetpack compose
になってからはMVVM
という設計自体が向いてないという話も出てきてはいますが、代替案がないのが現状です。
そこで今回は、jetpack compose
を使ったViewModel
のデータを監視する方法を紹介していきます。
本文
基本的には今までLiveData
を使ってた部分をStateFlow
に変えればいいだけです。
そして、Compose
に対して引数として該当画面のViewModel
を渡してあげれば、変数として監視することができます。
また、Compose
側で値を変更したくないのでViewModel
内で宣言する時は下記のようにするのがベストだと思います。
private val _hoge = MutableStateFlow("")
val hoge: StateFlow<String> get() = _hoge
最後に
今後アーキテクチャ自体が変わっていき、必要なくなる可能性もありますが現状においては割とベターな実装なのかなと思い、備忘録程度に書かせていただきました。
参考になったら嬉しいです