feat: implement settings screen with reminders, biometrics, theme, and PDF export

- Daily reminder scheduling via flutter_local_notifications (inexact, repeating at chosen time)
- Biometric lock gate on app launch with auto-prompt and manual unlock button
- Theme mode selector (System/Light/Dark) persisted to settings DB
- PDF export of full mood history shared via share_plus
- Android: POST_NOTIFICATIONS, USE_BIOMETRIC permissions; switched to FlutterFragmentActivity
This commit is contained in:
2026-04-26 15:49:52 +10:00
parent ffb0b427b7
commit 78aa032c1b
14 changed files with 460 additions and 18 deletions
@@ -0,0 +1,23 @@
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../biometrics/biometric_service.dart';
final biometricAvailableProvider = FutureProvider<bool>(
(_) => BiometricService.isAvailable(),
);
class BiometricLockNotifier extends Notifier<bool> {
@override
bool build() => false;
Future<void> tryUnlock() async {
final success = await BiometricService.authenticate();
if (!ref.mounted) return;
if (success) state = true;
}
void lock() => state = false;
}
final biometricUnlockedProvider =
NotifierProvider<BiometricLockNotifier, bool>(BiometricLockNotifier.new);