SKILL.md
Scrcpy option UI builder
Working directory: [/lib/presentation/scrcpyconfig/](/lib/presentation/scrcpyconfig/)
UI option screens are present in @lib/presentation/scrcpy_config.
Common, re-usable widgets are present in @lib/presentation/scrcpy_config/widgets.
Steps
- Gather information
- Extend or create UI code in the
<category_screen>.dartfile - Create necessary translations for the the UI Control
1. Gather information
- Refer to [/docs/scrcpyoptions](/docs/scrcpyoptions) to find information about the scrcpy option (Argument, name,
description, is advanced).
- Find the corresponding argument class
in [/lib/application/model/scrcpy/arguments/](/lib/application/model/scrcpy/arguments/)
- If the argument class doesn't exist, first create it
using [this skill](/.claude/skills/scrcpy-cli-argument-to-code-mapper)
- Use this argument class in the UI code to get existing value and to update it.
2. Create <category_screen>.dart
- Refer to [/lib/presentation/scrcpyconfig/videoscreen.dart](/lib/presentation/scrcpyconfig/video/videoscreen.dart)
- Create a similar scrollable screen with necessary dependencies for the new category screen.
- Create a new route inside [routes.dart](/lib/routes.dart)
- Introduce new
NavigationPaneIteminside [homescreen.dart](/lib/presentation/home/homescreen.dart) using the new route - Follow the next section to extend the screen code with UI controls.
2. Extend existing UI Code
- If the
<category_screen>.dartfile for requested scrcpy option and the respective category already exists, then
extend the Scrollable Column, with the new control(s) - Use [/lib/presentation/scrcpyconfig/widgets/configitem.dart](/lib/presentation/scrcpyconfig/widgets/configitem.dart) for wrapping the actual UI control.
- The
ConfigItemwidget expects:
label(key and translation label) to show title, description and argument tooltip.childthe actual control widget (toggle/switch/text input/comboBox/etc.)
- Use [
ConfigTextBox](/lib/presentation/scrcpyconfig/widgets/configtext_box.dart) for text input controls
3. Create translations
- Currently, the project only supports english language.
- The translation file is present [here](/assets/i18n/en.json)
- Refer to the existing translations under this path inside the JSON: e.g.
confg/video/noVideo - Expected path:
config/<category>/<argument.label> - Required translations:
title,description,arg - Optional:
default(default value for the control e.g. for comboBox)