File tree Expand file tree Collapse file tree 7 files changed +52
-7
lines changed Expand file tree Collapse file tree 7 files changed +52
-7
lines changed Original file line number Diff line number Diff line change @@ -168,7 +168,10 @@ class _M3UHomeScreenState extends State<M3UHomeScreen> {
168
168
169
169
SliverAppBar _buildDesktopSliverAppBar (BuildContext context) {
170
170
return SliverAppBar (
171
- title: const SizedBox .shrink (),
171
+ title: SelectableText (
172
+ context.loc.live_streams,
173
+ style: const TextStyle (fontWeight: FontWeight .bold),
174
+ ),
172
175
floating: true ,
173
176
snap: true ,
174
177
elevation: 0 ,
Original file line number Diff line number Diff line change @@ -86,7 +86,10 @@ class _M3uItemsScreenState extends State<M3uItemsScreen> {
86
86
),
87
87
onChanged: _filterItems,
88
88
)
89
- : Text (context.loc.iptv_channels_count (filteredItems.length)),
89
+ : SelectableText (
90
+ context.loc.iptv_channels_count (filteredItems.length),
91
+ style: const TextStyle (fontWeight: FontWeight .bold),
92
+ ),
90
93
actions: [
91
94
IconButton (
92
95
icon: Icon (isSearching ? Icons .close : Icons .search),
Original file line number Diff line number Diff line change @@ -175,7 +175,10 @@ class SearchScreenState extends State<SearchScreen> {
175
175
autofocus: true ,
176
176
onChanged: _performSearch,
177
177
)
178
- : Text (_getScreenTitle (context)),
178
+ : SelectableText (
179
+ _getScreenTitle (context),
180
+ style: const TextStyle (fontWeight: FontWeight .bold),
181
+ ),
179
182
actions: [
180
183
if (isSearching)
181
184
IconButton (icon: Icon (Icons .clear), onPressed: stopSearch)
Original file line number Diff line number Diff line change @@ -199,7 +199,10 @@ class _XtreamCodeHomeScreenState extends State<XtreamCodeHomeScreen> {
199
199
ContentType contentType,
200
200
) {
201
201
return SliverAppBar (
202
- title: const SizedBox .shrink (),
202
+ title: SelectableText (
203
+ _getDesktopTitle (context, contentType),
204
+ style: const TextStyle (fontWeight: FontWeight .bold),
205
+ ),
203
206
floating: true ,
204
207
snap: true ,
205
208
elevation: 0 ,
@@ -212,6 +215,17 @@ class _XtreamCodeHomeScreenState extends State<XtreamCodeHomeScreen> {
212
215
);
213
216
}
214
217
218
+ String _getDesktopTitle (BuildContext context, ContentType contentType) {
219
+ switch (contentType) {
220
+ case ContentType .liveStream:
221
+ return context.loc.live_streams;
222
+ case ContentType .vod:
223
+ return context.loc.movies;
224
+ case ContentType .series:
225
+ return context.loc.series_plural;
226
+ }
227
+ }
228
+
215
229
SliverAppBar _buildMobileSliverAppBar (
216
230
BuildContext context,
217
231
XtreamCodeHomeController controller,
Original file line number Diff line number Diff line change @@ -24,7 +24,10 @@ class CategoryAppBar extends StatelessWidget {
24
24
return SliverAppBar (
25
25
floating: true ,
26
26
snap: true ,
27
- title: isSearching ? _buildSearchField (context) : Text (title),
27
+ title: isSearching ? _buildSearchField (context) : SelectableText (
28
+ title,
29
+ style: const TextStyle (fontWeight: FontWeight .bold),
30
+ ),
28
31
actions: [
29
32
IconButton (
30
33
icon: Icon (isSearching ? Icons .clear : Icons .search),
Original file line number Diff line number Diff line change 1
1
import 'package:cached_network_image/cached_network_image.dart' ;
2
2
import 'package:flutter/material.dart' ;
3
3
import 'package:another_iptv_player/models/playlist_content_model.dart' ;
4
+ import 'package:another_iptv_player/models/content_type.dart' ;
4
5
5
6
6
7
class ContentCard extends StatelessWidget {
@@ -35,7 +36,7 @@ class ContentCard extends StatelessWidget {
35
36
child: content.imagePath.isNotEmpty
36
37
? CachedNetworkImage (
37
38
imageUrl: content.imagePath,
38
- fit: BoxFit .contain ,
39
+ fit: _getFitForContentType () ,
39
40
placeholder: (context, url) => Container (
40
41
color: Theme .of (context).colorScheme.surfaceContainerHighest,
41
42
child: Center (
@@ -59,6 +60,15 @@ class ContentCard extends StatelessWidget {
59
60
return cardWidget;
60
61
}
61
62
63
+ BoxFit _getFitForContentType () {
64
+ // Canlı yayınlar için contain kullan (logolar için)
65
+ if (content.contentType == ContentType .liveStream) {
66
+ return BoxFit .contain;
67
+ }
68
+ // Film ve diziler için cover kullan (posterler için)
69
+ return BoxFit .cover;
70
+ }
71
+
62
72
Widget _buildTitleCard (BuildContext context) {
63
73
return Container (
64
74
color: isSelected
Original file line number Diff line number Diff line change @@ -111,7 +111,7 @@ class WatchHistoryCard extends StatelessWidget {
111
111
imageUrl: history.imagePath! ,
112
112
width: double .infinity,
113
113
height: double .infinity,
114
- fit: BoxFit .contain ,
114
+ fit: _getFitForContentType () ,
115
115
placeholder: (context, url) => Container (
116
116
color: Colors .grey[300 ],
117
117
child: Center (child: CircularProgressIndicator (strokeWidth: 2 )),
@@ -123,6 +123,15 @@ class WatchHistoryCard extends StatelessWidget {
123
123
}
124
124
}
125
125
126
+ BoxFit _getFitForContentType () {
127
+ // Canlı yayınlar için contain kullan (logolar için)
128
+ if (history.contentType == ContentType .liveStream) {
129
+ return BoxFit .contain;
130
+ }
131
+ // Film ve diziler için cover kullan (posterler için)
132
+ return BoxFit .cover;
133
+ }
134
+
126
135
Widget _buildDefaultThumbnail () {
127
136
return Container (
128
137
width: double .infinity,
You can’t perform that action at this time.
0 commit comments