opt: article content

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-02-07 17:40:45 +08:00
parent e45a126862
commit 588a06bece
2 changed files with 32 additions and 33 deletions

View File

@@ -11,6 +11,7 @@ Widget articleContent({
required BuildContext context, required BuildContext context,
required List<ArticleContentModel> list, required List<ArticleContentModel> list,
Function(List<String>, int)? callback, Function(List<String>, int)? callback,
required double maxWidth,
}) { }) {
List<String>? imgList = list List<String>? imgList = list
.where((item) => item.pic != null) .where((item) => item.pic != null)
@@ -57,8 +58,7 @@ Widget articleContent({
), ),
); );
} else if (item.pic != null) { } else if (item.pic != null) {
return LayoutBuilder( return Hero(
builder: (context, constraints) => Hero(
tag: item.pic!.pics!.first.url!, tag: item.pic!.pics!.first.url!,
child: GestureDetector( child: GestureDetector(
onTap: () { onTap: () {
@@ -70,20 +70,18 @@ Widget articleContent({
} else { } else {
context.imageView( context.imageView(
initialPage: imgList.indexOf(item.pic!.pics!.first.url!), initialPage: imgList.indexOf(item.pic!.pics!.first.url!),
imgList: imgList: imgList.map((url) => SourceModel(url: url)).toList(),
imgList.map((url) => SourceModel(url: url)).toList(),
); );
} }
}, },
child: NetworkImgLayer( child: NetworkImgLayer(
width: constraints.maxWidth, width: maxWidth,
height: constraints.maxWidth * height: maxWidth *
item.pic!.pics!.first.height! / item.pic!.pics!.first.height! /
item.pic!.pics!.first.width!, item.pic!.pics!.first.width!,
src: item.pic!.pics!.first.url, src: item.pic!.pics!.first.url,
), ),
), ),
),
); );
} else { } else {
return const SizedBox.shrink(); return const SizedBox.shrink();

View File

@@ -564,14 +564,17 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
); );
Widget get _buildContent => SliverPadding( Widget get _buildContent => SliverPadding(
padding: const EdgeInsets.fromLTRB(12, 8, 12, 8), padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
sliver: Obx( sliver: Obx(
() => _htmlRenderCtr.loaded.value () => _htmlRenderCtr.loaded.value
? _htmlRenderCtr.response['isJsonContent'] == true ? _htmlRenderCtr.response['isJsonContent'] == true
? articleContent( ? LayoutBuilder(
builder: (context, constraints) => articleContent(
context: context, context: context,
list: _htmlRenderCtr.response['content'], list: _htmlRenderCtr.response['content'],
callback: _getImageCallback, callback: _getImageCallback,
maxWidth: constraints.maxWidth,
),
) )
: SliverToBoxAdapter( : SliverToBoxAdapter(
child: LayoutBuilder( child: LayoutBuilder(
@@ -583,9 +586,7 @@ class _HtmlRenderPageState extends State<HtmlRenderPage>
), ),
), ),
) )
: SliverToBoxAdapter( : SliverToBoxAdapter(child: const SizedBox()),
child: const SizedBox(),
),
), ),
); );
} }