mirror of
https://github.com/HChaZZY/PiliPlus.git
synced 2025-12-06 09:13:48 +08:00
opt: btn, stack
Closes #775 Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
@@ -28,6 +28,7 @@ void imageSaveDialog({
|
|||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: SmartDialog.dismiss,
|
onTap: SmartDialog.dismiss,
|
||||||
|
|||||||
@@ -138,6 +138,7 @@ Widget imageView(
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
ClipRRect(
|
ClipRRect(
|
||||||
|
|||||||
@@ -276,6 +276,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
InteractiveViewerBoundary(
|
InteractiveViewerBoundary(
|
||||||
controller: _transformationController,
|
controller: _transformationController,
|
||||||
@@ -344,6 +345,7 @@ class _InteractiveviewerGalleryState extends State<InteractiveviewerGallery>
|
|||||||
)
|
)
|
||||||
: null,
|
: null,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
|
|||||||
@@ -172,6 +172,7 @@ class _NineGridViewState extends State<NineGridView> {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: list,
|
children: list,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -260,6 +261,7 @@ class _NineGridViewState extends State<NineGridView> {
|
|||||||
)));
|
)));
|
||||||
}
|
}
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: list,
|
children: list,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -286,6 +288,7 @@ class _NineGridViewState extends State<NineGridView> {
|
|||||||
}
|
}
|
||||||
return ClipOval(
|
return ClipOval(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: children,
|
children: children,
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
@@ -372,7 +375,10 @@ class _NineGridViewState extends State<NineGridView> {
|
|||||||
children.add(child);
|
children.add(child);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Stack(children: children);
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
|
children: children,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// double is zero.
|
/// double is zero.
|
||||||
|
|||||||
@@ -598,6 +598,7 @@ class RefreshIndicatorState extends State<RefreshIndicator>
|
|||||||
_mode == _RefreshIndicatorMode.done;
|
_mode == _RefreshIndicatorMode.done;
|
||||||
|
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
child,
|
child,
|
||||||
if (_mode != null)
|
if (_mode != null)
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ class VideoCardHGrpc extends StatelessWidget {
|
|||||||
String type = 'video';
|
String type = 'video';
|
||||||
final String heroTag = Utils.makeHeroTag(aid);
|
final String heroTag = Utils.makeHeroTag(aid);
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Semantics(
|
Semantics(
|
||||||
excludeSemantics: true,
|
excludeSemantics: true,
|
||||||
@@ -66,6 +67,7 @@ class VideoCardHGrpc extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: heroTag,
|
tag: heroTag,
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ class VideoCardHMemberVideo extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
InkWell(
|
InkWell(
|
||||||
onLongPress: () => imageSaveDialog(
|
onLongPress: () => imageSaveDialog(
|
||||||
@@ -77,6 +78,7 @@ class VideoCardHMemberVideo extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: videoItem.cover,
|
src: videoItem.cover,
|
||||||
|
|||||||
@@ -90,64 +90,68 @@ class VideoCardV extends StatelessWidget {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Stack(children: [
|
return Stack(
|
||||||
Semantics(
|
clipBehavior: Clip.none,
|
||||||
label: Utils.videoItemSemantics(videoItem),
|
children: [
|
||||||
excludeSemantics: true,
|
Semantics(
|
||||||
child: Card(
|
label: Utils.videoItemSemantics(videoItem),
|
||||||
clipBehavior: Clip.hardEdge,
|
excludeSemantics: true,
|
||||||
margin: EdgeInsets.zero,
|
child: Card(
|
||||||
child: InkWell(
|
clipBehavior: Clip.hardEdge,
|
||||||
onTap: () => onPushDetail(Utils.makeHeroTag(videoItem.aid)),
|
margin: EdgeInsets.zero,
|
||||||
onLongPress: () => imageSaveDialog(
|
child: InkWell(
|
||||||
title: videoItem.title,
|
onTap: () => onPushDetail(Utils.makeHeroTag(videoItem.aid)),
|
||||||
cover: videoItem.pic,
|
onLongPress: () => imageSaveDialog(
|
||||||
),
|
title: videoItem.title,
|
||||||
child: Column(
|
cover: videoItem.pic,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
),
|
||||||
children: [
|
child: Column(
|
||||||
AspectRatio(
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
aspectRatio: StyleString.aspectRatio,
|
children: [
|
||||||
child: LayoutBuilder(builder: (context, boxConstraints) {
|
AspectRatio(
|
||||||
double maxWidth = boxConstraints.maxWidth;
|
aspectRatio: StyleString.aspectRatio,
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
child: LayoutBuilder(builder: (context, boxConstraints) {
|
||||||
return Stack(
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
children: [
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
NetworkImgLayer(
|
return Stack(
|
||||||
src: videoItem.pic,
|
clipBehavior: Clip.none,
|
||||||
width: maxWidth,
|
children: [
|
||||||
height: maxHeight,
|
NetworkImgLayer(
|
||||||
),
|
src: videoItem.pic,
|
||||||
if (videoItem.duration > 0)
|
width: maxWidth,
|
||||||
PBadge(
|
height: maxHeight,
|
||||||
bottom: 6,
|
),
|
||||||
right: 7,
|
if (videoItem.duration > 0)
|
||||||
size: 'small',
|
PBadge(
|
||||||
type: 'gray',
|
bottom: 6,
|
||||||
text: Utils.timeFormat(videoItem.duration),
|
right: 7,
|
||||||
)
|
size: 'small',
|
||||||
],
|
type: 'gray',
|
||||||
);
|
text: Utils.timeFormat(videoItem.duration),
|
||||||
}),
|
)
|
||||||
),
|
],
|
||||||
videoContent(context)
|
);
|
||||||
],
|
}),
|
||||||
|
),
|
||||||
|
videoContent(context)
|
||||||
|
],
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
if (videoItem.goto == 'av')
|
||||||
if (videoItem.goto == 'av')
|
Positioned(
|
||||||
Positioned(
|
right: -5,
|
||||||
right: -5,
|
bottom: -2,
|
||||||
bottom: -2,
|
child: VideoPopupMenu(
|
||||||
child: VideoPopupMenu(
|
size: 29,
|
||||||
size: 29,
|
iconSize: 17,
|
||||||
iconSize: 17,
|
videoItem: videoItem,
|
||||||
videoItem: videoItem,
|
onRemove: onRemove,
|
||||||
onRemove: onRemove,
|
),
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
]);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget videoContent(context) {
|
Widget videoContent(context) {
|
||||||
|
|||||||
@@ -55,6 +55,7 @@ class VideoCardVMemberHome extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Semantics(
|
Semantics(
|
||||||
excludeSemantics: true,
|
excludeSemantics: true,
|
||||||
@@ -77,6 +78,7 @@ class VideoCardVMemberHome extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: videoItem.cover,
|
src: videoItem.cover,
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ class VideoCustomActions {
|
|||||||
videoItem.bvid!,
|
videoItem.bvid!,
|
||||||
'copy',
|
'copy',
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Icon(MdiIcons.identifier, size: 16),
|
Icon(MdiIcons.identifier, size: 16),
|
||||||
Icon(MdiIcons.circleOutline, size: 16),
|
Icon(MdiIcons.circleOutline, size: 16),
|
||||||
|
|||||||
@@ -232,6 +232,7 @@ class _ArticlePageState extends State<ArticlePage>
|
|||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
appBar: _buildAppBar,
|
appBar: _buildAppBar,
|
||||||
body: Stack(
|
body: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
SafeArea(
|
SafeArea(
|
||||||
top: false,
|
top: false,
|
||||||
|
|||||||
@@ -198,6 +198,7 @@ class _BangumiInfoState extends State<BangumiInfo> {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class BangumiCardV extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: heroTag,
|
tag: heroTag,
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ class BangumiCardVMemberHome extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: heroTag,
|
tag: heroTag,
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ class BangumiCardVPgcIndex extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: bangumiItem['cover'],
|
src: bangumiItem['cover'],
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class BangumiCardVSearch extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: item.cover,
|
src: item.cover,
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class BangumiCardVTimeline extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: item.cover,
|
src: item.cover,
|
||||||
|
|||||||
@@ -286,6 +286,7 @@ abstract class CommonPublishPageState<T extends CommonPublishPage>
|
|||||||
}
|
}
|
||||||
|
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ class _CreateDynPanelState extends CommonPublishPageState<CreateDynPanel> {
|
|||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(16),
|
padding: const EdgeInsets.all(16),
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
|
|||||||
@@ -362,6 +362,7 @@ class _DynamicDetailPageState extends State<DynamicDetailPage>
|
|||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildBody(Orientation orientation, ThemeData theme) => Stack(
|
Widget _buildBody(Orientation orientation, ThemeData theme) => Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Builder(
|
Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
|
|||||||
@@ -246,6 +246,7 @@ class _RepostPanelState extends CommonPublishPageState<RepostPanel> {
|
|||||||
height: 34,
|
height: 34,
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ class AuthorPanel extends StatelessWidget {
|
|||||||
: Utils.dateFormat(item.modules.moduleAuthor!.pubTs)
|
: Utils.dateFormat(item.modules.moduleAuthor!.pubTs)
|
||||||
: item.modules.moduleAuthor?.pubTime;
|
: item.modules.moduleAuthor?.pubTime;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
@@ -382,6 +383,7 @@ class AuthorPanel extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
minLeadingWidth: 0,
|
minLeadingWidth: 0,
|
||||||
leading: const Stack(
|
leading: const Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.shield_outlined, size: 19),
|
Icon(Icons.shield_outlined, size: 19),
|
||||||
|
|||||||
@@ -441,6 +441,7 @@ Widget forWard(
|
|||||||
children: [
|
children: [
|
||||||
if (floor == 1) const SizedBox(width: 12),
|
if (floor == 1) const SizedBox(width: 12),
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: item.modules.moduleDynamic!.major!.medialist!['cover'],
|
tag: item.modules.moduleDynamic!.major!.medialist!['cover'],
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ Widget liveRcmdPanel(
|
|||||||
builder: (context, box) {
|
builder: (context, box) {
|
||||||
double width = box.maxWidth;
|
double width = box.maxWidth;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: liveRcmd.roomId.toString(),
|
tag: liveRcmd.roomId.toString(),
|
||||||
|
|||||||
@@ -64,6 +64,7 @@ Widget videoSeasonWidget(
|
|||||||
builder: (context, box) {
|
builder: (context, box) {
|
||||||
double width = box.maxWidth;
|
double width = box.maxWidth;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
width: width,
|
width: width,
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ class FavArticleItem extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 12,
|
right: 12,
|
||||||
bottom: 0,
|
bottom: -6,
|
||||||
child: iconButton(
|
child: iconButton(
|
||||||
iconSize: 18,
|
iconSize: 18,
|
||||||
context: context,
|
context: context,
|
||||||
|
|||||||
@@ -451,6 +451,7 @@ class _FavDetailPageState extends State<FavDetailPage> {
|
|||||||
}
|
}
|
||||||
FavDetailItemData item = loadingState.response![index];
|
FavDetailItemData item = loadingState.response![index];
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Positioned.fill(
|
Positioned.fill(
|
||||||
child: FavVideoCardH(
|
child: FavVideoCardH(
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ class FavVideoCardH extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: videoItem.pic,
|
src: videoItem.pic,
|
||||||
@@ -132,6 +133,7 @@ class FavVideoCardH extends StatelessWidget {
|
|||||||
final theme = Theme.of(context);
|
final theme = Theme.of(context);
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
@@ -179,7 +181,7 @@ class FavVideoCardH extends StatelessWidget {
|
|||||||
if (onDelFav != null)
|
if (onDelFav != null)
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 0,
|
right: 0,
|
||||||
bottom: 0,
|
bottom: -8,
|
||||||
child: iconButton(
|
child: iconButton(
|
||||||
context: context,
|
context: context,
|
||||||
icon: Icons.clear,
|
icon: Icons.clear,
|
||||||
|
|||||||
@@ -118,6 +118,7 @@ class HistoryItem extends StatelessWidget {
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
@@ -128,110 +129,105 @@ class HistoryItem extends StatelessWidget {
|
|||||||
mainAxisAlignment: MainAxisAlignment.start,
|
mainAxisAlignment: MainAxisAlignment.start,
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
AspectRatio(
|
||||||
clipBehavior: Clip.none,
|
aspectRatio: StyleString.aspectRatio,
|
||||||
children: [
|
child: LayoutBuilder(
|
||||||
AspectRatio(
|
builder: (context, boxConstraints) {
|
||||||
aspectRatio: StyleString.aspectRatio,
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
child: LayoutBuilder(
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
builder: (context, boxConstraints) {
|
return Stack(
|
||||||
double maxWidth = boxConstraints.maxWidth;
|
clipBehavior: Clip.none,
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
children: [
|
||||||
return Stack(
|
NetworkImgLayer(
|
||||||
clipBehavior: Clip.none,
|
src: (videoItem.cover.isNullOrEmpty
|
||||||
children: [
|
? videoItem.covers?.firstOrNull ?? ''
|
||||||
NetworkImgLayer(
|
: videoItem.cover),
|
||||||
src: (videoItem.cover.isNullOrEmpty
|
width: maxWidth,
|
||||||
? videoItem.covers?.firstOrNull ?? ''
|
height: maxHeight,
|
||||||
: videoItem.cover),
|
|
||||||
width: maxWidth,
|
|
||||||
height: maxHeight,
|
|
||||||
),
|
|
||||||
if (!BusinessType
|
|
||||||
.hiddenDurationType.hiddenDurationType
|
|
||||||
.contains(videoItem.history.business))
|
|
||||||
PBadge(
|
|
||||||
text: videoItem.progress == -1
|
|
||||||
? '已看完'
|
|
||||||
: '${Utils.timeFormat(videoItem.progress)}/${Utils.timeFormat(videoItem.duration!)}',
|
|
||||||
right: 6.0,
|
|
||||||
bottom: 8.0,
|
|
||||||
type: 'gray',
|
|
||||||
),
|
|
||||||
// 右上角
|
|
||||||
if (BusinessType.showBadge.showBadge
|
|
||||||
.contains(videoItem.history.business) ||
|
|
||||||
videoItem.history.business ==
|
|
||||||
BusinessType.live.type)
|
|
||||||
PBadge(
|
|
||||||
text: videoItem.badge,
|
|
||||||
top: 6.0,
|
|
||||||
right: 6.0,
|
|
||||||
bottom: null,
|
|
||||||
left: null,
|
|
||||||
),
|
|
||||||
],
|
|
||||||
);
|
|
||||||
},
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Positioned.fill(
|
|
||||||
child: AnimatedOpacity(
|
|
||||||
opacity: videoItem.checked == true ? 1 : 0,
|
|
||||||
duration: const Duration(milliseconds: 200),
|
|
||||||
child: Container(
|
|
||||||
alignment: Alignment.center,
|
|
||||||
decoration: BoxDecoration(
|
|
||||||
borderRadius: StyleString.mdRadius,
|
|
||||||
color: Colors.black.withOpacity(0.6),
|
|
||||||
),
|
),
|
||||||
child: SizedBox(
|
if (!BusinessType
|
||||||
width: 34,
|
.hiddenDurationType.hiddenDurationType
|
||||||
height: 34,
|
.contains(videoItem.history.business))
|
||||||
child: AnimatedScale(
|
PBadge(
|
||||||
scale: videoItem.checked == true ? 1 : 0,
|
text: videoItem.progress == -1
|
||||||
duration: const Duration(milliseconds: 250),
|
? '已看完'
|
||||||
curve: Curves.easeInOut,
|
: '${Utils.timeFormat(videoItem.progress)}/${Utils.timeFormat(videoItem.duration!)}',
|
||||||
child: IconButton(
|
right: 6.0,
|
||||||
tooltip: '取消选择',
|
bottom: 8.0,
|
||||||
style: ButtonStyle(
|
type: 'gray',
|
||||||
padding:
|
),
|
||||||
WidgetStateProperty.all(EdgeInsets.zero),
|
// 右上角
|
||||||
backgroundColor:
|
if (BusinessType.showBadge.showBadge
|
||||||
WidgetStateProperty.resolveWith(
|
.contains(videoItem.history.business) ||
|
||||||
(states) {
|
videoItem.history.business ==
|
||||||
return theme.colorScheme.surface
|
BusinessType.live.type)
|
||||||
.withOpacity(0.8);
|
PBadge(
|
||||||
},
|
text: videoItem.badge,
|
||||||
|
top: 6.0,
|
||||||
|
right: 6.0,
|
||||||
|
bottom: null,
|
||||||
|
left: null,
|
||||||
|
),
|
||||||
|
if (videoItem.duration != null &&
|
||||||
|
videoItem.duration != 0 &&
|
||||||
|
videoItem.progress != null &&
|
||||||
|
videoItem.progress != 0)
|
||||||
|
Positioned(
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
bottom: 0,
|
||||||
|
child: videoProgressIndicator(
|
||||||
|
videoItem.progress == -1
|
||||||
|
? 1
|
||||||
|
: videoItem.progress! / videoItem.duration!,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
Positioned.fill(
|
||||||
|
child: AnimatedOpacity(
|
||||||
|
opacity: videoItem.checked == true ? 1 : 0,
|
||||||
|
duration: const Duration(milliseconds: 200),
|
||||||
|
child: Container(
|
||||||
|
alignment: Alignment.center,
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
borderRadius: StyleString.mdRadius,
|
||||||
|
color: Colors.black.withOpacity(0.6),
|
||||||
|
),
|
||||||
|
child: SizedBox(
|
||||||
|
width: 34,
|
||||||
|
height: 34,
|
||||||
|
child: AnimatedScale(
|
||||||
|
scale: videoItem.checked == true ? 1 : 0,
|
||||||
|
duration: const Duration(milliseconds: 250),
|
||||||
|
curve: Curves.easeInOut,
|
||||||
|
child: IconButton(
|
||||||
|
tooltip: '取消选择',
|
||||||
|
style: ButtonStyle(
|
||||||
|
padding: WidgetStateProperty.all(
|
||||||
|
EdgeInsets.zero),
|
||||||
|
backgroundColor:
|
||||||
|
WidgetStateProperty.resolveWith(
|
||||||
|
(states) {
|
||||||
|
return theme.colorScheme.surface
|
||||||
|
.withOpacity(0.8);
|
||||||
|
},
|
||||||
|
),
|
||||||
|
),
|
||||||
|
onPressed: () {
|
||||||
|
feedBack();
|
||||||
|
onChoose?.call();
|
||||||
|
},
|
||||||
|
icon: Icon(Icons.done_all_outlined,
|
||||||
|
color: theme.colorScheme.primary),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
onPressed: () {
|
|
||||||
feedBack();
|
|
||||||
onChoose?.call();
|
|
||||||
},
|
|
||||||
icon: Icon(Icons.done_all_outlined,
|
|
||||||
color: theme.colorScheme.primary),
|
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
],
|
||||||
),
|
);
|
||||||
),
|
},
|
||||||
if (videoItem.duration != null &&
|
),
|
||||||
videoItem.duration != 0 &&
|
|
||||||
videoItem.progress != null &&
|
|
||||||
videoItem.progress != 0)
|
|
||||||
Positioned(
|
|
||||||
left: 0,
|
|
||||||
right: 0,
|
|
||||||
bottom: 0,
|
|
||||||
child: videoProgressIndicator(
|
|
||||||
videoItem.progress == -1
|
|
||||||
? 1
|
|
||||||
: videoItem.progress! / videoItem.duration!,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
const SizedBox(width: 10),
|
const SizedBox(width: 10),
|
||||||
videoContent(theme),
|
videoContent(theme),
|
||||||
@@ -240,7 +236,7 @@ class HistoryItem extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 12,
|
right: 12,
|
||||||
bottom: 12,
|
bottom: 0,
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
width: 29,
|
width: 29,
|
||||||
height: 29,
|
height: 29,
|
||||||
@@ -339,6 +335,8 @@ class HistoryItem extends StatelessWidget {
|
|||||||
if (videoItem.authorName != '')
|
if (videoItem.authorName != '')
|
||||||
Text(
|
Text(
|
||||||
videoItem.authorName!,
|
videoItem.authorName!,
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: theme.textTheme.labelMedium!.fontSize,
|
fontSize: theme.textTheme.labelMedium!.fontSize,
|
||||||
color: theme.colorScheme.outline,
|
color: theme.colorScheme.outline,
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ class _LaterViewChildPageState extends State<LaterViewChildPage>
|
|||||||
}
|
}
|
||||||
var videoItem = loadingState.response![index];
|
var videoItem = loadingState.response![index];
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
VideoCardH(
|
VideoCardH(
|
||||||
videoItem: videoItem,
|
videoItem: videoItem,
|
||||||
|
|||||||
@@ -41,6 +41,7 @@ class _LaterSearchPageState
|
|||||||
}
|
}
|
||||||
final item = list[index];
|
final item = list[index];
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
VideoCardH(
|
VideoCardH(
|
||||||
videoItem: item,
|
videoItem: item,
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class LiveCardV extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: heroTag,
|
tag: heroTag,
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ class LiveCardVFollow extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Hero(
|
Hero(
|
||||||
tag: heroTag,
|
tag: heroTag,
|
||||||
|
|||||||
@@ -214,6 +214,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
|
|||||||
return ColoredBox(
|
return ColoredBox(
|
||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Obx(
|
Obx(
|
||||||
() => isFullScreen
|
() => isFullScreen
|
||||||
@@ -281,6 +282,7 @@ class _LiveRoomPageState extends State<LiveRoomPage>
|
|||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
backgroundColor: Colors.transparent,
|
backgroundColor: Colors.transparent,
|
||||||
body: Stack(
|
body: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
_buildAppBar,
|
_buildAppBar,
|
||||||
Column(
|
Column(
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ class LiveRoomChat extends StatelessWidget {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Obx(
|
Obx(
|
||||||
() => ListView.separated(
|
() => ListView.separated(
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ class SeasonSeriesCard extends StatelessWidget {
|
|||||||
final double maxWidth = boxConstraints.maxWidth;
|
final double maxWidth = boxConstraints.maxWidth;
|
||||||
final double maxHeight = boxConstraints.maxHeight;
|
final double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: item['meta']['cover'],
|
src: item['meta']['cover'],
|
||||||
|
|||||||
@@ -441,6 +441,7 @@ class UserInfoCard extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ class MemberCoinsItem extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: coinItem.pic,
|
src: coinItem.pic,
|
||||||
|
|||||||
@@ -171,6 +171,7 @@ class _LikeMePageState extends State<LikeMePage> {
|
|||||||
width: 50,
|
width: 50,
|
||||||
height: 50,
|
height: 50,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
for (var j = 0;
|
for (var j = 0;
|
||||||
j < item.users!.length && j < 4;
|
j < item.users!.length && j < 4;
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ class LiveItem extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: liveItem.cover,
|
src: liveItem.cover,
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ class SearchPgcItem extends StatelessWidget {
|
|||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
width: 111,
|
width: 111,
|
||||||
|
|||||||
@@ -1509,6 +1509,7 @@ List<SettingsModel> get extraSettings => [
|
|||||||
defaultVal: false,
|
defaultVal: false,
|
||||||
onTap: () => Get.toNamed('/sponsorBlock'),
|
onTap: () => Get.toNamed('/sponsorBlock'),
|
||||||
leading: const Stack(
|
leading: const Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.shield_outlined),
|
Icon(Icons.shield_outlined),
|
||||||
@@ -2063,6 +2064,7 @@ List<SettingsModel> get extraSettings => [
|
|||||||
title: '发评反诈',
|
title: '发评反诈',
|
||||||
subtitle: '发送评论后检查评论是否可见',
|
subtitle: '发送评论后检查评论是否可见',
|
||||||
leading: const Stack(
|
leading: const Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.shield_outlined),
|
Icon(Icons.shield_outlined),
|
||||||
@@ -2088,6 +2090,7 @@ List<SettingsModel> get extraSettings => [
|
|||||||
title: '发布/转发动态反诈',
|
title: '发布/转发动态反诈',
|
||||||
subtitle: '发布/转发动态后检查动态是否可见',
|
subtitle: '发布/转发动态后检查动态是否可见',
|
||||||
leading: const Stack(
|
leading: const Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.shield_outlined),
|
Icon(Icons.shield_outlined),
|
||||||
@@ -2101,6 +2104,7 @@ List<SettingsModel> get extraSettings => [
|
|||||||
settingsType: SettingsType.sw1tch,
|
settingsType: SettingsType.sw1tch,
|
||||||
title: '屏蔽带货动态',
|
title: '屏蔽带货动态',
|
||||||
leading: const Stack(
|
leading: const Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.shopping_bag_outlined, size: 14),
|
Icon(Icons.shopping_bag_outlined, size: 14),
|
||||||
@@ -2117,6 +2121,7 @@ List<SettingsModel> get extraSettings => [
|
|||||||
settingsType: SettingsType.sw1tch,
|
settingsType: SettingsType.sw1tch,
|
||||||
title: '屏蔽带货评论',
|
title: '屏蔽带货评论',
|
||||||
leading: const Stack(
|
leading: const Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(Icons.shopping_bag_outlined, size: 14),
|
Icon(Icons.shopping_bag_outlined, size: 14),
|
||||||
|
|||||||
@@ -75,6 +75,7 @@ class SubItem extends StatelessWidget {
|
|||||||
: '其它:${subFolderItem.type}';
|
: '其它:${subFolderItem.type}';
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ class SubVideoCardH extends StatelessWidget {
|
|||||||
double maxWidth = boxConstraints.maxWidth;
|
double maxWidth = boxConstraints.maxWidth;
|
||||||
double maxHeight = boxConstraints.maxHeight;
|
double maxHeight = boxConstraints.maxHeight;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: videoItem.cover,
|
src: videoItem.cover,
|
||||||
@@ -85,6 +86,7 @@ class SubVideoCardH extends StatelessWidget {
|
|||||||
Widget videoContent(context) {
|
Widget videoContent(context) {
|
||||||
return Expanded(
|
return Expanded(
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
|
|||||||
@@ -193,6 +193,7 @@ class _PayCoinsPageState extends State<PayCoinsPage>
|
|||||||
|
|
||||||
Widget _buildBody(isV) => Stack(
|
Widget _buildBody(isV) => Stack(
|
||||||
key: _key,
|
key: _key,
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Visibility(
|
Visibility(
|
||||||
@@ -268,6 +269,7 @@ class _PayCoinsPageState extends State<PayCoinsPage>
|
|||||||
BlendMode.srcATop,
|
BlendMode.srcATop,
|
||||||
),
|
),
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
SlideTransition(
|
SlideTransition(
|
||||||
@@ -389,6 +391,7 @@ class _PayCoinsPageState extends State<PayCoinsPage>
|
|||||||
],
|
],
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
children: [
|
children: [
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
|
|||||||
@@ -150,6 +150,7 @@ class _VideoInfoState extends State<VideoInfo> {
|
|||||||
mainAxisSize: MainAxisSize.min,
|
mainAxisSize: MainAxisSize.min,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(
|
Icon(
|
||||||
@@ -548,6 +549,7 @@ class _VideoInfoState extends State<VideoInfo> {
|
|||||||
),
|
),
|
||||||
const SizedBox(height: 8),
|
const SizedBox(height: 8),
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Row(
|
Row(
|
||||||
children: [
|
children: [
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ class ActionItemState extends State<ActionItem>
|
|||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
children: [
|
children: [
|
||||||
Stack(
|
Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
if (widget.needAnim && !_hideCircle)
|
if (widget.needAnim && !_hideCircle)
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ class _PostPanelState extends CommonCollapseSlidePageState<PostPanel> {
|
|||||||
Widget buildList(ThemeData theme) {
|
Widget buildList(ThemeData theme) {
|
||||||
return list?.isNotEmpty == true
|
return list?.isNotEmpty == true
|
||||||
? Stack(
|
? Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
SingleChildScrollView(
|
SingleChildScrollView(
|
||||||
controller: ScrollController(),
|
controller: ScrollController(),
|
||||||
|
|||||||
@@ -104,6 +104,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
|
|||||||
await _videoReplyController.onRefresh();
|
await _videoReplyController.onRefresh();
|
||||||
},
|
},
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
CustomScrollView(
|
CustomScrollView(
|
||||||
controller: widget.needController == false
|
controller: widget.needController == false
|
||||||
|
|||||||
@@ -111,6 +111,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
|||||||
top: 8,
|
top: 8,
|
||||||
right: 12,
|
right: 12,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.centerRight,
|
alignment: Alignment.centerRight,
|
||||||
children: [
|
children: [
|
||||||
CachedNetworkImage(
|
CachedNetworkImage(
|
||||||
@@ -1179,6 +1180,7 @@ class ReplyItemGrpc extends StatelessWidget {
|
|||||||
onTap: () => menuActionHandler('checkReply'),
|
onTap: () => menuActionHandler('checkReply'),
|
||||||
minLeadingWidth: 0,
|
minLeadingWidth: 0,
|
||||||
leading: Stack(
|
leading: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
const Icon(Icons.shield_outlined, size: 19),
|
const Icon(Icons.shield_outlined, size: 19),
|
||||||
|
|||||||
@@ -165,6 +165,7 @@ class _VideoReplyReplyPanelState
|
|||||||
},
|
},
|
||||||
child: Obx(
|
child: Obx(
|
||||||
() => Stack(
|
() => Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
ScrollablePositionedList.builder(
|
ScrollablePositionedList.builder(
|
||||||
key: _listKey,
|
key: _listKey,
|
||||||
|
|||||||
@@ -552,6 +552,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
videoDetailController.scrollCtr.offset != 0 &&
|
videoDetailController.scrollCtr.offset != 0 &&
|
||||||
context.orientation == Orientation.portrait;
|
context.orientation == Orientation.portrait;
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
AppBar(
|
AppBar(
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: Colors.black,
|
||||||
@@ -639,6 +640,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
? animHeight
|
? animHeight
|
||||||
: videoDetailController.videoHeight,
|
: videoDetailController.videoHeight,
|
||||||
flexibleSpace: Stack(
|
flexibleSpace: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Builder(
|
Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
@@ -702,6 +704,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
height: kToolbarHeight,
|
height: kToolbarHeight,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
alignment: Alignment.centerLeft,
|
alignment: Alignment.centerLeft,
|
||||||
@@ -1182,6 +1185,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
);
|
);
|
||||||
|
|
||||||
Widget get childWhenDisabledLandscape => Stack(
|
Widget get childWhenDisabledLandscape => Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Scaffold(
|
Scaffold(
|
||||||
resizeToAvoidBottomInset: false,
|
resizeToAvoidBottomInset: false,
|
||||||
@@ -1261,6 +1265,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
() => Visibility(
|
() => Visibility(
|
||||||
visible: videoDetailController.isShowCover.value,
|
visible: videoDetailController.isShowCover.value,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Positioned(
|
Positioned(
|
||||||
top: 0,
|
top: 0,
|
||||||
@@ -1634,6 +1639,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
MediaQuery.of(context).orientation == Orientation.portrait),
|
MediaQuery.of(context).orientation == Orientation.portrait),
|
||||||
onPopInvokedWithResult: _onPopInvokedWithResult,
|
onPopInvokedWithResult: _onPopInvokedWithResult,
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Positioned.fill(child: ColoredBox(color: Colors.black)),
|
Positioned.fill(child: ColoredBox(color: Colors.black)),
|
||||||
|
|
||||||
@@ -1860,6 +1866,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
|
|||||||
);
|
);
|
||||||
if (videoDetailController.isPlayAll) {
|
if (videoDetailController.isPlayAll) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
introPanel(),
|
introPanel(),
|
||||||
Positioned(
|
Positioned(
|
||||||
|
|||||||
@@ -2032,6 +2032,7 @@ class HeaderControlState extends State<HeaderControl> {
|
|||||||
),
|
),
|
||||||
onPressed: () => videoDetailCtr.onBlock(context),
|
onPressed: () => videoDetailCtr.onBlock(context),
|
||||||
icon: Stack(
|
icon: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(
|
Icon(
|
||||||
|
|||||||
@@ -179,6 +179,7 @@ class _MediaListPanelState
|
|||||||
);
|
);
|
||||||
},
|
},
|
||||||
child: Stack(
|
child: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
Padding(
|
Padding(
|
||||||
padding: const EdgeInsets.symmetric(
|
padding: const EdgeInsets.symmetric(
|
||||||
@@ -194,6 +195,7 @@ class _MediaListPanelState
|
|||||||
child: LayoutBuilder(
|
child: LayoutBuilder(
|
||||||
builder: (context, boxConstraints) {
|
builder: (context, boxConstraints) {
|
||||||
return Stack(
|
return Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: [
|
children: [
|
||||||
NetworkImgLayer(
|
NetworkImgLayer(
|
||||||
src: item.cover,
|
src: item.cover,
|
||||||
@@ -233,6 +235,8 @@ class _MediaListPanelState
|
|||||||
const Spacer(),
|
const Spacer(),
|
||||||
Text(
|
Text(
|
||||||
item.upper!.name!,
|
item.upper!.name!,
|
||||||
|
maxLines: 1,
|
||||||
|
overflow: TextOverflow.ellipsis,
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
color: theme.colorScheme.outline,
|
color: theme.colorScheme.outline,
|
||||||
@@ -265,7 +269,7 @@ class _MediaListPanelState
|
|||||||
if (showDelBtn && item.bvid != widget.getBvId())
|
if (showDelBtn && item.bvid != widget.getBvId())
|
||||||
Positioned(
|
Positioned(
|
||||||
right: 12,
|
right: 12,
|
||||||
bottom: 0,
|
bottom: -6,
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
customBorder: const CircleBorder(),
|
customBorder: const CircleBorder(),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
@@ -281,7 +285,7 @@ class _MediaListPanelState
|
|||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.clear,
|
Icons.clear,
|
||||||
size: 18,
|
size: 18,
|
||||||
color: theme.colorScheme.onSurfaceVariant,
|
color: theme.colorScheme.outline,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -380,6 +380,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
)
|
)
|
||||||
: Stack(
|
: Stack(
|
||||||
|
clipBehavior: Clip.none,
|
||||||
alignment: Alignment.center,
|
alignment: Alignment.center,
|
||||||
children: [
|
children: [
|
||||||
Icon(
|
Icon(
|
||||||
@@ -731,6 +732,7 @@ class _PLVideoPlayerState extends State<PLVideoPlayer>
|
|||||||
return Stack(
|
return Stack(
|
||||||
fit: StackFit.passthrough,
|
fit: StackFit.passthrough,
|
||||||
key: _playerKey,
|
key: _playerKey,
|
||||||
|
clipBehavior: Clip.none,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Obx(
|
Obx(
|
||||||
() => Video(
|
() => Video(
|
||||||
|
|||||||
Reference in New Issue
Block a user