opt: btn, stack

Closes #775

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-29 21:53:20 +08:00
parent 4abffeed32
commit b4ca42e0c0
55 changed files with 243 additions and 158 deletions

View File

@@ -193,6 +193,7 @@ class _PayCoinsPageState extends State<PayCoinsPage>
Widget _buildBody(isV) => Stack(
key: _key,
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
Visibility(
@@ -268,6 +269,7 @@ class _PayCoinsPageState extends State<PayCoinsPage>
BlendMode.srcATop,
),
child: Stack(
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
SlideTransition(
@@ -389,6 +391,7 @@ class _PayCoinsPageState extends State<PayCoinsPage>
],
const SizedBox(height: 10),
Stack(
clipBehavior: Clip.none,
alignment: Alignment.centerLeft,
children: [
GestureDetector(

View File

@@ -150,6 +150,7 @@ class _VideoInfoState extends State<VideoInfo> {
mainAxisSize: MainAxisSize.min,
children: [
Stack(
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
Icon(
@@ -548,6 +549,7 @@ class _VideoInfoState extends State<VideoInfo> {
),
const SizedBox(height: 8),
Stack(
clipBehavior: Clip.none,
children: [
Row(
children: [

View File

@@ -157,6 +157,7 @@ class ActionItemState extends State<ActionItem>
mainAxisAlignment: MainAxisAlignment.center,
children: [
Stack(
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
if (widget.needAnim && !_hideCircle)

View File

@@ -96,6 +96,7 @@ class _PostPanelState extends CommonCollapseSlidePageState<PostPanel> {
Widget buildList(ThemeData theme) {
return list?.isNotEmpty == true
? Stack(
clipBehavior: Clip.none,
children: [
SingleChildScrollView(
controller: ScrollController(),

View File

@@ -104,6 +104,7 @@ class _VideoReplyPanelState extends State<VideoReplyPanel>
await _videoReplyController.onRefresh();
},
child: Stack(
clipBehavior: Clip.none,
children: [
CustomScrollView(
controller: widget.needController == false

View File

@@ -111,6 +111,7 @@ class ReplyItemGrpc extends StatelessWidget {
top: 8,
right: 12,
child: Stack(
clipBehavior: Clip.none,
alignment: Alignment.centerRight,
children: [
CachedNetworkImage(
@@ -1179,6 +1180,7 @@ class ReplyItemGrpc extends StatelessWidget {
onTap: () => menuActionHandler('checkReply'),
minLeadingWidth: 0,
leading: Stack(
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
const Icon(Icons.shield_outlined, size: 19),

View File

@@ -165,6 +165,7 @@ class _VideoReplyReplyPanelState
},
child: Obx(
() => Stack(
clipBehavior: Clip.none,
children: [
ScrollablePositionedList.builder(
key: _listKey,

View File

@@ -552,6 +552,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
videoDetailController.scrollCtr.offset != 0 &&
context.orientation == Orientation.portrait;
return Stack(
clipBehavior: Clip.none,
children: [
AppBar(
backgroundColor: Colors.black,
@@ -639,6 +640,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
? animHeight
: videoDetailController.videoHeight,
flexibleSpace: Stack(
clipBehavior: Clip.none,
children: [
Builder(
builder: (context) {
@@ -702,6 +704,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
child: SizedBox(
height: kToolbarHeight,
child: Stack(
clipBehavior: Clip.none,
children: [
Align(
alignment: Alignment.centerLeft,
@@ -1182,6 +1185,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
);
Widget get childWhenDisabledLandscape => Stack(
clipBehavior: Clip.none,
children: [
Scaffold(
resizeToAvoidBottomInset: false,
@@ -1261,6 +1265,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
() => Visibility(
visible: videoDetailController.isShowCover.value,
child: Stack(
clipBehavior: Clip.none,
children: [
Positioned(
top: 0,
@@ -1634,6 +1639,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
MediaQuery.of(context).orientation == Orientation.portrait),
onPopInvokedWithResult: _onPopInvokedWithResult,
child: Stack(
clipBehavior: Clip.none,
children: [
Positioned.fill(child: ColoredBox(color: Colors.black)),
@@ -1860,6 +1866,7 @@ class _VideoDetailPageVState extends State<VideoDetailPageV>
);
if (videoDetailController.isPlayAll) {
return Stack(
clipBehavior: Clip.none,
children: [
introPanel(),
Positioned(

View File

@@ -2032,6 +2032,7 @@ class HeaderControlState extends State<HeaderControl> {
),
onPressed: () => videoDetailCtr.onBlock(context),
icon: Stack(
clipBehavior: Clip.none,
alignment: Alignment.center,
children: [
Icon(

View File

@@ -179,6 +179,7 @@ class _MediaListPanelState
);
},
child: Stack(
clipBehavior: Clip.none,
children: [
Padding(
padding: const EdgeInsets.symmetric(
@@ -194,6 +195,7 @@ class _MediaListPanelState
child: LayoutBuilder(
builder: (context, boxConstraints) {
return Stack(
clipBehavior: Clip.none,
children: [
NetworkImgLayer(
src: item.cover,
@@ -233,6 +235,8 @@ class _MediaListPanelState
const Spacer(),
Text(
item.upper!.name!,
maxLines: 1,
overflow: TextOverflow.ellipsis,
style: TextStyle(
fontSize: 12,
color: theme.colorScheme.outline,
@@ -265,7 +269,7 @@ class _MediaListPanelState
if (showDelBtn && item.bvid != widget.getBvId())
Positioned(
right: 12,
bottom: 0,
bottom: -6,
child: InkWell(
customBorder: const CircleBorder(),
onTap: () {
@@ -281,7 +285,7 @@ class _MediaListPanelState
child: Icon(
Icons.clear,
size: 18,
color: theme.colorScheme.onSurfaceVariant,
color: theme.colorScheme.outline,
),
),
),