Closed spadr closed 2 months ago
通知システムを実装し、データ取得処理の効率化を図りました。また、アプリケーション構造を改善し、保守性と拡張性を向上させました。
通知システムの実装 (features/notification)
NotificationModel
NotificationViewModel
NotificationView
flutter_local_notifications
providers.dart
notificationPluginProvider
notificationViewModelProvider
変更の意図: エラーや重要なイベントをユーザーに分かりやすく通知することで、アプリの使い勝手を向上させるため。
// features/notification/viewmodels/notification_viewmodel.dart (抜粋) Future<void> addNotification(NotificationModel notification) async { // ... 通知の追加処理 await _showLocalNotification(notification); // ローカル通知を表示 // ... } Future<void> _showLocalNotification(NotificationModel notification) async { // ... ローカル通知の設定と表示処理 }
Supabase データ取得エラー時の通知表示 (core/services/supabase_service.dart)
RealSupabaseService
fetchAllData()
変更の意図: データ取得エラー発生時にユーザーに迅速に通知し、問題解決を促すため。
// core/services/supabase_service.dart (抜粋) class RealSupabaseService implements SupabaseService { // ... @override Future<void> fetchAllData() async { try { // ... データ取得処理 } catch (e) { final errorNotification = NotificationModel( // ... エラー通知の内容設定 ); await _notificationViewModel.addNotification(errorNotification); // エラー通知を追加 } } }
アプリ初期化エラー時の通知表示 (features/initialization/views/initialization_view.dart)
InitializationView
_handleError()
変更の意図: アプリ初期化エラー発生時にユーザーに迅速に通知し、問題解決を促すため。
// features/initialization/views/initialization_view.dart (抜粋) Widget _handleError(BuildContext context, WidgetRef ref, Object error) { // ... WidgetsBinding.instance.addPostFrameCallback((_) async { await _recordErrorNotification(ref, error.toString()); // エラー通知を追加 // ... }); // ... }
通知システムを実装し、データ取得処理の効率化を図りました。また、アプリケーション構造を改善し、保守性と拡張性を向上させました。
変更の詳細
通知システムの実装 (features/notification)
NotificationModel
(features/notification/models/notification_model.dart) を定義し、通知のデータ構造を明確化しました。NotificationViewModel
(features/notification/viewmodels/notification_viewmodel.dart) を実装し、通知の追加、更新、削除、永続化、ローカル通知表示の機能を提供しました。NotificationView
(features/notification/views/notification_view.dart) を実装し、通知リストの表示、通知の削除、全通知削除の機能を提供しました。flutter_local_notifications
パッケージを導入しました。providers.dart
にnotificationPluginProvider
とnotificationViewModelProvider
を追加し、通知機能へのアクセスを提供しました。変更の意図: エラーや重要なイベントをユーザーに分かりやすく通知することで、アプリの使い勝手を向上させるため。
Supabase データ取得エラー時の通知表示 (core/services/supabase_service.dart)
RealSupabaseService
のfetchAllData()
において、データ取得エラーが発生した場合、NotificationViewModel
を使用してエラー通知を追加するようにしました。変更の意図: データ取得エラー発生時にユーザーに迅速に通知し、問題解決を促すため。
アプリ初期化エラー時の通知表示 (features/initialization/views/initialization_view.dart)
InitializationView
の_handleError()
において、初期化エラーが発生した場合、NotificationViewModel
を使用してエラー通知を追加するようにしました。変更の意図: アプリ初期化エラー発生時にユーザーに迅速に通知し、問題解決を促すため。