diff --git a/lib/screens/libraries/alpha_jump_bar.dart b/lib/screens/libraries/alpha_jump_bar.dart index 6fa0dd49..1286d5f6 100644 --- a/lib/screens/libraries/alpha_jump_bar.dart +++ b/lib/screens/libraries/alpha_jump_bar.dart @@ -102,9 +102,10 @@ class _AlphaJumpBarState extends State { /// Find the nearest displayed letter at or before [letter] in the full list. String _nearestDisplayed(String letter) { + if (_displayed.isEmpty) return letter; if (_displayed.contains(letter)) return letter; final pos = _helper.letters.indexOf(letter); - if (pos < 0 && _displayed.isNotEmpty) return _displayed.first; + if (pos < 0) return _displayed.first; String result = _displayed.first; for (final dl in _displayed) { final dlPos = _helper.letters.indexOf(dl); @@ -132,6 +133,7 @@ class _AlphaJumpBarState extends State { /// Resolves a vertical drag position to a displayed-letter index. int _letterIndexFromDy(double dy, double totalHeight) { + if (_displayed.isEmpty) return 0; final index = (dy / totalHeight * _displayed.length).floor(); return index.clamp(0, _displayed.length - 1); } @@ -190,6 +192,8 @@ class _AlphaJumpBarState extends State { builder: (context, constraints) { _updateDisplayed(constraints.maxHeight); + if (_displayed.isEmpty) return const SizedBox.shrink(); + final currentLetter = _nearestDisplayed(widget.currentLetter); return GestureDetector( diff --git a/lib/widgets/download_tree_view.dart b/lib/widgets/download_tree_view.dart index 5e428df6..fe1f3139 100644 --- a/lib/widgets/download_tree_view.dart +++ b/lib/widgets/download_tree_view.dart @@ -240,6 +240,8 @@ class _DownloadTreeViewState extends State { ); } + seasons.removeWhere((s) => s.children.isEmpty); + // Sort seasons by season number seasons.sort((a, b) { final aSeasonNum = widget.metadata[a.children.first.key]?.parentIndex ?? 0;