101 lines
2.8 KiB
Markdown
101 lines
2.8 KiB
Markdown
---
|
|
icon: material/keyboard
|
|
---
|
|
|
|
#### Debug Drawer
|
|
|
|
```kotlin
|
|
// wrap your app content inside the drawer like following
|
|
val drawerState = rememberDebugDrawerState()
|
|
ComposeAppTheme {
|
|
DebugDrawer(
|
|
enabled = BuildConfig.DEBUG, // if disabled the drawer will not be created at all, in this case inside a release build...
|
|
drawerState = drawerState,
|
|
drawerContent = {
|
|
// drawer content
|
|
},
|
|
content = {
|
|
// your wrapped app content
|
|
}
|
|
)
|
|
}
|
|
```
|
|
|
|
#### Example Drawer Content
|
|
|
|
```kotlin
|
|
@Composable
|
|
private fun Drawer(drawerState: DebugDrawerState) {
|
|
DebugDrawerBuildInfos(drawerState)
|
|
DebugDrawerActions(drawerState)
|
|
DebugDrawerDeviceInfos(drawerState)
|
|
|
|
// lumberjack module for logs
|
|
DebugDrawerLumberjack(
|
|
drawerState = drawerState,
|
|
setup = DemoLogging.fileLoggingSetup,
|
|
mailReceiver = "feedback@gmail.com"
|
|
)
|
|
|
|
// kotpreferences module for delegate based preferences (another library of mine)
|
|
DebugDrawerRegion(
|
|
image = { Icon(Icons.Default.ColorLens, null) },
|
|
label = "Demo Preferences",
|
|
drawerState = drawerState
|
|
) {
|
|
DebugDrawerDivider(info = "Boolean")
|
|
DebugDrawerSettingCheckbox(setting = DemoPrefs.devBoolean1)
|
|
DebugDrawerSettingCheckbox(setting = DemoPrefs.devBoolean2)
|
|
DebugDrawerDivider(info = "Enum")
|
|
DebugDrawerSettingDropdown(setting = DemoPrefs.devStyle,items = DemoPrefs.UIStyle.values())
|
|
}
|
|
|
|
// manual checkboxes, dropdowns, infos
|
|
DebugDrawerRegion(
|
|
image = { Icon(Icons.Default.Info, null) },
|
|
label = "Manual",
|
|
drawerState = drawerState
|
|
) {
|
|
// Checkbox
|
|
var test1 by remember { mutableStateOf(false) }
|
|
DebugDrawerCheckbox(
|
|
label = "Checkbox",
|
|
description = "Some debug flag",
|
|
checked = test1
|
|
) {
|
|
test1 = it
|
|
}
|
|
|
|
// Button
|
|
DebugDrawerButton(
|
|
image = { Icon(Icons.Default.BugReport, null) },
|
|
label = "Button (Filled)"
|
|
) {
|
|
// on click
|
|
}
|
|
|
|
// Dropdown
|
|
val items = listOf("Entry 1", "Entry 2", "Entry 3")
|
|
var selected by remember { mutableStateOf(items[0]) }
|
|
DebugDrawerDropdown(
|
|
modifier = modifier,
|
|
label = "Items",
|
|
selected = selected,
|
|
items = items
|
|
) {
|
|
selected = it
|
|
}
|
|
|
|
// Sectioned Button
|
|
val items2 = listOf("L1", "L2", "L3")
|
|
val level = remember { mutableStateOf(items2[0]) }
|
|
DebugDrawerSegmentedButtons(
|
|
selected = level,
|
|
items = items2
|
|
)
|
|
|
|
// Info
|
|
DebugDrawerInfo(title = "Custom Info", info = "Value of custom info...")
|
|
}
|
|
}
|
|
``` |