# gifunavi A new Flutter project. ## Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is your first Flutter project: - [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) - [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) For help getting started with Flutter development, view the [online documentation](https://docs.flutter.dev/), which offers tutorials, samples, guidance on mobile development, and a full API reference. # 更新履歴 0. flutter_compass は pub.dev cache で 34 に変更。キャッシュをクリアしたら修正が必要。 1. 2024-8-17 ・新規にプロジェクトを作り直し。 ・ユーザー登録で13歳以上でないと登録できない様にした。 ・生年月日の選択カレンダーを導入。 ・エントリーカテゴリはメンバー構成によって自動修正できる様にした。(修正中) ・イベントの締め切りフィールドを追加し、この日以降のイベントの修正はできない様にした。   ・エントリーに参加し、ゴールしたら、イベントの修正はできない様にする。必然的にチーム構成を変更する際には、エントリーが終了していれば、変更ができない様にして、新規追加を促す。 2. #Server # API仕様変更案 ## 1. イベントAPI ### GET /api/events - 変更点: レスポンスに `deadline_datetime` フィールドを追加 - レスポンス例: ```json { "id": 1, "event_name": "サマーマラソン2024", "start_datetime": "2024-07-01T09:00:00Z", "end_datetime": "2024-07-01T17:00:00Z", "deadline_datetime": "2024-06-15T23:59:59Z" } ``` ### POST /api/events - 変更点: リクエストボディに `deadline_datetime` フィールドを追加 - リクエスト例: ```json { "event_name": "ウィンターラン2025", "start_datetime": "2025-01-15T08:00:00Z", "end_datetime": "2025-01-15T16:00:00Z", "deadline_datetime": "2025-01-01T23:59:59Z" } ``` ## 2. エントリーAPI ### PUT /api/entries/{id} - 変更点: 1. エントリー更新前にイベントの締め切り日時をチェック 2. 締め切りを過ぎている場合、400 Bad Requestを返す - エラーレスポンス例: ```json { "error": "entry_update_closed", "message": "エントリーの締め切りが過ぎているため、更新できません。", "deadline": "2024-06-15T23:59:59Z" } ``` ## 3. チームAPI ### GET /api/teams/{id}/entries - 新規エンドポイント: 指定されたチームの全エントリーを取得 - レスポンス例: ```json [ { "id": 1, "team_id": 5, "event": { "id": 1, "event_name": "サマーマラソン2024", "start_datetime": "2024-07-01T09:00:00Z", "end_datetime": "2024-07-01T17:00:00Z", "deadline_datetime": "2024-06-15T23:59:59Z" }, "category": { "id": 3, "category_name": "一般-5時間" }, "date": "2024-07-01T09:00:00Z", "zekken_number": "A-123" } ] ``` ### PUT /api/teams/{id} - 変更点: チーム更新時に関連するエントリーの締め切りをチェック - エラーレスポンス例: ```json { "error": "team_update_restricted", "message": "締め切りを過ぎたエントリーが存在するため、チームの更新が制限されています。", "closed_entries": [1, 2, 3] } ``` ## 4. 共通エラーレスポンス - すべてのエンドポイントで、より詳細なエラー情報を提供 - エラーレスポンス構造: { "error": "error_code", "message": "人間が読める詳細なエラーメッセージ", "details": { ## エラーに関する追加情報(オプション) } } ## 5. 認証・認可 - すべてのエンドポイントで適切な認証・認可チェックを実施 - 権限不足の場合は403 Forbiddenを返す マニュアル編集が必要な部分: 1. flutter_compass プラグインの build.gradle ファイルを直接編集します: ファイルパス: /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/flutter_compass-0.8.0/android/build.gradle このファイルを開き、jcenter() を mavenCentral() に置き換えます: $ ./gradlew clean $ ./gradlew clean build 2. image_gallery_saver の build.gradle ファイルを編集 /Volumes/PortableSSD1TB/main/flutter/.pub-cache/git/image_gallery_saver-24fd8207a4491c42ed907060bb5bf40c2430131f/android/build.gradle ファイル ext.kotlin_version = '1.8.22' #'1.7.10' $ ./gradlew clean $ ./gradlew clean build 3. qr_code_scanner の問題解決: /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/qr_code_scanner-[version]/android/build.gradle ext.kotlin_version = '1.8.22' //'1.7.10' 4. flutter_keyboard_visibility: vi /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/flutter_keyboard_visibility-6.0.0/android/build.gradle minSDK = 21 ,SDKversion=34 にする。 5. device_info_plus は使用不可 6. geolocator_android: vi /Volumes/PortableSSD1TB/main/flutter/.pub-cache/hosted/pub.dev/geolocator_android-4.6.1/android/build.gradle minSdkVersion 21 テスト用位置情報: 大垣駅: 35.36701369466119, 136.61783662683948 大垣城: 35.36182698266251, 136.61558088722234 関ケ原駅:35.36365422752628, 136.47061844402452