Signed-off-by: dom <githubaccount56556@proton.me>
This commit is contained in:
dom
2026-03-06 10:17:47 +08:00
parent 381c385726
commit 631197e3b9
80 changed files with 987 additions and 3281 deletions

View File

@@ -33,8 +33,6 @@ class _MemberOpusState extends State<MemberOpus>
with AutomaticKeepAliveClientMixin {
late final MemberOpusController _controller;
late double _maxWidth;
@override
void initState() {
super.initState();
@@ -127,7 +125,6 @@ class _MemberOpusState extends State<MemberOpus>
maxCrossAxisExtent: Grid.smallCardWidth,
mainAxisSpacing: StyleString.safeSpace,
crossAxisSpacing: StyleString.safeSpace,
afterCalc: (value) => _maxWidth = value,
);
Widget _buildBody(LoadingState<List<SpaceOpusItemModel>?> loadingState) {
@@ -148,10 +145,7 @@ class _MemberOpusState extends State<MemberOpus>
if (index == response.length - 1) {
_controller.onLoadMore();
}
return SpaceOpusItem(
item: response[index],
maxWidth: _maxWidth,
);
return SpaceOpusItem(item: response[index]);
},
childCount: response.length,
),

View File

@@ -1,21 +1,19 @@
import 'package:PiliPlus/common/widgets/flutter/dyn/ink_well.dart';
import 'package:PiliPlus/common/widgets/flutter/layout_builder.dart';
import 'package:PiliPlus/common/widgets/image/network_img_layer.dart';
import 'package:PiliPlus/common/widgets/stat/stat.dart';
import 'package:PiliPlus/models/common/image_type.dart';
import 'package:PiliPlus/models/common/stat_type.dart';
import 'package:PiliPlus/models_new/space/space_opus/item.dart';
import 'package:PiliPlus/utils/page_utils.dart';
import 'package:flutter/material.dart' hide InkWell;
import 'package:flutter/material.dart' hide LayoutBuilder;
class SpaceOpusItem extends StatelessWidget {
const SpaceOpusItem({
super.key,
required this.item,
required this.maxWidth,
});
final SpaceOpusItemModel item;
final double maxWidth;
@override
Widget build(BuildContext context) {
@@ -34,12 +32,14 @@ class SpaceOpusItem extends StatelessWidget {
if (hasPic)
Stack(
children: [
NetworkImgLayer(
width: maxWidth,
height: maxWidth * item.cover!.ratio,
src: item.cover!.url,
type: ImageType.emote,
quality: 60,
LayoutBuilder(
builder: (context, constraints) => NetworkImgLayer(
width: constraints.maxWidth,
height: constraints.maxWidth * item.cover!.ratio,
src: item.cover!.url,
type: ImageType.emote,
quality: 60,
),
),
Positioned(
left: 0,