yumemi-inc / android-training-template

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

エラーハンドリングとダイアログ表示(Compose)

Seo-4d696b75 opened this issue · comments

💬 APIのエラーを補足してダイアログを表示しましょう。

Note

Required(先に完了させましょう)

Next(次に取り組みましょう)

  • 必須課題
    #16
  • 任意課題
    #15

課題内容

  • APIからExceptionがThrowされたらダイアログを表示する。
    • タイトル:"Error"
    • メッセージ:"エラーが発生しました。"
    • Positiveボタン:"Reload"
    • Negativeボタン:"Close"
  • ダイアログのRelaodボタンをタップすると、ダイアログを閉じ天気予報を再取得する。
  • ダイアログのCloseボタンをタップすると、ダイアログを閉じ天気予報を再取得しない。

利用するAPI

YumemiWeather

    fun fetchThrowsWeather() : String
  • ランダムにエラーが発生してUnknownExceptionをthrowします
  • 天気を表す文字列 "sunny" or "cloudy" or "rainy" or "snow"をランダムに返します

UI状態とイベント

エラーなどのイベントをUIでどう処理するのか?ではなく、イベントによってUIが表示すべき状態をどう変化させるか、という観点でモデル化します。今回ではエラーが発生すると、エラーダイアログを表示するか・非表示かの状態に影響しますので、例えば次のようにUI状態を定義できます

data class WeatherState(
    val weather: String?, // もっと適切な表現方法があります!
    val showErrorDialog: Boolean,
)

💡 ComposeではUI状態をひとつのDataClassにまとめて扱う場合が多いです

動作イメージ

参考資料