mirror of
https://github.com/R0m1k3/xtremflow.git
synced 2026-10-20 13:38:05 +02:00
feat: Add movies tab with pagination, search, and player integration.
This commit is contained in:
1 parent
59b45708c8
commit
a52c896d97
4 files changed
+17
-16
No files matched your search
@@ -103,21 +103,21 @@ class AppTheme {
|
|||||||
),
|
),
|
||||||
|
|
||||||
// Cards: Transparent by default (content defines look)
|
// Cards: Transparent by default (content defines look)
|
||||||
cardTheme: const CardTheme(
|
// cardTheme: const CardTheme(
|
||||||
color: AppColors.surface,
|
// color: AppColors.surface,
|
||||||
elevation: 0,
|
// elevation: 0,
|
||||||
margin: EdgeInsets.zero,
|
// margin: EdgeInsets.zero,
|
||||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(radiusMd))),
|
// shape: RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(radiusMd))),
|
||||||
),
|
// ),
|
||||||
|
|
||||||
// Dialogs: Glass/Dark
|
// Dialogs: Glass/Dark
|
||||||
dialogTheme: DialogTheme(
|
// dialogTheme: DialogTheme(
|
||||||
backgroundColor: const Color(0xFF1C1C1E), // Apple Dark Grey
|
// backgroundColor: const Color(0xFF1C1C1E), // Apple Dark Grey
|
||||||
elevation: 24,
|
// elevation: 24,
|
||||||
shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(radiusLg)),
|
// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(radiusLg)),
|
||||||
titleTextStyle: GoogleFonts.inter(fontSize: 20, fontWeight: FontWeight.bold, color: AppColors.textPrimary),
|
// titleTextStyle: GoogleFonts.inter(fontSize: 20, fontWeight: FontWeight.bold, color: AppColors.textPrimary),
|
||||||
contentTextStyle: GoogleFonts.inter(fontSize: 16, color: AppColors.textSecondary),
|
// contentTextStyle: GoogleFonts.inter(fontSize: 16, color: AppColors.textSecondary),
|
||||||
),
|
// ),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:cached_network_image/cached_network_image.dart';
|
||||||
import '../../theme/app_colors.dart';
|
import '../../theme/app_colors.dart';
|
||||||
import '../../theme/app_theme.dart';
|
import '../../theme/app_theme.dart';
|
||||||
|
|
||||||
|
|||||||
@@ -326,7 +326,7 @@ class XtreamService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Get movies with pagination support
|
/// Get movies with pagination support
|
||||||
Future<List<xm.Movie>> getMovies({int offset = 0, int limit = 100}) async {
|
Future<List<xm.Movie>> getMoviesPaginated({int offset = 0, int limit = 100}) async {
|
||||||
if (_currentPlaylist == null) throw Exception('No playlist configured');
|
if (_currentPlaylist == null) throw Exception('No playlist configured');
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ import '../../../core/theme/app_theme.dart';
|
|||||||
import '../../../core/utils/responsive_layout.dart';
|
import '../../../core/utils/responsive_layout.dart';
|
||||||
import '../../../core/widgets/components/hero_carousel.dart';
|
import '../../../core/widgets/components/hero_carousel.dart';
|
||||||
import '../../../core/widgets/components/ui_components.dart';
|
import '../../../core/widgets/components/ui_components.dart';
|
||||||
import '../../favorites/providers/watch_history_provider.dart';
|
import '../providers/watch_history_provider.dart';
|
||||||
import '../models/xtream_models.dart';
|
import '../models/xtream_models.dart';
|
||||||
import '../providers/xtream_provider.dart';
|
import '../providers/xtream_provider.dart';
|
||||||
import '../providers/settings_provider.dart';
|
import '../providers/settings_provider.dart';
|
||||||
@@ -158,7 +158,7 @@ class _MoviesTabState extends ConsumerState<MoviesTab> {
|
|||||||
} else {
|
} else {
|
||||||
displayMovies = settings.moviesKeywords.isEmpty
|
displayMovies = settings.moviesKeywords.isEmpty
|
||||||
? _movies
|
? _movies
|
||||||
: _movies.where((m) => settings.matchesMovieFilter(m.categoryName)).toList();
|
: _movies.where((m) => settings.matchesMoviesFilter(m.categoryName)).toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hero Items (Take 5 random or first 5)
|
// Hero Items (Take 5 random or first 5)
|
||||||
|
|||||||
Reference in new issue
Block a user