BowlerKitBowlerKit
Features

Settings

10/11/2026

Local preferences, Account synchronization, appearance, notifications, and security settings in Flutter.

Settings ownership

Flutter settings use Riverpod notifiers with SharedPreferences for local persistence. Account-only sync services are layered on top; Guest mode remains local-only through isGuestLocal guards.

Available preferences

  • Language — system, Indonesian (id), and English (en).
  • Region and timezone — persisted locally and synchronized for Account users.
  • Appearance — light/dark/system mode, theme style, accent color, text scale, and reduced motion.
  • Privacy — usage-data and personalized-experience toggles.
  • Notifications — push, queue/turn/reminder/booking alerts, promotions, tips, vibration, and sound settings. Account notification preference sync sends the supported promotions/tips values to Laravel/Go.
  • Onboarding — local completion state controls the first route.

Account-only settings

Authenticated users also see connected Google/Apple accounts, password change, active sessions, login history, account deletion, and billing/entitlement status. Account routes are not usable in Guest mode.

The biometric and two-factor switches are currently UI state toggles. They are not a native biometric gate or server-side 2FA implementation.

Adding a preference

  1. Add the field/default to the relevant Riverpod notifier (user_preferences_provider.dart or notification_provider.dart).
  2. Persist it through the existing SharedPreferences methods.
  3. If it is Account data, update the corresponding sync service and Laravel/Go contract.
  4. Guard every remote path with isGuestLocal.
  5. Add keys to lib/l10n/app_en.arb and app_id.arb, then regenerate localization.

Relevant files

  • pages/settings/
  • providers/user_preferences_provider.dart
  • providers/notification_provider.dart
  • providers/theme_provider.dart
  • providers/security_provider.dart
  • providers/sync/
  • lib/l10n/app_*.arb