mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: image view
Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -31,8 +31,7 @@ class VideoCardHSkeleton extends StatelessWidget {
|
|||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color:
|
color:
|
||||||
Theme.of(context).colorScheme.onInverseSurface,
|
Theme.of(context).colorScheme.onInverseSurface,
|
||||||
borderRadius:
|
borderRadius: StyleString.mdRadius,
|
||||||
BorderRadius.circular(StyleString.imgRadius.x),
|
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ class VideoCardVSkeleton extends StatelessWidget {
|
|||||||
builder: (context, boxConstraints) {
|
builder: (context, boxConstraints) {
|
||||||
return Container(
|
return Container(
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
color: Theme.of(context).colorScheme.onInverseSurface,
|
color: Theme.of(context).colorScheme.onInverseSurface,
|
||||||
borderRadius:
|
borderRadius: StyleString.mdRadius,
|
||||||
BorderRadius.circular(StyleString.imgRadius.x)),
|
),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import 'dart:math';
|
import 'dart:math';
|
||||||
|
|
||||||
|
import 'package:PiliPlus/common/constants.dart';
|
||||||
import 'package:PiliPlus/common/widgets/badge.dart';
|
import 'package:PiliPlus/common/widgets/badge.dart';
|
||||||
import 'package:PiliPlus/common/widgets/network_img_layer.dart';
|
import 'package:PiliPlus/common/widgets/network_img_layer.dart';
|
||||||
import 'package:PiliPlus/common/widgets/nine_grid_view.dart';
|
import 'package:PiliPlus/common/widgets/nine_grid_view.dart';
|
||||||
@@ -49,7 +50,7 @@ Widget imageview(
|
|||||||
}
|
}
|
||||||
BorderRadius borderRadius(index) {
|
BorderRadius borderRadius(index) {
|
||||||
if (picArr.length == 1) {
|
if (picArr.length == 1) {
|
||||||
return BorderRadius.circular(12);
|
return StyleString.mdRadius;
|
||||||
}
|
}
|
||||||
final int row = picArr.length == 4 ? 2 : 3;
|
final int row = picArr.length == 4 ? 2 : 3;
|
||||||
return BorderRadius.only(
|
return BorderRadius.only(
|
||||||
@@ -57,27 +58,27 @@ Widget imageview(
|
|||||||
(index - row >= 0 ||
|
(index - row >= 0 ||
|
||||||
((index - 1) >= 0 && (index - 1) % row < index % row))
|
((index - 1) >= 0 && (index - 1) % row < index % row))
|
||||||
? 0
|
? 0
|
||||||
: 12,
|
: 10,
|
||||||
),
|
),
|
||||||
topRight: Radius.circular(
|
topRight: Radius.circular(
|
||||||
(index - row >= 0 ||
|
(index - row >= 0 ||
|
||||||
((index + 1) < picArr.length &&
|
((index + 1) < picArr.length &&
|
||||||
(index + 1) % row > index % row))
|
(index + 1) % row > index % row))
|
||||||
? 0
|
? 0
|
||||||
: 12,
|
: 10,
|
||||||
),
|
),
|
||||||
bottomLeft: Radius.circular(
|
bottomLeft: Radius.circular(
|
||||||
(index + row < picArr.length ||
|
(index + row < picArr.length ||
|
||||||
((index - 1) >= 0 && (index - 1) % row < index % row))
|
((index - 1) >= 0 && (index - 1) % row < index % row))
|
||||||
? 0
|
? 0
|
||||||
: 12,
|
: 10,
|
||||||
),
|
),
|
||||||
bottomRight: Radius.circular(
|
bottomRight: Radius.circular(
|
||||||
(index + row < picArr.length ||
|
(index + row < picArr.length ||
|
||||||
((index + 1) < picArr.length &&
|
((index + 1) < picArr.length &&
|
||||||
(index + 1) % row > index % row))
|
(index + 1) % row > index % row))
|
||||||
? 0
|
? 0
|
||||||
: 12,
|
: 10,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,20 +41,17 @@ class NetworkImgLayer extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
double radius = this.radius != null
|
|
||||||
? this.radius!
|
|
||||||
: type == 'avatar'
|
|
||||||
? 50
|
|
||||||
: type == 'emote'
|
|
||||||
? 0
|
|
||||||
: StyleString.imgRadius.x;
|
|
||||||
return src.isNullOrEmpty.not
|
return src.isNullOrEmpty.not
|
||||||
? radius != 0
|
? type == 'avatar'
|
||||||
? ClipRRect(
|
? ClipOval(child: _buildImage(context))
|
||||||
borderRadius: BorderRadius.circular(radius),
|
: radius == 0 || type == 'emote'
|
||||||
child: _buildImage(context),
|
? _buildImage(context)
|
||||||
)
|
: ClipRRect(
|
||||||
: _buildImage(context)
|
borderRadius: BorderRadius.circular(
|
||||||
|
radius ?? StyleString.imgRadius.x,
|
||||||
|
),
|
||||||
|
child: _buildImage(context),
|
||||||
|
)
|
||||||
: getPlaceHolder?.call() ?? placeholder(context);
|
: getPlaceHolder?.call() ?? placeholder(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,15 +96,15 @@ class NetworkImgLayer extends StatelessWidget {
|
|||||||
return Container(
|
return Container(
|
||||||
width: width,
|
width: width,
|
||||||
height: height,
|
height: height,
|
||||||
|
clipBehavior: Clip.antiAlias,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
|
shape: type == 'avatar' ? BoxShape.circle : BoxShape.rectangle,
|
||||||
color: Theme.of(context).colorScheme.onInverseSurface.withOpacity(0.4),
|
color: Theme.of(context).colorScheme.onInverseSurface.withOpacity(0.4),
|
||||||
borderRadius: BorderRadius.circular(
|
borderRadius: type == 'avatar' || type == 'emote' || radius == 0
|
||||||
type == 'avatar'
|
? null
|
||||||
? 50
|
: BorderRadius.circular(
|
||||||
: type == 'emote'
|
radius ?? StyleString.imgRadius.x,
|
||||||
? 0
|
),
|
||||||
: StyleString.imgRadius.x,
|
|
||||||
),
|
|
||||||
),
|
),
|
||||||
child: type == 'bg'
|
child: type == 'bg'
|
||||||
? const SizedBox()
|
? const SizedBox()
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ class BangumiCardV extends StatelessWidget {
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
ClipRRect(
|
ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(StyleString.imgRadius),
|
borderRadius: StyleString.mdRadius,
|
||||||
child: AspectRatio(
|
child: AspectRatio(
|
||||||
aspectRatio: 0.75,
|
aspectRatio: 0.75,
|
||||||
child: LayoutBuilder(builder: (context, boxConstraints) {
|
child: LayoutBuilder(builder: (context, boxConstraints) {
|
||||||
|
|||||||
@@ -110,16 +110,16 @@ Widget videoSeasonWidget(item, context, type, {floor = 1}) {
|
|||||||
padding: const EdgeInsets.fromLTRB(10, 0, 8, 8),
|
padding: const EdgeInsets.fromLTRB(10, 0, 8, 8),
|
||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
decoration: BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
gradient: const LinearGradient(
|
gradient: const LinearGradient(
|
||||||
begin: Alignment.topCenter,
|
begin: Alignment.topCenter,
|
||||||
end: Alignment.bottomCenter,
|
end: Alignment.bottomCenter,
|
||||||
colors: <Color>[
|
colors: <Color>[
|
||||||
Colors.transparent,
|
Colors.transparent,
|
||||||
Colors.black54,
|
Colors.black54,
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
borderRadius:
|
borderRadius: StyleString.mdRadius,
|
||||||
BorderRadius.circular(StyleString.imgRadius.x)),
|
),
|
||||||
child: Row(
|
child: Row(
|
||||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||||
crossAxisAlignment: CrossAxisAlignment.end,
|
crossAxisAlignment: CrossAxisAlignment.end,
|
||||||
|
|||||||
@@ -70,8 +70,8 @@ class _LivePageState extends State<LivePage>
|
|||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
margin: const EdgeInsets.only(
|
margin: const EdgeInsets.only(
|
||||||
left: StyleString.safeSpace, right: StyleString.safeSpace),
|
left: StyleString.safeSpace, right: StyleString.safeSpace),
|
||||||
decoration: const BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(StyleString.imgRadius),
|
borderRadius: StyleString.mdRadius,
|
||||||
),
|
),
|
||||||
child: refreshIndicator(
|
child: refreshIndicator(
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class LiveCardV extends StatelessWidget {
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
ClipRRect(
|
ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(StyleString.imgRadius),
|
borderRadius: StyleString.mdRadius,
|
||||||
child: AspectRatio(
|
child: AspectRatio(
|
||||||
aspectRatio: StyleString.aspectRatio,
|
aspectRatio: StyleString.aspectRatio,
|
||||||
child: LayoutBuilder(builder: (context, boxConstraints) {
|
child: LayoutBuilder(builder: (context, boxConstraints) {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ class LiveCardVFollow extends StatelessWidget {
|
|||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
ClipRRect(
|
ClipRRect(
|
||||||
borderRadius: const BorderRadius.all(StyleString.imgRadius),
|
borderRadius: StyleString.mdRadius,
|
||||||
child: AspectRatio(
|
child: AspectRatio(
|
||||||
aspectRatio: StyleString.aspectRatio,
|
aspectRatio: StyleString.aspectRatio,
|
||||||
child: LayoutBuilder(builder: (context, boxConstraints) {
|
child: LayoutBuilder(builder: (context, boxConstraints) {
|
||||||
|
|||||||
@@ -64,8 +64,8 @@ class _RcmdPageState extends State<RcmdPage>
|
|||||||
clipBehavior: Clip.hardEdge,
|
clipBehavior: Clip.hardEdge,
|
||||||
margin: const EdgeInsets.only(
|
margin: const EdgeInsets.only(
|
||||||
left: StyleString.safeSpace, right: StyleString.safeSpace),
|
left: StyleString.safeSpace, right: StyleString.safeSpace),
|
||||||
decoration: const BoxDecoration(
|
decoration: BoxDecoration(
|
||||||
borderRadius: BorderRadius.all(StyleString.imgRadius),
|
borderRadius: StyleString.mdRadius,
|
||||||
),
|
),
|
||||||
child: refreshIndicator(
|
child: refreshIndicator(
|
||||||
onRefresh: () async {
|
onRefresh: () async {
|
||||||
|
|||||||
Reference in New Issue
Block a user