Googleカレンダー完全連携(定期レッスン対応)

目次

Google Cloud Consoleの設定

  • Calendar API有効化
  • OAuth同意画面設定完了
  • スコープ追加完了(…/auth/calendar)
  • テストユーザー追加完了
  • iOS用OAuthクライアントID作成完了
  • Android用OAuthクライアントID作成完了

Flutterアプリ側の実装

レッスン登録・削除時にGoogleカレンダーへ自動同期する機能を実装

  1. パッケージ追加・設定
    pubspec.yaml に必要なパッケージを追加
    iOS設定 (ios/Runner/Info.plist)の設定
    Google Cloud ConsoleでiOSクライアントIDの完全な文字列を取得
    「iOSクライアント1」をクリックして、完全なクライアントIDをコピー
    YOUR_IOS_CLIENT_IDの部分に貼り付け
<string>com.googleusercontent.apps.YOUR_IOS_CLIENT_ID</string>
  1. Google認証サービスの実装
    ・Googleアカウントへのサインイン/サインアウト
    ・認証状態の管理
  2. Googleカレンダー連携サービスの実装
    ・カレンダーイベントの作成・更新・削除
    ・Calendar API操作
  3. レッスン登録・削除時の同期処理追加
    ・レッスンデータとカレンダーイベントの紐付け
    カレンダー連携ON/OFF切り替え
  4. 連携状態の表示自動同期処理
  5. 設定画面にカレンダー連携ON/OFF追加
    ・カレンダー連携ON/OFF切り替え
    ・連携状態の表示

追加された機能

設定画面に追加された内容

📱 Googleアカウント接続

ワンタップで接続
接続中のアカウント表示

連携状態の可視化

連携中/未連携が一目でわかる
接続中のメールアドレス表示

既存レッスンの一括同期

まだ同期されていないレッスンをまとめて同期
進行状況表示

連携解除

カレンダーイベントも自動削除
確認ダイアログ付き

使い方ガイド

機能説明
自動同期の仕組み

定期レッスンの実装

レッスン時間のカスタマイズ

30分/45分/60分など選択可能に

必要な変更:

  • UIにドロップダウン追加(30分/45分/60分/90分)
  • FirestoreにlessonDurationフィールド追加
  • カレンダー同期時に選択された時間を使用

繰り返しレッスンの一括登録

毎週月曜日17:00など、定期レッスンの一括追加

必要な変更:

・UIに繰り返し設定画面を追加

曜日選択(月〜日)
開始日・終了日
時間

・ 複数レッスンの一括作成ロジック
・カレンダーイベントの一括同期

実用例

パターン1: 毎週のレッスン

週: 選択なし
曜日: 水曜
→ 毎週水曜日

パターン2: 月2回のレッスン

週: 第2週、第4週 ✓
曜日: 月曜
→ 毎月第2・第4月曜日

パターン3: 月3回のレッスン

週: 第1週、第2週、第3週 ✓
曜日: 金曜
→ 毎月第1・第2・第3金曜日

パターン4: 複雑なパターン

週: 第1週、第3週 ✓
曜日: 火曜、木曜 ✓
→ 毎月第1・第3週の火曜と木曜(月4回)

おまけ:金額の入力フイールドをいつの間にか消していた!

なにか作業の時に「金額」の入力フイールドをいつの間にか削除していたことに気が付く!
顔が青ざめる😨
これでは月謝袋の意味ない・・

復活前
復活後
目次