fix(collections): TV rail titles are labels, not controls - #290
Merged
ghbarker merged 1 commit intoSep 8, 2026
Merged
Conversation
A collection folder rail's header was pressable on TV — SELECT opened the list's full catalog browse — but no Home board row works that way; a row's name there is a plain label. Made RailHeaderFocus.onPressed nullable and pass null on TV, so the header stays a DPAD stop (still walks up to the rail above / down into its cards) but does nothing on SELECT or tap. Off TV, the tap-to-browse affordance a list title has always had is unchanged. Added a regression test that fails to compile against the pre-fix code (onPressed was required, non-nullable) and passes after, covering both the TV (inert) and off-TV (still opens) cases, plus a unit test on RailHeaderFocus itself pinning that a null onPressed makes SELECT and tap no-ops while the DPAD ladder keeps working.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
RailHeaderFocus.onPressednullable and passnullon TV, so the header stays a DPAD stop (still walks up to the rail above / down into its cards) but does nothing on SELECT or tap. Off TV, the tap-to-browse affordance a list title has always had is unchanged.Test plan
onPressedwas required, non-nullable), passes after; covers both the TV (inert) and off-TV (still opens) casesRailHeaderFocuspinning that a nullonPressedmakes SELECT/tap no-ops while the DPAD ladder keeps workingrail_header_focus_test.dart/collection_folder_screen_test.dart/board_shelf_row_test.dartall still passflutter analyzeclean on changed files