-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat(model): アプリバージョンのモデルを追加 #654
Conversation
Walkthroughこのプルリクエストでは、アプリケーションのバージョン管理に関連する複数の変更が行われました。主な変更点は、アプリバージョンを表す新しいデータモデル Changes
Assessment against linked issues
Possibly related PRs
Suggested labels
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
Commands
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
🧹 Outside diff range and nitpick comments (4)
core/model/lib/config.dart (1)
2-2
: エクスポート文の追加を承認します。アルファベット順への並び替えを推奨します。新しい
app_version.dart
のエクスポート文の追加は、アプリケーションバージョンモデルを追加するという PR の目的に合致しており、適切です。ただし、可読性と保守性を向上させるために、エクスポート文をアルファベット順に並び替えることをお勧めします。以下の順序でエクスポート文を並び替えることを提案します:
export 'src/config/app_config.dart'; -export 'src/config/app_version.dart'; export 'src/config/flavor.dart'; export 'src/config/remote_config.dart'; export 'src/config/update_version.dart'; +export 'src/config/app_version.dart';core/model/lib/src/config/app_config.dart (1)
37-37
: fakeAppConfigの適切な更新fakeAppConfigインスタンスが新しいAppVersion型を正しく反映するように更新されています。バージョン値(1.0.0)が維持されているのも一貫性があり良いです。
可読性を向上させるために、以下のような記述も検討してみてはいかがでしょうか:
version: const AppVersion(major: 1, minor: 0, patch: 0),
const
キーワードを追加することで、このオブジェクトが不変であることを明示的に示すことができます。core/model/lib/src/config/app_version.freezed.dart (2)
18-28
: 構造は適切ですが、ドキュメンテーションの追加を検討してください。AppVersion の構造は適切に定義されており、major、minor、patch のゲッターメソッドが含まれています。copyWith メソッドも正しく定義されています。
改善案:各フィールド(major、minor、patch)にドキュメンテーションコメントを追加することで、コードの可読性と理解度が向上する可能性があります。例えば:
/// メジャーバージョン番号 int get major => throw _privateConstructorUsedError; /// マイナーバージョン番号 int get minor => throw _privateConstructorUsedError; /// パッチバージョン番号 int get patch => throw _privateConstructorUsedError;
122-159
: 実装は適切ですが、toString メソッドの拡張を検討してください。_$AppVersionImpl クラスの実装は適切で、必要なメソッド(コンストラクタ、toString、等価性チェック、hashCode)がすべて含まれています。
改善案:toString メソッドを拡張して、より読みやすいフォーマットでバージョン情報を表示することを検討してください。例えば:
@override String toString() { return 'AppVersion: $major.$minor.$patch'; }これにより、バージョン情報がより直感的に表示されます。
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: CHILL
📒 Files selected for processing (10)
- app/mobile/lib/config/remote_config.dart (1 hunks)
- app/mobile/lib/initializer/app_config_initializer.dart (2 hunks)
- core/model/lib/config.dart (1 hunks)
- core/model/lib/src/config/app_config.dart (3 hunks)
- core/model/lib/src/config/app_config.freezed.dart (9 hunks)
- core/model/lib/src/config/app_version.dart (1 hunks)
- core/model/lib/src/config/app_version.freezed.dart (1 hunks)
- core/model/lib/src/config/update_version.dart (2 hunks)
- core/model/lib/src/config/update_version.freezed.dart (7 hunks)
- feature/settings/lib/src/ui/page/settings/component/app_config_tile_content.dart (1 hunks)
🔇 Additional comments (35)
feature/settings/lib/src/ui/page/settings/component/app_config_tile_content.dart (2)
23-23
: バージョン表示の変更を承認します。buildNumberの扱いについて確認が必要です。
appConfig.version
からappConfig.version.value
への変更は適切です。しかし、buildNumber
は依然として直接appConfig
からアクセスされています。これは意図的なものでしょうか?
buildNumber
の扱いを確認するために、以下のスクリプトを実行してください:#!/bin/bash # 説明: buildNumberの扱いを確認します。 # テスト: appConfigでのbuildNumberの定義を検索します。 rg --type dart -A 5 'buildNumber.*:' # テスト: buildNumberの使用箇所を検索します。 rg --type dart 'buildNumber'
21-21
: バージョンモデルの変更を承認します。新しいモデルの実装を確認してください。
appConfig.version
からappConfig.version.value
への変更は、新しいアプリケーションバージョンモデルの導入を示唆しています。この変更はPRの目的と一致しており、適切に実装されています。新しいバージョンモデルの実装を確認するために、以下のスクリプトを実行してください:
core/model/lib/src/config/app_config.dart (2)
1-1
: 適切なインポートの追加AppVersionタイプを使用するために必要なインポートが正しく追加されています。コードの変更に合わせて適切に更新されています。
23-23
: バージョン型の改善AppConfigクラスのversionフィールドをStringからAppVersionに変更したのは良い改善です。これにより型安全性が向上し、バージョン情報がより構造化されます。
ただし、この変更がコードベース全体に与える影響を確認することをお勧めします。以下のスクリプトを実行して、AppConfigの使用箇所を確認してください:
このスクリプトの結果を基に、必要に応じて他の箇所も更新してください。
✅ Verification successful
変更の検証完了
AppConfigクラスのversionフィールドの変更がコードベース全体で正しく適用されていることを確認しました。すべての使用箇所がAppVersion型に対応しており、問題は見つかりませんでした。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # AppConfigの使用箇所を検索し、versionフィールドへのアクセスを確認します rg --type dart -e "AppConfig.*version" -e "appConfig.*version"Length of output: 731
app/mobile/lib/initializer/app_config_initializer.dart (2)
1-1
: インポート文の順序変更は問題ありません。
package:app_mobile/env.dart
のインポート文の位置変更は、コードの機能に影響を与えません。これは単なるスタイルの変更であり、おそらくプロジェクトのインポート順序の規則に従ったものと思われます。
18-18
: バージョン情報の処理が改善されましたが、エラーハンドリングの追加を検討してください。
AppVersion.parse(packageInfo.version)
を使用することで、バージョン情報の構造化された処理が可能になり、より柔軟なバージョン管理ができるようになりました。これは良い改善です。しかし、
packageInfo.version
の形式がAppVersion.parse()
の期待する形式と一致しない場合、実行時エラーが発生する可能性があります。エラーハンドリングの追加を検討してください。以下のスクリプトを実行して、
AppVersion
クラスの実装を確認し、エラーハンドリングの必要性を判断してください:core/model/lib/src/config/update_version.freezed.dart (7)
19-20
: 型の変更が適切に行われています。
String
からAppVersion
への型の変更は、アプリケーションバージョンモデルの追加という PR の目的に合致しています。この変更により、型安全性が向上し、バージョン管理がより堅牢になります。
35-38
: インターフェースの更新が適切に行われています。
$UpdateVersionCopyWith
インターフェースの変更は、ミキシンの型更新と一致しています。新しいforce
とoptional
のゲッターメソッドは、AppVersion
も独自のcopyWith
機能を持つFreezedモデルであることを示唆しています。これにより、UpdateVersion
モデルとその構成要素の一貫性のある操作が可能になります。
63-63
: 実装クラスの型キャストが適切に更新されています。
_$UpdateVersionCopyWithImpl
クラス内の型キャストがAppVersion
に更新されており、これは前述の変更と一致しています。この更新により、型の一貫性が保たれ、潜在的な型関連のエラーを防ぐことができます。Also applies to: 67-67
70-89
: 新しいゲッターメソッドが適切に追加されています。
_$UpdateVersionCopyWithImpl
クラスに追加されたforce
とoptional
のゲッターメソッドは、UpdateVersion
オブジェクトの個別フィールドを変更する機能を提供します。これらのメソッドにより、AppVersion
オブジェクトの変更がより柔軟になり、イミュータブルな設計原則を維持しながらオブジェクトの部分的な更新が可能になります。
100-105
: インターフェースの更新が一貫して行われています。
_$$UpdateVersionImplCopyWith
インターフェースのcall
メソッドとゲッターメソッドがAppVersion
を使用するように更新されています。これらの変更は、親インターフェースと実装クラスの以前の更新と一致しており、型の一貫性を維持しています。
128-128
: 実装クラスの型キャストが適切に更新されています。
__$$UpdateVersionImplCopyWithImpl
クラス内の型キャストがAppVersion
に更新されており、これは前述の変更と一致しています。この更新により、型の一貫性が保たれ、コード全体の型安全性が向上します。Also applies to: 132-132
144-144
: モデルクラスの更新が適切に完了しています。
_$UpdateVersionImpl
と_UpdateVersion
クラスにおいて、force
とoptional
フィールドの型がAppVersion
に更新されています。これにより、ファイル全体でString
からAppVersion
への移行が完了しました。この変更は、アプリケーションバージョン管理の改善という PR の目的を達成し、より型安全で堅牢なモデルを提供します。全体として、これらの変更は一貫性があり、アプリケーションのバージョン管理機能を強化するものと評価できます。
Also applies to: 146-146, 177-178, 182-184
core/model/lib/src/config/app_version.freezed.dart (4)
1-11
: LGTMです。ヘッダーは適切に設定されています。ファイルヘッダーは Freezed で生成されたコードの標準的な形式に従っており、適切に設定されています。生成されたコードであることが明確に示されており、必要な ignore コメントも含まれています。
30-118
: copyWith の実装は適切です。AppVersionCopyWith インターフェースとその実装は正しく定義されています。これにより、AppVersion インスタンスの不変更新が可能になります。コードは自動生成されたものであり、Freezed パッケージの期待される動作に合致しています。
161-181
: 抽象クラスの定義は適切です。_AppVersion 抽象クラスは正しく定義されており、AppVersion 実装に必要な構造を提供しています。ファクトリーコンストラクタと抽象ゲッターメソッドが適切に含まれています。この構造により、Freezed パッケージが期待通りに動作し、型安全性と不変性が確保されます。
1-181
: 全体的に良好な実装です。PR の目的を達成しています。このファイルは Freezed パッケージを使用して適切に生成されており、アプリケーションバージョンのモデルを正しく実装しています。主な特徴は以下の通りです:
- major、minor、patch フィールドを持つ AppVersion クラスの定義
- 不変性を保証する copyWith メソッドの実装
- 適切な toString、equality、hashCode メソッドの実装
これらの実装により、PR の目的であるアプリケーションバージョンのモデル追加が達成されています。
改善のための提案:
- フィールドにドキュメンテーションコメントを追加
- toString メソッドの出力形式の最適化
これらの小さな改善を行うことで、コードの可読性と使いやすさがさらに向上する可能性があります。
core/model/lib/src/config/update_version.dart (4)
29-38
:fakeUpdateVersion
の初期化が正しく行われています
fakeUpdateVersion
がAppVersion
インスタンスを使用して正しく初期化されています。
18-20
:forceUpdatable
とoptionalUpdatable
メソッドの引数型変更に注意これらのメソッドの引数が
String
からAppVersion
に変更されました。この変更により、これらのメソッドを呼び出す全ての箇所で、引数の型をAppVersion
に更新する必要があります。コードベース全体で呼び出しが適切に更新されていることを確認してください。以下のスクリプトを実行して、
forceUpdatable
およびoptionalUpdatable
メソッドの呼び出しでString
型の引数を使用していないか確認できます。
12-13
:UpdateVersion
コンストラクタのパラメータ型変更に注意
force
とoptional
のパラメータ型がString
からAppVersion
に変更されています。この変更に伴い、UpdateVersion
をインスタンス化している全ての箇所で、新しい型に対応するようコードが更新されていることを確認してください。以下のスクリプトを実行して、
UpdateVersion
のコンストラクタ呼び出しにString
型の値が渡されていないか確認できます。
22-23
:AppVersion
の比較演算子が正しく実装されているか確認
_updatable
メソッドでAppVersion
同士の比較を行っています。AppVersion
クラスが比較演算子<
を正しくオーバーロードしていることを確認してください。そうでない場合、比較が正しく機能しない可能性があります。以下のスクリプトを実行して、
AppVersion
クラスが比較演算子を実装しているか確認できます。core/model/lib/src/config/app_version.dart (3)
9-15
:AppVersion
クラスの定義が適切です
@freezed
アノテーションとファクトリーコンストラクタが正しく設定されており、バージョン管理のための基本的なプロパティを持っています。
29-37
:compareTo
メソッドの実装が正しいですバージョン間の比較ロジックが適切に実装されています。
39-46
: 比較演算子のオーバーロードが適切です
>
,<
,>=
,<=
の演算子がcompareTo
メソッドを利用して正しくオーバーロードされています。core/model/lib/src/config/app_config.freezed.dart (11)
52-52
:version
プロパティのコピーサポート追加
$AppVersionCopyWith<$Res> get version;
が追加され、version
プロパティのコピーが可能になりました。これはAppVersion
型への変更に伴う適切な対応です。
120-128
:version
プロパティのcopyWith
サポート追加
$AppVersionCopyWith<$Res> get version
が追加され、version
プロパティに対する深いコピーが可能になりました。これは適切な実装であり、問題ありません。
150-151
:version
プロパティのコピーサポート追加
$AppVersionCopyWith<$Res> get version;
が__$$AppConfigImplCopyWithImpl
に追加され、深いコピーが可能になりました。問題ありません。
237-237
:version
フィールドの型変更を確認
_$AppConfigImpl
クラス内のversion
フィールドの型がAppVersion
に変更されています。クラス内での使用に問題はありません。
189-189
:_$AppConfigImpl
コンストラクタのversion
パラメータ型変更
_$AppConfigImpl
のコンストラクタでversion
の型がAppVersion
に変更されています。インスタンス生成時に適切な型の値を渡しているか確認してください。以下のスクリプトで、
_$AppConfigImpl
のインスタンス化箇所を確認できます。#!/bin/bash # 説明: '_$AppConfigImpl' のインスタンス生成箇所を検索 # テスト: '_$AppConfigImpl' の使用箇所を検索 rg --type dart '_\$AppConfigImpl\('
317-317
:version
プロパティの型変更に伴う影響を再確認してください
_AppConfig
クラスのversion
プロパティの型がAppVersion
に変更されています。既存のコードとの互換性に問題がないか、最終確認をお願いします。再度、以下のスクリプトを実行して全体的な使用箇所を確認してください。
#!/bin/bash # 説明: 'version' プロパティの全使用箇所を検索 # テスト: 'version' プロパティの使用箇所を検索 rg --type dart '\.version'
21-21
: 'version' プロパティの型変更による影響を確認してください'version' プロパティの型が
String
からAppVersion
に変更されています。この変更により、既存のコードで型の不一致やコンパイルエラーが発生する可能性があります。コード全体でversion
プロパティの使用箇所を確認し、必要に応じて修正をお願いします。以下のスクリプトを実行して、
AppConfig
のversion
プロパティがどのように使用されているか確認できます。✅ Verification successful
AppConfig.version
の使用箇所がコードベース内に存在しないことを確認しました。このため、String
からAppVersion
への型変更は問題ありません。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 説明: 'AppConfig.version' の使用箇所を検索し、周辺のコードを表示します。 # テスト: 'AppConfig.version' の使用箇所を検索 rg --type dart -A 3 -B 3 'AppConfig.*\.version'Length of output: 290
Script:
#!/bin/bash # 説明: 'AppConfig.version' の使用箇所を再検索し、周辺のコードを表示します。 # 修正: 引用符のエスケープを正しく行い、検索パターンを明確にします rg --type dart 'AppConfig\.version' -A 3 -B 3Length of output: 47
92-92
:copyWith
内のversion
の型キャスト変更を確認
copyWith
メソッド内でversion
がAppVersion
型にキャストされています。これにより、型安全性が保たれます。copyWith
を使用する箇所で問題がないか確認してください。以下のスクリプトで、
copyWith
メソッドを使用している箇所を再度確認できます。✅ Verification successful
copyWith
メソッド内のversion
の型キャスト変更は正しく実装されています。型安全性が確保されており、問題は見当たりません。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 説明: 'copyWith' メソッドの使用箇所を検索 # テスト: 'copyWith' メソッドの使用箇所を検索 rg --type dart '\.copyWith\('Length of output: 290
Script:
#!/bin/bash # 説明: 'copyWith' メソッドの使用箇所を再度検索し、'AppVersion' へのキャストを確認 # 'copyWith' メソッドの使用箇所を検索 rg --type dart '\.copyWith\(' # 'AppVersion' へのキャストが行われている箇所を検索 rg --type dart 'as\s+AppVersion'Length of output: 2553
44-44
:copyWith
メソッドのversion
パラメータの型変更に注意
$AppConfigCopyWith
のversion
パラメータの型がString
からAppVersion
に変更されています。copyWith
メソッドを使用している箇所で、version
に渡す引数の型が適切であることを確認してください。以下のスクリプトで、
copyWith
メソッドのversion
パラメータ使用箇所を確認できます。✅ Verification successful
copyWith
メソッドのversion
パラメータの型変更を確認しました。問題ありません。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 説明: 'copyWith' メソッドで 'version' パラメータを使用している箇所を検索 # テスト: 'copyWith' メソッドの 'version' パラメータ使用箇所を検索 rg --type dart -A 3 -B 3 '\.copyWith\(\s*version:'Length of output: 290
Script:
#!/bin/bash # 説明: 'copyWith' メソッドで 'version' パラメータを使用している箇所を検索 rg --type dart '\.copyWith\(\s*version\s*:'Length of output: 156
Script:
#!/bin/bash # 説明: 生成ファイルを除外して、'copyWith' メソッドで 'version' パラメータを使用している箇所を検索 rg --type dart '\.copyWith\(\s*version\s*:' --glob '!*.freezed.dart'Length of output: 70
142-149
:_$$AppConfigImplCopyWith
のversion
パラメータの型変更を確認
_$$AppConfigImplCopyWith
のversion
パラメータの型がString
からAppVersion
に変更されています。これにより、コピー生成時の型安全性が向上します。関連する使用箇所を確認してください。以下のスクリプトで、
_$$AppConfigImplCopyWith
の使用箇所を確認できます。✅ Verification successful
_$$AppConfigImplCopyWith
のversion
パラメータの型変更は正しく反映されていますシェルスクリプトの実行結果から、
version
パラメータがString
型として使用されている箇所は見つかりませんでした。これにより、AppVersion
への型変更が正しく適用され、型安全性が向上していることが確認されました。🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # 説明: '_$$AppConfigImplCopyWith' の使用箇所を検索 # テスト: '_$$AppConfigImplCopyWith' の使用箇所を検索 rg --type dart '_\$\$AppConfigImplCopyWith'Length of output: 290
Script:
#!/bin/bash # 説明: '_$$AppConfigImplCopyWith' の使用箇所を再検索(シンタックスエラー修正) rg --type dart '_\$\$AppConfigImplCopyWith'Length of output: 935
Script:
#!/bin/bash # 説明: '_$$AppConfigImplCopyWith' の使用箇所で 'version' パラメータが 'String' 型として使用されているかを確認 rg --type dart '_\$\$AppConfigImplCopyWith' -A5 | rg 'version\s*:\s*String'Length of output: 77
304-304
:_AppConfig
ファクトリコンストラクタのversion
パラメータ型変更
_AppConfig
のファクトリコンストラクタでversion
の型がAppVersion
に変更されています。オブジェクト生成時に適切な型が使用されているか確認してください。以下のスクリプトで、
_AppConfig
のインスタンス生成箇所を確認できます。
force: AppVersion.parse(updateVersions['force'] as String), | ||
optional: AppVersion.parse(updateVersions['optional'] as String), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Codebase verification
AppVersion.parse
メソッドにエラーハンドリングが存在しません。
AppVersion.parse
メソッド内でバージョン文字列のパース時にエラーハンドリングが実装されていないようです。無効な文字列が渡された場合に適切に対処するために、try-catch
ブロックやエラーチェックを追加することを検討してください。
- ファイル:
core/model/lib/src/config/app_version.dart
- メソッド:
AppVersion.parse
🔗 Analysis chain
アプリケーションバージョンモデルの導入を承認します。
この変更は、文字列バージョンをAppVersion
オブジェクトに変換することで、型安全性を向上させています。これはPRの目的であるアプリケーションバージョンモデルの追加に合致しています。
以下の点を確認するために、次のスクリプトを実行してください:
改善の提案:
AppVersion.parse
メソッドが失敗した場合のエラーハンドリングを検討してください。- Firebase Remote Configから取得した文字列が
AppVersion.parse
メソッドで期待される形式であることを確認してください。
これらの改善により、コードの堅牢性がさらに向上します。
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# AppVersion クラスの実装を確認し、parse メソッドのエラーハンドリングを検証します。
# AppVersion クラスの定義を検索
ast-grep --lang dart --pattern 'class AppVersion {
$$$
static AppVersion parse($_) {
$$$
}
$$$
}'
# parse メソッドの使用箇所を検索
rg --type dart 'AppVersion\.parse'
Length of output: 559
Script:
#!/bin/bash
# AppVersion.parse メソッド内のエラーハンドリングを確認します。
# AppVersion.parse メソッドの実装を取得
ast-grep --lang dart --pattern 'class AppVersion {
$$$
static AppVersion parse($_) {
$$$
}
$$$
}' core/model/lib/src/config/app_version.dart
Length of output: 154
Script:
#!/bin/bash
# AppVersion.parse メソッド内のエラーハンドリングを確認します。より柔軟なパターンを使用します。
# AppVersion クラスの定義全体を取得
ast-grep --lang dart --pattern 'class AppVersion { $$$ }' core/model/lib/src/config/app_version.dart
# AppVersion.parse メソッド内でのエラーハンドリング関連キーワードを検索
rg --type dart 'AppVersion\.parse.*\btry\b|\bcatch\b|\bthrow\b' core/model/lib/src/config/app_version.dart
Length of output: 211
factory AppVersion.parse(String version) { | ||
final versionList = version.split('.').map(int.parse).toList(); | ||
return AppVersion( | ||
major: versionList[0], | ||
minor: versionList[1], | ||
patch: versionList[2], | ||
); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
AppVersion.parse()
メソッドでの入力値の検証を追加してください
現在の parse
メソッドでは、入力されたバージョン文字列が正しい形式でない場合、例外が発生する可能性があります。バージョン文字列が "1.2.3"
のような正しい形式であるかを確認し、不正な入力に対して適切なエラーハンドリングを行うことをお勧めします。
以下の差分を適用して、入力値の検証を強化できます:
factory AppVersion.parse(String version) {
+ final versionParts = version.split('.');
+ if (versionParts.length != 3) {
+ throw FormatException('バージョン文字列の形式が不正です。期待される形式: major.minor.patch');
+ }
+ final versionList = versionParts.map(int.parse).toList();
return AppVersion(
major: versionList[0],
minor: versionList[1],
patch: versionList[2],
);
}
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
factory AppVersion.parse(String version) { | |
final versionList = version.split('.').map(int.parse).toList(); | |
return AppVersion( | |
major: versionList[0], | |
minor: versionList[1], | |
patch: versionList[2], | |
); | |
} | |
factory AppVersion.parse(String version) { | |
final versionParts = version.split('.'); | |
if (versionParts.length != 3) { | |
throw FormatException('バージョン文字列の形式が不正です。期待される形式: major.minor.patch'); | |
} | |
final versionList = versionParts.map(int.parse).toList(); | |
return AppVersion( | |
major: versionList[0], | |
minor: versionList[1], | |
patch: versionList[2], | |
); | |
} |
Issue
概要
アプリバージョンのモデルを追加します。
レビュー観点
レビューレベル
レビュー優先度
参考リンク
スクリーンショット
Summary by CodeRabbit
新機能
AppVersion
型を使用してバージョン情報を処理。バグ修正
ドキュメント
app_version.dart
ファイルを追加し、アプリバージョンのデータモデルを定義。