|
1 | 1 | import 'package:flutter/material.dart';
|
2 | 2 | import 'package:flutter_bloc/flutter_bloc.dart';
|
| 3 | +import 'package:go_router/go_router.dart'; // Added GoRouter |
3 | 4 | import 'package:ht_main/account/bloc/account_bloc.dart';
|
4 |
| -import 'package:ht_main/headlines-feed/widgets/headline_item_widget.dart'; |
| 5 | +import 'package:ht_main/app/bloc/app_bloc.dart'; // Added AppBloc |
| 6 | +// HeadlineItemWidget import removed |
5 | 7 | import 'package:ht_main/l10n/l10n.dart';
|
6 | 8 | import 'package:ht_main/router/routes.dart';
|
7 |
| -import 'package:ht_main/shared/widgets/widgets.dart'; |
| 9 | +import 'package:ht_main/shared/shared.dart'; // Imports new headline tiles |
| 10 | +import 'package:ht_shared/ht_shared.dart' show Headline, HeadlineImageStyle; // Added HeadlineImageStyle |
8 | 11 |
|
9 | 12 | /// {@template saved_headlines_page}
|
10 | 13 | /// Displays the list of headlines saved by the user.
|
@@ -68,20 +71,60 @@ class SavedHeadlinesPage extends StatelessWidget {
|
68 | 71 | separatorBuilder: (context, index) => const Divider(height: 1),
|
69 | 72 | itemBuilder: (context, index) {
|
70 | 73 | final headline = savedHeadlines[index];
|
71 |
| - return HeadlineItemWidget( |
72 |
| - headline: headline, |
73 |
| - targetRouteName: Routes.accountArticleDetailsName, |
74 |
| - trailing: IconButton( |
75 |
| - // Changed from trailingWidget |
76 |
| - icon: const Icon(Icons.delete_outline), |
77 |
| - tooltip: 'Remove from saved', // Placeholder |
78 |
| - onPressed: () { |
79 |
| - context.read<AccountBloc>().add( |
80 |
| - AccountSaveHeadlineToggled(headline: headline), |
81 |
| - ); |
82 |
| - }, |
83 |
| - ), |
| 74 | + final imageStyle = context |
| 75 | + .watch<AppBloc>() |
| 76 | + .state |
| 77 | + .settings |
| 78 | + .feedPreferences |
| 79 | + .headlineImageStyle; |
| 80 | + |
| 81 | + final trailingButton = IconButton( |
| 82 | + icon: const Icon(Icons.delete_outline), |
| 83 | + tooltip: l10n.headlineDetailsRemoveFromSavedTooltip, // Use l10n |
| 84 | + onPressed: () { |
| 85 | + context.read<AccountBloc>().add( |
| 86 | + AccountSaveHeadlineToggled(headline: headline), |
| 87 | + ); |
| 88 | + }, |
84 | 89 | );
|
| 90 | + |
| 91 | + Widget tile; |
| 92 | + switch (imageStyle) { |
| 93 | + case HeadlineImageStyle.hidden: |
| 94 | + tile = HeadlineTileTextOnly( |
| 95 | + headline: headline, |
| 96 | + onHeadlineTap: () => context.goNamed( |
| 97 | + Routes.accountArticleDetailsName, |
| 98 | + pathParameters: {'id': headline.id}, |
| 99 | + extra: headline, |
| 100 | + ), |
| 101 | + trailing: trailingButton, |
| 102 | + ); |
| 103 | + break; |
| 104 | + case HeadlineImageStyle.smallThumbnail: |
| 105 | + tile = HeadlineTileImageStart( |
| 106 | + headline: headline, |
| 107 | + onHeadlineTap: () => context.goNamed( |
| 108 | + Routes.accountArticleDetailsName, |
| 109 | + pathParameters: {'id': headline.id}, |
| 110 | + extra: headline, |
| 111 | + ), |
| 112 | + trailing: trailingButton, |
| 113 | + ); |
| 114 | + break; |
| 115 | + case HeadlineImageStyle.largeThumbnail: |
| 116 | + tile = HeadlineTileImageTop( |
| 117 | + headline: headline, |
| 118 | + onHeadlineTap: () => context.goNamed( |
| 119 | + Routes.accountArticleDetailsName, |
| 120 | + pathParameters: {'id': headline.id}, |
| 121 | + extra: headline, |
| 122 | + ), |
| 123 | + trailing: trailingButton, |
| 124 | + ); |
| 125 | + break; |
| 126 | + } |
| 127 | + return tile; |
85 | 128 | },
|
86 | 129 | );
|
87 | 130 | },
|
|
0 commit comments