Fix issues#1
Merged
Merged
Conversation
- Add AppLogger utility (debug prints info/warn/error with tag; errors always printed, info/warn only in debug builds) - Wrap _save() in try/catch — on failure: resets _isSaving, reverses button animation, shows red snackbar with the actual error message - Add mounted checks before every setState/Navigator call after awaits - Log transaction save attempts and results in TransactionNotifier - Log settings update failures in SettingsNotifier - Both notifiers rethrow so the UI catch block receives the error - Error snackbar is floating, red, rounded, with an error icon Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Root cause: notification toggle saved the preference but no code ever
scheduled or delivered a notification.
Changes:
- NotificationService singleton (lib/core/services/notification_service.dart)
· Initializes FlutterLocalNotificationsPlugin with ic_launcher icon
· Initializes timezone data (timezone package)
· requestPermission() — POST_NOTIFICATIONS via permission_handler
· scheduleDailyReminder(hour, minute) — exact daily zonedSchedule with
DateTimeComponents.time so it repeats every day; if time already
passed today it schedules for tomorrow
· cancelDailyReminder() / cancelAll()
· All ops wrapped in try/catch with AppLogger.e on failure
- main.dart: init NotificationService on startup; reschedule reminder if
it was previously enabled (survives app restart / reboot)
- settings_screen.dart:
· Notification toggle → _toggleNotification(): requests permission,
saves setting, schedules/cancels, shows confirmation snackbar
· Time picker → _pickTime(): saves new time and reschedules if enabled
- AndroidManifest.xml:
· Added SCHEDULE_EXACT_ALARM + USE_EXACT_ALARM permissions
· Added ScheduledNotificationBootReceiver (reschedules after reboot)
· Added ScheduledNotificationReceiver (delivers alarms)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Analytics week tab now uses rolling last 7 days instead of current Mon–Sun calendar week, fixing 0 values when transactions predate this Monday - Dashboard light mode gets a tinted accent gradient header wrapping the greeting + balance card, eliminating the blank top area - Onboarding back button added (shows on pages 2 & 3) - Onboarding name page uses SingleChildScrollView so keyboard no longer overlaps the input field Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Cast List? instead of List to avoid runtime null errors when reading older Hive records that may have missing list fields. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add flutter_timezone package to resolve the correct local timezone at runtime so zonedSchedule fires at the right local time on all devices/regions - Upgrade notification priority to max and add fullScreenIntent, category: reminder, and public visibility for better delivery on Android 13+ and aggressive battery-saving ROMs (OnePlus, Xiaomi, etc.) - Switch to inexactAllowWhileIdle for broader Android compatibility - Add USE_FULL_SCREEN_INTENT permission to AndroidManifest Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Auto-generated files updated after adding flutter_timezone dependency. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CHANGELOG: add v1.1.0 entry covering all fixes (analytics week tab, light mode header, onboarding UX, notification reliability, Hive null-safety) - README: add flutter_timezone to tech stack, USE_FULL_SCREEN_INTENT to permissions table, and architecture notes for timezone scheduling and rolling week window - docs/index.html: bump softwareVersion to 1.1.0, add flutter_timezone badge, update analytics feature description - pubspec.yaml: bump version to 1.1.0+2 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Type of Change
Related Issue
Closes #
Testing
flutter analyzepasses with no issuesScreenshots (if UI changes)
Checklist
.env) committedtype: short descriptionformat