目次
Google Cloud Consoleの設定
- Calendar API有効化
- OAuth同意画面設定完了
- スコープ追加完了(…/auth/calendar)
- テストユーザー追加完了
- iOS用OAuthクライアントID作成完了
- Android用OAuthクライアントID作成完了
Flutterアプリ側の実装
レッスン登録・削除時にGoogleカレンダーへ自動同期する機能を実装
- パッケージ追加・設定
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>
- Google認証サービスの実装
・Googleアカウントへのサインイン/サインアウト
・認証状態の管理 - Googleカレンダー連携サービスの実装
・カレンダーイベントの作成・更新・削除
・Calendar API操作 - レッスン登録・削除時の同期処理追加
・レッスンデータとカレンダーイベントの紐付け
カレンダー連携ON/OFF切り替え - 連携状態の表示自動同期処理
- 設定画面にカレンダー連携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回)
おまけ:金額の入力フイールドをいつの間にか消していた!
なにか作業の時に「金額」の入力フイールドをいつの間にか削除していたことに気が付く!
顔が青ざめる😨
これでは月謝袋の意味ない・・


