Skip to content

Commit 345b268

Browse files
authored
Merge pull request #219 from flutter-news-app-full-source-code/feat-Add-Breaking-News-Prefix-to-Headline-Titles
Feat add breaking news prefix to headline titles
2 parents a641bd4 + 66c0a7c commit 345b268

File tree

8 files changed

+70
-7
lines changed

8 files changed

+70
-7
lines changed

lib/l10n/app_localizations.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2539,6 +2539,12 @@ abstract class AppLocalizations {
25392539
/// In en, this message translates to:
25402540
/// **'Delete'**
25412541
String get deleteButtonLabel;
2542+
2543+
/// Prefix text shown for breaking news headlines.
2544+
///
2545+
/// In en, this message translates to:
2546+
/// **'Breaking News'**
2547+
String get breakingNewsPrefix;
25422548
}
25432549

25442550
class _AppLocalizationsDelegate

lib/l10n/app_localizations_ar.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,4 +1337,7 @@ class AppLocalizationsAr extends AppLocalizations {
13371337

13381338
@override
13391339
String get deleteButtonLabel => 'حذف';
1340+
1341+
@override
1342+
String get breakingNewsPrefix => 'خبر عاجل';
13401343
}

lib/l10n/app_localizations_en.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,4 +1341,7 @@ class AppLocalizationsEn extends AppLocalizations {
13411341

13421342
@override
13431343
String get deleteButtonLabel => 'Delete';
1344+
1345+
@override
1346+
String get breakingNewsPrefix => 'Breaking News';
13441347
}

lib/l10n/arb/app_ar.arb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1733,5 +1733,9 @@
17331733
"deleteButtonLabel": "حذف",
17341734
"@deleteButtonLabel": {
17351735
"description": "Generic label for a delete button."
1736+
},
1737+
"breakingNewsPrefix": "خبر عاجل",
1738+
"@breakingNewsPrefix": {
1739+
"description": "Prefix text shown for breaking news headlines."
17361740
}
17371741
}

lib/l10n/arb/app_en.arb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1733,5 +1733,9 @@
17331733
"deleteButtonLabel": "Delete",
17341734
"@deleteButtonLabel": {
17351735
"description": "Generic label for a delete button."
1736+
},
1737+
"breakingNewsPrefix": "Breaking News",
1738+
"@breakingNewsPrefix": {
1739+
"description": "Prefix text shown for breaking news headlines."
17361740
}
17371741
}

lib/shared/widgets/feed_core/headline_tile_image_start.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:core/core.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
34
import 'package:flutter_news_app_mobile_client_full_source_code/shared/widgets/feed_core/headline_source_row.dart';
45
import 'package:flutter_news_app_mobile_client_full_source_code/shared/widgets/feed_core/headline_tap_handler.dart';
56
import 'package:ui_kit/ui_kit.dart';
@@ -38,6 +39,7 @@ class HeadlineTileImageStart extends StatelessWidget {
3839
final theme = Theme.of(context);
3940
final textTheme = theme.textTheme;
4041
final colorScheme = theme.colorScheme;
42+
final l10n = AppLocalizationsX(context).l10n;
4143

4244
return Card(
4345
margin: const EdgeInsets.symmetric(
@@ -88,8 +90,20 @@ class HeadlineTileImageStart extends StatelessWidget {
8890
children: [
8991
HeadlineSourceRow(headline: headline),
9092
const SizedBox(height: AppSpacing.sm),
91-
Text(
92-
headline.title,
93+
Text.rich(
94+
TextSpan(
95+
children: [
96+
if (headline.isBreaking)
97+
TextSpan(
98+
text: '${l10n.breakingNewsPrefix} - ',
99+
style: textTheme.titleMedium?.copyWith(
100+
fontWeight: FontWeight.w600,
101+
color: colorScheme.primary,
102+
),
103+
),
104+
TextSpan(text: headline.title),
105+
],
106+
),
93107
style: textTheme.titleMedium?.copyWith(
94108
fontWeight: FontWeight.w500,
95109
),

lib/shared/widgets/feed_core/headline_tile_image_top.dart

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:core/core.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
34
import 'package:flutter_news_app_mobile_client_full_source_code/shared/widgets/feed_core/headline_source_row.dart';
45
import 'package:flutter_news_app_mobile_client_full_source_code/shared/widgets/feed_core/headline_tap_handler.dart';
56
import 'package:ui_kit/ui_kit.dart';
@@ -38,6 +39,7 @@ class HeadlineTileImageTop extends StatelessWidget {
3839
final theme = Theme.of(context);
3940
final textTheme = theme.textTheme;
4041
final colorScheme = theme.colorScheme;
42+
final l10n = AppLocalizationsX(context).l10n;
4143

4244
return Card(
4345
margin: const EdgeInsets.symmetric(
@@ -106,8 +108,20 @@ class HeadlineTileImageTop extends StatelessWidget {
106108
context,
107109
headline,
108110
),
109-
child: Text(
110-
headline.title,
111+
child: Text.rich(
112+
TextSpan(
113+
children: [
114+
if (headline.isBreaking)
115+
TextSpan(
116+
text: '${l10n.breakingNewsPrefix} - ',
117+
style: textTheme.titleMedium?.copyWith(
118+
fontWeight: FontWeight.w600,
119+
color: colorScheme.primary,
120+
),
121+
),
122+
TextSpan(text: headline.title),
123+
],
124+
),
111125
style: textTheme.titleMedium?.copyWith(
112126
fontWeight: FontWeight.w500,
113127
),

lib/shared/widgets/feed_core/headline_tile_text_only.dart

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:core/core.dart';
22
import 'package:flutter/material.dart';
3+
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
34
import 'package:flutter_news_app_mobile_client_full_source_code/shared/widgets/feed_core/headline_source_row.dart';
45
import 'package:flutter_news_app_mobile_client_full_source_code/shared/widgets/feed_core/headline_tap_handler.dart';
56
import 'package:ui_kit/ui_kit.dart';
@@ -39,6 +40,8 @@ class HeadlineTileTextOnly extends StatelessWidget {
3940
Widget build(BuildContext context) {
4041
final theme = Theme.of(context);
4142
final textTheme = theme.textTheme;
43+
final colorScheme = theme.colorScheme;
44+
final l10n = AppLocalizationsX(context).l10n;
4245

4346
return Card(
4447
margin: const EdgeInsets.symmetric(
@@ -60,12 +63,24 @@ class HeadlineTileTextOnly extends StatelessWidget {
6063
children: [
6164
HeadlineSourceRow(headline: headline),
6265
const SizedBox(height: AppSpacing.sm),
63-
Text(
64-
headline.title,
66+
Text.rich(
67+
TextSpan(
68+
children: [
69+
if (headline.isBreaking)
70+
TextSpan(
71+
text: '${l10n.breakingNewsPrefix} - ',
72+
style: textTheme.titleMedium?.copyWith(
73+
fontWeight: FontWeight.w600,
74+
color: colorScheme.primary,
75+
),
76+
),
77+
TextSpan(text: headline.title),
78+
],
79+
),
6580
style: textTheme.titleMedium?.copyWith(
6681
fontWeight: FontWeight.w500,
6782
),
68-
maxLines: 3,
83+
maxLines: 2,
6984
overflow: TextOverflow.ellipsis,
7085
),
7186
],

0 commit comments

Comments
 (0)