Skip to content

Commit 3dc4112

Browse files
committed
feat(headlines-search): add TopicItemWidget for search results
- Create TopicItemWidget to display Topic search results - Replace temporary ListTile with TopicItemWidget in search results - Add navigation to Topic details page on item tap
1 parent c35d106 commit 3dc4112

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

lib/headlines-search/view/headlines_search_page.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import 'package:ht_main/app/bloc/app_bloc.dart';
99
import 'package:ht_main/headlines-search/bloc/headlines_search_bloc.dart';
1010
// import 'package:ht_main/headlines-search/widgets/country_item_widget.dart';
1111
import 'package:ht_main/headlines-search/widgets/source_item_widget.dart';
12+
import 'package:ht_main/headlines-search/widgets/topic_item_widget.dart';
1213
import 'package:ht_main/l10n/l10n.dart';
1314
import 'package:ht_main/router/routes.dart';
1415
import 'package:ht_main/shared/extensions/content_type_extensions.dart';
@@ -332,8 +333,7 @@ class _HeadlinesSearchViewState extends State<_HeadlinesSearchView> {
332333
}
333334
return tile;
334335
} else if (feedItem is Topic) {
335-
// TODO(user): Create a TopicItemWidget similar to CategoryItemWidget
336-
return ListTile(title: Text(feedItem.name));
336+
return TopicItemWidget(topic: feedItem);
337337
} else if (feedItem is Source) {
338338
return SourceItemWidget(source: feedItem);
339339
} else if (feedItem is Ad) {
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:go_router/go_router.dart';
3+
import 'package:ht_main/entity_details/view/entity_details_page.dart';
4+
import 'package:ht_main/router/routes.dart';
5+
import 'package:ht_shared/ht_shared.dart';
6+
7+
/// A simple widget to display a Topic search result.
8+
class TopicItemWidget extends StatelessWidget {
9+
const TopicItemWidget({required this.topic, super.key});
10+
11+
final Topic topic;
12+
13+
@override
14+
Widget build(BuildContext context) {
15+
return ListTile(
16+
title: Text(topic.name),
17+
subtitle: topic.description.isNotEmpty
18+
? Text(
19+
topic.description,
20+
maxLines: 2,
21+
overflow: TextOverflow.ellipsis,
22+
)
23+
: null,
24+
onTap: () {
25+
context.push(
26+
Routes.topicDetails,
27+
extra: EntityDetailsPageArguments(entity: topic),
28+
);
29+
},
30+
);
31+
}
32+
}

0 commit comments

Comments
 (0)