After Framework

はじめに

要件、兄弟チェックアウト、依存関係、コンポジションルート、Super App チェックリストについて説明します。

ドキュメントのバージョン: supercore main · パッケージ 1.0.0

要件このセクションへのリンク: 要件

すべてのパッケージは Dart SDK ^3.12.2 と Flutter >=3.27.0 を対象としています。パッケージは pub.dev には公開されておらず、プロダクトはパスで依存します。

兄弟チェックアウトこのセクションへのリンク: 兄弟チェックアウト

パス依存関係を解決できるよう、supercore をプロダクトリポジトリと同じ階層にクローンします。

text
HANTURAI/
  supercore/
  supergarage/         # consumer reference
  superhospital/       # enterprise reference
  superhealth/  superfinance/  superhome/  supertravel/  supersports/ …

ソース supercore/README.md (新しいタブで開きます)

依存関係の追加このセクションへのリンク: 依存関係の追加

コンシューマー向けプロダクト

pubspec.yaml
dependencies:
  after_core:
    path: ../supercore/packages/after_core
  after_consumer:
    path: ../supercore/packages/after_consumer
  after_design_system:
    path: ../supercore/packages/after_design_system

ソース supercore/README.md (新しいタブで開きます)

エンタープライズ向けプロダクト

pubspec.yaml
dependencies:
  after_core:
    path: ../supercore/packages/after_core
  after_enterprise:
    path: ../supercore/packages/after_enterprise
  after_design_system:
    path: ../supercore/packages/after_design_system

ソース supercore/README.md (新しいタブで開きます)

コンポジションルートこのセクションへのリンク: コンポジションルート

各プロダクトは 1 つのコンポジションルートでマニフェストを登録して標準のオーバーライドを返し、その上にプロダクトのアダプターを重ねます。

lib/app/platform/after_framework.dart
class SuperAppConsumerFramework {
  SuperAppConsumerFramework._();

  static Future<List<Override>> ensureConfigured() async {
    PlatformConfig.current = superAppConsumerManifest;
    final prefs = await SharedPreferences.getInstance();
    return AfterStandardOverrides.create(
      preferences: prefs,
      userAgent:
          '${superAppConsumerManifest.appName}/${superAppConsumerManifest.appId}',
    );
  }
}

ソース supercore/templates/super_app_consumer/after_framework.dart (新しいタブで開きます)

lib/app/platform/after_framework.dart
static Future<List<Override>> ensureConfigured({
  EnterpriseRepository? enterpriseRepository,
}) async {
  PlatformConfig.current = superAppEnterpriseManifest;
  final prefs = await SharedPreferences.getInstance();
  return [
    ...AfterStandardOverrides.create(
      preferences: prefs,
      userAgent: '${superAppEnterpriseManifest.appName}/'
          '${superAppEnterpriseManifest.appId}',
    ),
    enterpriseRepositoryProvider.overrideWithValue(
      enterpriseRepository ?? MockEnterpriseRepository(),
    ),
  ];
}

ソース supercore/templates/super_app_enterprise/after_framework.dart (新しいタブで開きます)

Super App チェックリストこのセクションへのリンク: Super App チェックリスト

必須

  • supercore の after_core と after_design_system に依存する
  • 一意の AppPlatformManifest:appId、packageName、ウィジェットプロバイダー、iOS アプリグループ
  • コンポジションルートを lib/app/platform/after_framework.dart に置く
  • runApp の前に PlatformConfig.current を設定する
  • 認証、分析、プッシュ通知、権限を After のポートの背後に置く
  • requireHttps: true を指定した HTTPS の Dio ポリシー
  • AfterThemeData によるテーマ
  • バーティカル機能は lib/features/ 配下にのみ置く
  • スモークテスト:マニフェストとオーバーライドが空でないこと
  • CI:フォーマット、静的解析、テスト

推奨

  • ストアフレーバー:play、dev、huawei
  • assets/l10n と文字列カタログ
  • AfterUserPlan と AfterPlanFeature に対応付けた権限マトリクス
  • Overstein の法務ハブにあるプライバシーポリシーと利用規約の URL