Settings Screen
SettingsScreen — a grouped settings screen with theme picker, account actions, privacy
toggles, language, and an About section. Composed from the
settings row components. Also includes the Play-mandatory
delete account flow.
/docs/screens/settings-light.png/docs/screens/settings-dark.pngfeature/settings/SettingsScreen.kt
Built from settings rows
The screen is assembled from reusable rows in …designsystem.settings — reuse them to add
your own sections:
SettingsSection(title = "Preferences") {
ToggleRow(title = "Analytics", checked = analytics, onCheckedChange = ::setAnalytics)
NavRow(title = "Language", value = currentLocale, onClick = ::pickLanguage)
}
SettingsSection(title = "Account") {
AccountRow(name = user.name, email = user.email, onClick = ::openProfile)
DangerRow(title = "Delete account", onClick = ::confirmDelete)
}
LegalLinks(onPrivacy = ::openPrivacy, onTerms = ::openTerms)
Available rows — SettingsSection, ToggleRow, NavRow, AccountRow, DangerRow,
LegalLinks, SettingsDivider.
Features
- Theme picker (light / dark / system) via a bottom sheet
- Account section gated by
AUTH_ENABLED— no sign-out/delete on a no-login app - Delete account + data — removes the auth account, DataStore, and Room (Play-mandatory)
- Language row auto-hides when the app ships a single locale
- Rate opens your Play listing; Privacy / Terms open in Custom Tabs
- About → What's new (Changelog) + Open-source licenses
Notes
Legal links read KitConfig.PRIVACY_URL / TERMS_URL. Generate the privacy policy itself
with /kit-generate-legal. The licenses list is powered by AboutLibraries (scans your full
dependency tree at build time).
Deep dive: Features · privacy:
/kit-generate-legal