diff --git a/lib/http/search.dart b/lib/http/search.dart index e35b2da3..8583b271 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -89,9 +89,9 @@ class SearchHttp { case SearchType.media_bangumi: data = SearchMBangumiModel.fromJson(res.data['data']); break; - // case SearchType.article: - // data = SearchArticleModel.fromJson(res.data['data']); - // break; + case SearchType.article: + data = SearchArticleModel.fromJson(res.data['data']); + break; } return { 'status': true, diff --git a/lib/models/common/search_type.dart b/lib/models/common/search_type.dart index c535e9f4..d7d13aec 100644 --- a/lib/models/common/search_type.dart +++ b/lib/models/common/search_type.dart @@ -17,7 +17,7 @@ enum SearchType { // 用户:bili_user bili_user, // 专栏:article - // article, + article, // 相簿:photo // photo } diff --git a/lib/models/search/result.dart b/lib/models/search/result.dart index 9f4d067f..7aec24dd 100644 --- a/lib/models/search/result.dart +++ b/lib/models/search/result.dart @@ -397,6 +397,7 @@ class SearchArticleItemModel { this.pubTime, this.like, this.title, + this.subTitle, this.rankOffset, this.mid, this.imageUrls, @@ -414,6 +415,7 @@ class SearchArticleItemModel { int? pubTime; int? like; List? title; + String? subTitle; int? rankOffset; int? mid; List? imageUrls; @@ -431,6 +433,7 @@ class SearchArticleItemModel { pubTime = json['pub_time']; like = json['like']; title = Em.regTitle(json['title']); + subTitle = json['title'].replaceAll(RegExp(r'<[^>]*>'), ''); rankOffset = json['rank_offset']; mid = json['mid']; imageUrls = json['image_urls']; diff --git a/lib/pages/searchPanel/view.dart b/lib/pages/searchPanel/view.dart index 45c5f22f..9fd37b7e 100644 --- a/lib/pages/searchPanel/view.dart +++ b/lib/pages/searchPanel/view.dart @@ -91,8 +91,8 @@ class _SearchPanelState extends State return searchUserPanel(context, ctr, list); case SearchType.live_room: return searchLivePanel(context, ctr, list); - // case SearchType.article: - // return searchArticlePanel(context, ctr, list); + case SearchType.article: + return searchArticlePanel(context, ctr, list); default: return const SizedBox(); } diff --git a/lib/pages/searchPanel/widgets/article_panel.dart b/lib/pages/searchPanel/widgets/article_panel.dart index 141a1b31..6e73151a 100644 --- a/lib/pages/searchPanel/widgets/article_panel.dart +++ b/lib/pages/searchPanel/widgets/article_panel.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:get/get.dart'; import 'package:pilipala/common/constants.dart'; import 'package:pilipala/common/widgets/network_img_layer.dart'; import 'package:pilipala/utils/utils.dart'; @@ -12,7 +13,14 @@ Widget searchArticlePanel(BuildContext context, ctr, list) { itemCount: list.length, itemBuilder: (context, index) { return InkWell( - onTap: () {}, + onTap: () { + Get.toNamed('/htmlRender', parameters: { + 'url': 'www.bilibili.com/read/cv${list[index].id}', + 'title': list[index].subTitle, + 'id': 'cv${list[index].id}', + 'dynamicType': 'read' + }); + }, child: Padding( padding: const EdgeInsets.fromLTRB( StyleString.safeSpace, 5, StyleString.safeSpace, 5),