💬
DartとFlutterのベストプラクティス #3
この記事では、DartとFlutterのベストプラクティスについてすべてを共有します。振り返ってみると、このような知識の源があったらとても嬉しかっただろうなと思います。面白いことに、何か興味深いことを思い出すたびに頻繁に更新されています。
前回の記事はこちらで確認してください。
Business Loginc Component
ビジネスロジックをウィジェットから分離するデザインパターンで、単一の入力(イベント)と出力(状態)を持つ最終状態機械を使用します。
General tips
- BLoC間に依存関係を作らないでください。これにより、強い結合が生じます。どのBLoCも他のBLoCについて知るべきではありません。情報はイベントやリポジトリを通じてのみ受け取るべきです。
- BLoC内で公開フィールドやメソッドを作らないでください。これは、一貫性のある予測可能なフローを保つために必要です。通信はイベントと状態を通じてのみ行われるべきです。
- 状態はBLoCの現在の状態を示すべきです(アイドル、処理中、成功、エラー)。UIに関連する状態(例えば「ShowDialog」や「ShowSnackbar」)は含まれてはいけません。
- BLoCを一時的な状態の管理に使用しないでください(ページビュー内のページやアニメーションの値など)。これらはBLoCの関心事ではありません。
Bloc package
- Cubitの使用を避けてください – Cubitはイベントの順序を壊します。変換を設定できないため、代わりにBLoCを使用し、順次トランスフォーマーを使用してください。
- "on"コールバックを複数登録しないでください。これによりイベントの順序が壊れ、各"on"ハンドラーが独自のストリームを管理するため、一貫性のない状態が発生する可能性があります。
- デバッグ目的で必ずBlocObserverを設定してください。これにより、状態やイベントの遷移、BLoCとのすべての操作を理解するのに役立ちます。
- 状態の等価性を必ずオーバーライドしてください。BLoCは前回の状態と新しい状態を比較し、もしそれらが「等しい」と判断した場合、新しい状態について通知しません。
Discussion