株式会社スタンプ
沖縄のPHP専門WEBプログラム開発会社
・WEBプログラム開発(PHP+MySQL)
・ホームページ制作
・WEBサーバ管理
・技術者派遣
Flutter 構成は下記の通り
-
1.Reverpodを使った状態管理
アプリ全体の状態管理には、公式で推奨されている Riverpod を採用しています。
グローバルな状態や非同期処理、ロジックの共通化などを、安全かつ予測可能に構築できるため、大規模アプリにも適した構成が可能です。
Providerのスコープ管理により、必要最小限の再構築でパフォーマンスにも配慮しています。 -
2.API通信はスマホ、web用通信を切替
Flutterは単一のコードベースで複数のプラットフォームに対応できますが、通信方式には環境ごとの最適化が必要です。
当構成では、Webとモバイルで自動的に通信方法やヘッダー設定を切り替える仕組みを取り入れ、認証やセキュリティ要件を柔軟に制御しています。
たとえば、CORS対策やセッション管理の違いに対応し、より現実的な実装が可能です。 -
3.スマホはセキュアストレージ
モバイルアプリでは、セキュリティを最優先に設計し、認証トークンやユーザ情報は FlutterSecureStorage にて暗号化して保存しています。
生のトークンを扱うリスクを抑えつつ、セッション維持や自動ログインにも対応。
不正アクセスやリバースエンジニアリングにも強い安全設計を採用しています。 -
4.WebはSharedPreferences
Webアプリでは、セッション情報や軽量な状態は SharedPreferences(またはWeb Storage) を活用してブラウザ側に保持。
セキュリティと利便性のバランスを取りながら、Cookieベースの認証やトークン管理とも連携可能です。
環境に応じてローカル・セッションストレージの切り替えにも対応しています。 -
5.Reverpodで依存性注入
依存関係の注入と管理にもRiverpodを活用し、機能の再利用性・保守性・テスト容易性を確保しています。
たとえば、リポジトリやAPIクライアントなどはProviderとして登録され、必要な場所にだけ注入できる設計に。
これにより、テスト環境の差し替えやモック対応もスムーズに行えます。
プロジェクトの構成は下記の通り
- プロジェクト
- main.dart
- api
- auth_api
- auth_api.dart
- auth_api_impl.dart
- client
- api_client.dart
- api_client_impl.dart
- api_client_web_impl.dart
- create_api_client.dart
- contact_form_api
- contact_form_api.dart
- contact_form_api_impl.dart
- master_data_api
- master_data_api.dart
- master_data_api_impl.dart
- auth_api
- component
- contact_form
- contact_confirm.dart
- contact_finish.dart
- contact_form_input.dart
- menu
- user_menu.dart
- contact_form
- const
- api_const.dart
- model
- api_response.dart
- auth_state.dart
- user.dart
- contact_form
- contact_form_data.dart
- contact_form_data.freezed.dart
- contact_form_data.g.dart
- master_data
- master_data.dart
- master_data.freezed.dart
- master_data.g.dart
- provider
- auth_provider
- auth_async_notifier.dart
- auth_async_notifier_impl.bk
- auth_async_notifier_impl.dart
- auth_provider.dart
- contact_form_provider
- contact_form_async_notifier.dart
- contact_form_async_notifier_impl.dart
- contact_form_provider.dart
- di
- api_di
- api_client_provider.dart
- auth_api_provider.dart
- contact_form_api_provider.dart
- master_data_api_provider.dart
- repository_di
- auth_repository_provider.dart
- contact_form_repository_provider.dart
- master_repository_provider.dart
- storage_di
- flutter_secure_storage_provider.dart
- shared_preferences_storage_provider.dart
- view_model_di
- contact_form_view_model_provider.dart
- login_view_model_provider.dart
- api_di
- auth_provider
- repository
- auth_repository
- auth_repository.dart
- auth_repository_impl.dart
- contact_form_repository
- contact_form_repository.dart
- contact_form_repository_impl.dart
- master_data_repository
- master_data_repository.dart
- master_data_repository_impl.dart
- auth_repository
- router
- router.dart
- screen
- contact_form_screen.dart
- index_screen.dart
- login_screen.dart
- user
- user_dash_board.dart
- storage
- mobile_storage.dart
- storage.dart
- web_storage.dart
- util
- platform_util.dart
- view_model
- contact_form
- contact_form_view_model.dart
- contact_form_view_model_impl.dart
- login
- login_view_model.dart
- login_view_model_impl.dart
- contact_form
Flutterでもサイトはこちらより確認できます
アカウントは空の状態で認証できるようにしてますので、そのままログインボタンを押してください
デモサイトはこちらより