Epic: C
Depends on: TP-10
Source: docs/theme-parser-github-issues.md
Goal
Introduce a dedicated picker UI for many themes instead of overloading a small dropdown.
Files
lib/features/settings/theme_picker_button.dart
test/features/settings/theme_picker_button_test.dart
Implementation
Create widget:
class ThemePickerButton extends StatelessWidget {
const ThemePickerButton({
required this.themes,
required this.selectedThemeId,
required this.onSelected,
this.isLoading = false,
});
}
Use:
MenuAnchor;
- fixed/max popup height 300-360px;
Scrollbar;
ListView.builder;
- row shows:
- name;
- source badge;
- dark/light icon or label.
Acceptance Criteria
- Opens menu with 50+ fake themes without overflow.
- Uses builder list, not
Column(children: themes.map(...)).
- Does not parse or apply theme during build.
Tests
- pump with 60 definitions;
- open menu;
- visible rows render;
- no exception/overflow in test logs if test harness supports it;
- tap row triggers
onSelected(id).
Epic: C
Depends on: TP-10
Source:
docs/theme-parser-github-issues.mdGoal
Introduce a dedicated picker UI for many themes instead of overloading a small dropdown.
Files
lib/features/settings/theme_picker_button.darttest/features/settings/theme_picker_button_test.dartImplementation
Create widget:
Use:
MenuAnchor;Scrollbar;ListView.builder;Acceptance Criteria
Column(children: themes.map(...)).Tests
onSelected(id).