Dart Flutter Patterns

作者 affaan-mef648e01899b無授權條款275K 個星標收錄於 2026年10月8日更新於 2026年10月8日儲存庫3 天前更新

本番環境対応のDartおよびFlutterパターンは、null安全性、不変状態、非同期構成、ウィジェットアーキテクチャ、人気のある状態管理フレームワーク(BLoC、Riverpod、Provider)、GoRouterナビゲーション、Dioネットワーキング、Freezedコード生成、クリーンアーキテクチャをカバー。

AI 產生的概覽

提供可用於正式環境的 Dart 與 Flutter 程式碼模式,涵蓋狀態管理、導覽、網路與測試。

功能
依關注點整理,提供可直接複製使用的 Dart 與 Flutter 模式,涵蓋空值安全、不可變狀態、非同步組合、Widget 架構、狀態管理(BLoC、Riverpod、Provider)、GoRouter 導覽、Dio 網路、錯誤處理與測試。內容包含範例程式碼片段,例如密封的非同步狀態類別,以及帶有反應式驗證重新導向的 GoRouter。它僅為說明性參考,不含指令碼。
適用情境
適用於開始新的 Flutter 功能開發、需要狀態管理、導覽或資料存取的慣用模式時。也適合審查或撰寫 Dart 程式碼、建置 Flutter 專案、實作 HTTP 用戶端或本機儲存、撰寫 Widget 或 Cubit 測試,以及為 GoRouter 接上驗證守衛。
執行需求
除代理外不需要任何工具、套件或憑證;不附帶指令碼,僅提供指引與程式碼模式。

Dart/Flutterパターン

使用時期

次の場合にこのスキルを使用:

  • 新しいFlutter機能を開始し、状態管理、ナビゲーション、またはデータアクセスのイディオマティックパターンが必要
  • Dartコードのレビューまたは作成とnull安全性、シール型、非同期構成のガイダンスが必要
  • 新しいFlutterプロジェクトをセットアップしBLoC、Riverpod、またはProviderのうち選択
  • 安全なHTTPクライアント、WebView統合、ローカルストレージを実装
  • FlutterウィジェットEt、Cubit、またはRiverpodプロバイダーのテストを作成
  • GoRouterを認証ガードでワイヤリング

動作方法

このスキルは、懸念事項で整理されたコピーペーストの準備ができたDart/Flutterコードパターンを提供:

  1. Null安全性 — !を避ける、?./??/パターンマッチングを好む
  2. 不変状態 — シール型、freezed、copyWith
  3. 非同期構成 — 並行Future.wait、await後の安全なBuildContext
  4. ウィジェットアーキテクチャ — クラスに抽出(メソッドではなく)、const伝播、スコープ付きリビルド
  5. 状態管理 — BLoC/Cubityベント、Riverpodノーティファイアおよび派生プロバイダー
  6. ナビゲーション — refreshListenable経由の反応型認証ガード付きGoRouter
  7. ネットワーキング — インターセプタ付きDio、ワンタイム再試行ガード付きトークンリフレッシュ
  8. エラーハンドリング — グローバルキャプチャ、ErrorWidget.builder、crashlyticsワイヤリング
  9. テスト — ユニット(BLoC test)、ウィジェット(ProviderScopeオーバーライド)、モック上のフェイク

例

dart
// シール状態 — 不可能な状態を防止sealed class AsyncState<T> {}final class Loading<T> extends AsyncState<T> {}final class Success<T> extends AsyncState<T> { final T data; const Success(this.data); }final class Failure<T> extends AsyncState<T> { final Object error; const Failure(this.error); }
// 反応型認証リダイレクト付きGoRouterfinal router = GoRouter(  refreshListenable: GoRouterRefreshStream(authCubit.stream),  redirect: (context, state) {    final authed = context.read<AuthCubit>().state is AuthAuthenticated;    if (!authed && !state.matchedLocation.startsWith('/login')) return '/login';    return null;  },  routes: [...],);

詳細については、ドキュメントを参照してください。

來源與署名

來源:affaan-m/ecc位於docs/ja-JP/skills/dart-flutter-patterns提交ef648e0

授權條款: 無授權條款

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架