fix(sheets): size sheets to their content instead of 75% of the window
Sheets rendered at the host's maximum height regardless of content, so a one-item player queue or a two-track picker filled ~75% of a desktop window with empty space. BottomSheetPageScaffold now always lays out Column(mainAxisSize: .min) plus Flexible(child:), and each sheet body shrink-wraps its own scrollable. The scaffold's shrinkWrap flag is gone: its old true branch put the child on an unbounded axis, where an over-tall list overflowed instead of clamping and scrolling. Measured on a 1600x1000 window, the chapter sheet goes from 750px to 118px for one chapter and the two-column track sheet from 750px to 154px for one audio and one subtitle track, both still clamping at the cap. Add SheetSplitColumns for the three side-by-side sheet layouts. A bare VerticalDivider has no intrinsic height, so it inflated those rows to the cap on its own; the rule now paints from a Positioned.fill that cannot size the Stack. IntrinsicHeight is not an option because a Viewport has no intrinsics. Because sheets are bottom-anchored, a content-driven height moves the sheet's top edge and everything above the change point. Three surfaces opt out for that reason and say so at the call site: SubtitleSearchSheet and its language picker keep filling, since both refilter under an autofocused field; FiltersBottomSheet holds the outgoing page's height through its loading transient; and RatingBottomSheet no longer hides MAL/AniList rows asynchronously, which used to slide live rating controls down two rows several hundred ms after open. Wrap the shared StateMessageWidget at the filters sheet boundary rather than editing a widget with 33 filling call sites. The host gains an AnimatedSize keyed per sheet session so nested pushes ease while a replacing show adopts its own height, a 720px absolute height ceiling on desktop windows only, and a min(max(25%, 96px), 60%) drag-dismiss threshold so short sheets neither close on a nudge nor become undismissable. Add videoControls.noAudioDevicesAvailable so the audio output page shows a placeholder instead of a bare header while devices load.
This commit is contained in:
@@ -831,6 +831,7 @@ class _Translations$videoControls$bg extends Translations$videoControls$en {
|
||||
@override String get noChaptersAvailable => 'Няма налични глави';
|
||||
@override String get queue => 'Опашка';
|
||||
@override String get noQueueItems => 'Няма елементи в опашката';
|
||||
@override String get noAudioDevicesAvailable => 'Няма налични аудио устройства';
|
||||
@override String get searchSubtitles => 'Търсене на субтитри';
|
||||
@override String get language => 'Език';
|
||||
@override String get noSubtitlesFound => 'Не са намерени субтитри';
|
||||
@@ -3233,6 +3234,7 @@ extension on TranslationsBg {
|
||||
'videoControls.noChaptersAvailable' => 'Няма налични глави',
|
||||
'videoControls.queue' => 'Опашка',
|
||||
'videoControls.noQueueItems' => 'Няма елементи в опашката',
|
||||
'videoControls.noAudioDevicesAvailable' => 'Няма налични аудио устройства',
|
||||
'videoControls.searchSubtitles' => 'Търсене на субтитри',
|
||||
'videoControls.language' => 'Език',
|
||||
'videoControls.noSubtitlesFound' => 'Не са намерени субтитри',
|
||||
@@ -3618,9 +3620,9 @@ extension on TranslationsBg {
|
||||
'explore.badge.requested' => 'Заявен',
|
||||
'explore.badge.pendingApproval' => 'В очакване на одобрение',
|
||||
'explore.badge.processing' => 'Обработва се',
|
||||
'explore.badge.declined' => 'Отхвърлен',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'explore.badge.declined' => 'Отхвърлен',
|
||||
'explore.badge.requestFailed' => 'Заявката се провали',
|
||||
'explore.badge.requested4k' => 'Заявен в 4K',
|
||||
'explore.badge.seasonsAvailable' => ({required Object available, required Object total}) => '${available}/${total} сезона',
|
||||
@@ -4132,9 +4134,9 @@ extension on TranslationsBg {
|
||||
'performanceOverlay.dropped' => 'Пропуснати кадри',
|
||||
'performanceOverlay.dvRpus' => 'DV RPU',
|
||||
'performanceOverlay.dvRpuAverage' => 'Средно DV RPU',
|
||||
'performanceOverlay.dvSampleAverage' => 'Средно DV семпл',
|
||||
_ => null,
|
||||
} ?? switch (path) {
|
||||
'performanceOverlay.dvSampleAverage' => 'Средно DV семпл',
|
||||
'performanceOverlay.maxLuma' => 'Макс. яркост',
|
||||
'performanceOverlay.minLuma' => 'Мин. яркост',
|
||||
'performanceOverlay.maxCll' => 'MaxCLL',
|
||||
|
||||
Reference in New Issue
Block a user