fix(ci): exclude bin/ from root analyzer and clean remaining warnings

The frontend CI job ran `flutter analyze` from the repo root, which also
analyzed the bin/ server package without its dependencies resolved
(shelf_router, sqlite3, bcrypt, test), producing hundreds of
uri_does_not_exist errors. bin/ is a standalone package covered by the
backend job, so it is now excluded from root analysis.

Also:
- Remove all unused fields/variables flagged as analyzer warnings
  (api_client, cache_service, player_screen, subtitle_service,
  live_tv_tab, mobile screens)
- Run `flutter analyze --no-fatal-infos` in CI: pre-existing deprecation
  infos (withOpacity, dart:html) stay non-fatal while errors and warnings
  still fail the build

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
MichaelandClaude Fable 5 committed 2026-06-10 10:17:40 +02:00
1 parent 60d3f42901
commit 969d40dec5
10 files changed
+30 -20

No files matched your search

+1 -8
View File
@@ -54,14 +54,10 @@ class _PlayerScreenState extends ConsumerState<PlayerScreen> {
bool _isInitialized = false;
bool _isLoading = true;
StreamSubscription? _messageSubscription;
final String _aspectRatio = 'contain';
bool _isSeeking = false;
late final String _viewIdPrefix =
DateTime.now().millisecondsSinceEpoch.toString();
String _viewId = 'iptv-player';
String? _currentStreamUrl;
String _statusMessage = 'Loading...';
String? _errorMessage;
bool _isMuted = false;
bool _ignoreStatusUpdates = false;
@@ -104,7 +100,6 @@ class _PlayerScreenState extends ConsumerState<PlayerScreen> {
}) async {
setState(() {
_isLoading = true;
_statusMessage = 'Loading...';
});
try {
@@ -164,8 +159,6 @@ class _PlayerScreenState extends ConsumerState<PlayerScreen> {
service.isPlaybackLoading = false;
});
_currentStreamUrl = streamUrl;
final encodedUrl = Uri.encodeComponent(streamUrl);
// Force player choice based on stream type:
// - Live TV: Player Lite (simple TS playback with mpegts.js)
@@ -222,9 +215,9 @@ class _PlayerScreenState extends ConsumerState<PlayerScreen> {
});
}
} catch (e) {
print('[PlayerScreen] Failed to load stream: $e');
if (mounted) {
setState(() {
_errorMessage = 'Failed to load stream: $e';
_isLoading = false;
});
}
@@ -42,9 +42,6 @@ class SubtitleEntry {
/// Service for handling subtitles
class SubtitleService {
static const _srtPattern =
r'(\d+)\n(\d{2}):(\d{2}):(\d{2}),(\d{3}) --> (\d{2}):(\d{2}):(\d{2}),(\d{3})\n([\s\S]*?)(?=\n\n|\Z)';
/// Parse SRT subtitle content
static List<SubtitleEntry> parseSrt(String content) {
final entries = <SubtitleEntry>[];
@@ -26,7 +26,6 @@ class LiveTVTab extends ConsumerStatefulWidget {
class _LiveTVTabState extends ConsumerState<LiveTVTab>
with AutomaticKeepAliveClientMixin {
String? _selectedCategory;
final bool _isGridView = true;
final TextEditingController _searchController = TextEditingController();
bool _showFavoritesOnly = false;
String _searchQuery = '';