What is the problem?
In home-screen edit mode, _EditableWidget renders a checkbox beside the live home widget content but does not render the widget's explicit text label:
Row(
children: [
Checkbox.adaptive(...),
Expanded(
child: IgnorePointer(
child: child,
),
),
],
)
The live child therefore acts as the checkbox's only visual label. When that child returns SizedBox.shrink(), the editor displays a floating, unlabeled checkbox.
This happens for at least two widgets on current main:
- Performance Cards: the editor creates the row for an authenticated user, but
PerfCards returns SizedBox.shrink() when userPerfs.isEmpty.
- Recent Games: the editor always creates the row, but
RecentGamesWidget returns SizedBox.shrink() when data.isEmpty.
A brand-new account with no rated performances and no games therefore shows orphan checkboxes in the customization screen.
The labels already exist in HomeEditableWidget.label(context.l10n) for every editable home widget, including Performance Cards and Recent Games, but _EditableWidget does not display them.
Expected behavior: Every checkbox in home-screen edit mode has a stable textual label, regardless of whether its corresponding home widget currently has data.
Actual behavior: Performance Cards and Recent Games can render as unlabeled checkboxes for new or empty accounts.
Steps to reproduce the bug
- Sign in with a new account that has no rated performances and no games.
- Open the home screen's widget customization/edit mode.
- Observe the checkbox before Quick Pairing: Performance Cards has no visible label.
- Observe the checkbox below Blog: Recent Games has no visible label.
- Play rated games or create recent-game data and return to the editor; the live child content may appear, demonstrating that the checkbox label depends on data availability.
App version
0.26.6
Device Info
iPhone / iOS 27.0
Additional information
Related work:
PR #3612 addressed the same blank-checkbox symptom for Friends and Featured Tournaments by hiding those rows when their children have no content. It did not cover Performance Cards or Recent Games, which remain reproducible on current main.
More fundamentally, hiding empty rows keeps editor controls coupled to live content. A better fix is for _EditableWidget to render the existing explicit label from HomeEditableWidget.label(context.l10n), independently of the child widget's current data. This would keep customization options identifiable and available before a user has performance or game data.
Suggested result:
- Performance Cards
- Friends
- Quick Pairing
- Open Tournaments
- Blog
- Recent Games
Each label should remain visible beside its checkbox even when the corresponding home widget would currently render no content.
What is the problem?
In home-screen edit mode,
_EditableWidgetrenders a checkbox beside the live home widget content but does not render the widget's explicit text label:The live child therefore acts as the checkbox's only visual label. When that child returns
SizedBox.shrink(), the editor displays a floating, unlabeled checkbox.This happens for at least two widgets on current
main:PerfCardsreturnsSizedBox.shrink()whenuserPerfs.isEmpty.RecentGamesWidgetreturnsSizedBox.shrink()whendata.isEmpty.A brand-new account with no rated performances and no games therefore shows orphan checkboxes in the customization screen.
The labels already exist in
HomeEditableWidget.label(context.l10n)for every editable home widget, including Performance Cards and Recent Games, but_EditableWidgetdoes not display them.Expected behavior: Every checkbox in home-screen edit mode has a stable textual label, regardless of whether its corresponding home widget currently has data.
Actual behavior: Performance Cards and Recent Games can render as unlabeled checkboxes for new or empty accounts.
Steps to reproduce the bug
App version
0.26.6
Device Info
iPhone / iOS 27.0
Additional information
Related work:
PR #3612 addressed the same blank-checkbox symptom for Friends and Featured Tournaments by hiding those rows when their children have no content. It did not cover Performance Cards or Recent Games, which remain reproducible on current
main.More fundamentally, hiding empty rows keeps editor controls coupled to live content. A better fix is for
_EditableWidgetto render the existing explicit label fromHomeEditableWidget.label(context.l10n), independently of the child widget's current data. This would keep customization options identifiable and available before a user has performance or game data.Suggested result:
Each label should remain visible beside its checkbox even when the corresponding home widget would currently render no content.