diff --git a/lib/common/widgets/cropped_image.dart b/lib/common/widgets/cropped_image.dart index 6cb61ad75..46ae1ed10 100644 --- a/lib/common/widgets/cropped_image.dart +++ b/lib/common/widgets/cropped_image.dart @@ -143,12 +143,7 @@ class RenderCroppedImage extends RenderBox { @override void performLayout() { - size = computeDryLayout(constraints); - } - - @override - Size computeDryLayout(BoxConstraints constraints) { - return constraints.constrain(_preferredSize); + size = constraints.constrain(_preferredSize); } @override diff --git a/lib/common/widgets/custom_arc.dart b/lib/common/widgets/custom_arc.dart index 4244851b7..57acf3ade 100644 --- a/lib/common/widgets/custom_arc.dart +++ b/lib/common/widgets/custom_arc.dart @@ -82,12 +82,7 @@ class RenderArc extends RenderBox { @override void performLayout() { - size = computeDryLayout(constraints); - } - - @override - Size computeDryLayout(BoxConstraints constraints) { - return constraints.constrain(_preferredSize); + size = constraints.constrain(_preferredSize); } @override diff --git a/lib/common/widgets/custom_tooltip.dart b/lib/common/widgets/custom_tooltip.dart index 31a227051..b33058edd 100644 --- a/lib/common/widgets/custom_tooltip.dart +++ b/lib/common/widgets/custom_tooltip.dart @@ -277,7 +277,7 @@ class Triangle extends LeafRenderObjectWidget { RenderObject createRenderObject(BuildContext context) { return RenderTriangle( color: color, - size: size, + preferredSize: size, type: type, ); } @@ -296,10 +296,10 @@ class Triangle extends LeafRenderObjectWidget { class RenderTriangle extends RenderBox { RenderTriangle({ required Color color, - required Size size, + required Size preferredSize, required TooltipType type, }) : _color = color, - _preferredSize = size, + _preferredSize = preferredSize, _type = type; Color _color; @@ -321,12 +321,7 @@ class RenderTriangle extends RenderBox { @override void performLayout() { - size = computeDryLayout(constraints); - } - - @override - Size computeDryLayout(BoxConstraints constraints) { - return constraints.constrain(_preferredSize); + size = constraints.constrain(_preferredSize); } @override diff --git a/lib/common/widgets/flutter/page/scrollable.dart b/lib/common/widgets/flutter/page/scrollable.dart index d81d28d00..7c13b568c 100644 --- a/lib/common/widgets/flutter/page/scrollable.dart +++ b/lib/common/widgets/flutter/page/scrollable.dart @@ -1683,7 +1683,7 @@ class _ScrollableSelectionContainerDelegate bool _globalPositionInScrollable(Offset globalPosition) { final RenderBox box = state.context.findRenderObject()! as RenderBox; final Offset localPosition = box.globalToLocal(globalPosition); - final Rect rect = Rect.fromLTWH(0, 0, box.size.width, box.size.height); + final Rect rect = Rect.fromLTRB(0, 0, box.size.width, box.size.height); return rect.contains(localPosition); } diff --git a/lib/common/widgets/flutter/page/scrollable_helpers.dart b/lib/common/widgets/flutter/page/scrollable_helpers.dart index aed0f528f..0ba394c79 100644 --- a/lib/common/widgets/flutter/page/scrollable_helpers.dart +++ b/lib/common/widgets/flutter/page/scrollable_helpers.dart @@ -102,7 +102,7 @@ class EdgeDraggingAutoScroller { final Matrix4 transform = scrollRenderBox.getTransformTo(null); final Rect globalRect = MatrixUtils.transformRect( transform, - Rect.fromLTWH( + Rect.fromLTRB( 0, 0, scrollRenderBox.size.width, diff --git a/lib/common/widgets/flutter/text_field/editable.dart b/lib/common/widgets/flutter/text_field/editable.dart index b5c3618ae..67a85bbe0 100644 --- a/lib/common/widgets/flutter/text_field/editable.dart +++ b/lib/common/widgets/flutter/text_field/editable.dart @@ -2473,7 +2473,7 @@ class RenderEditable extends RenderBox switch (defaultTargetPlatform) { case TargetPlatform.iOS: case TargetPlatform.macOS: - _caretPrototype = Rect.fromLTWH( + _caretPrototype = Rect.fromLTRB( 0.0, 0.0, cursorWidth, @@ -3169,7 +3169,7 @@ class _TextHighlightPainter extends RenderEditablePainter { .toRect() .shift(renderEditable._paintOffset) .intersect( - Rect.fromLTWH(0, 0, textPainter.width, textPainter.height), + Rect.fromLTRB(0, 0, textPainter.width, textPainter.height), ), highlightPaint, ); diff --git a/lib/common/widgets/flutter/text_field/editable_text.dart b/lib/common/widgets/flutter/text_field/editable_text.dart index d41861503..c138ce68b 100644 --- a/lib/common/widgets/flutter/text_field/editable_text.dart +++ b/lib/common/widgets/flutter/text_field/editable_text.dart @@ -6399,7 +6399,7 @@ class _ScribbleFocusableState extends State<_ScribbleFocusable> final Matrix4 transform = box.getTransformTo(null); return MatrixUtils.transformRect( transform, - Rect.fromLTWH(0, 0, box.size.width, box.size.height), + Rect.fromLTRB(0, 0, box.size.width, box.size.height), ); } diff --git a/lib/common/widgets/flutter/text_field/text_selection.dart b/lib/common/widgets/flutter/text_field/text_selection.dart index 6bdb85498..f4df4cf31 100644 --- a/lib/common/widgets/flutter/text_field/text_selection.dart +++ b/lib/common/widgets/flutter/text_field/text_selection.dart @@ -3573,7 +3573,7 @@ class _SelectionHandleOverlayState extends State<_SelectionHandleOverlay> final Size handleSize = widget.selectionControls.getHandleSize( preferredLineHeight, ); - return Rect.fromLTWH(0.0, 0.0, handleSize.width, handleSize.height); + return Rect.fromLTRB(0.0, 0.0, handleSize.width, handleSize.height); } @override diff --git a/lib/common/widgets/progress_bar/audio_video_progress_bar.dart b/lib/common/widgets/progress_bar/audio_video_progress_bar.dart index faadf8182..307349c9d 100644 --- a/lib/common/widgets/progress_bar/audio_video_progress_bar.dart +++ b/lib/common/widgets/progress_bar/audio_video_progress_bar.dart @@ -4,6 +4,11 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter/rendering.dart'; +import 'package:flutter/services.dart' + show + MouseTrackerAnnotation, + PointerEnterEventListener, + PointerExitEventListener; /// The shape of the progress bar at the left and right ends. enum BarCapShape { @@ -330,7 +335,7 @@ class _EagerHorizontalDragGestureRecognizer String get debugDescription => '_EagerHorizontalDragGestureRecognizer'; } -class RenderProgressBar extends RenderBox { +class RenderProgressBar extends RenderBox implements MouseTrackerAnnotation { RenderProgressBar({ required Duration progress, required Duration total, @@ -838,4 +843,16 @@ class RenderProgressBar extends RenderBox { markNeedsPaint(); markNeedsSemanticsUpdate(); } + + @override + MouseCursor get cursor => SystemMouseCursors.click; + + @override + PointerEnterEventListener? onEnter; + + @override + PointerExitEventListener? onExit; + + @override + bool get validForMouseTracker => false; } diff --git a/lib/common/widgets/progress_bar/segment_progress_bar.dart b/lib/common/widgets/progress_bar/segment_progress_bar.dart index bf66e0ae8..227ed46d5 100644 --- a/lib/common/widgets/progress_bar/segment_progress_bar.dart +++ b/lib/common/widgets/progress_bar/segment_progress_bar.dart @@ -125,10 +125,10 @@ class RenderProgressBar extends BaseRenderProgressBar { if (segmentEnd > segmentStart || (segmentEnd == segmentStart && segmentStart > 0)) { canvas.drawRect( - Rect.fromLTWH( + Rect.fromLTRB( segmentStart, 0, - segmentEnd == segmentStart ? 2 : segmentEnd - segmentStart, + segmentEnd == segmentStart ? segmentStart + 2 : segmentEnd, size.height, ), paint, @@ -183,13 +183,13 @@ class RenderViewPointProgressBar } } - static const double barHeight = 15.0; - @override - Size computeDryLayout(BoxConstraints constraints) { - return constraints.constrain(Size(constraints.maxWidth, barHeight)); + void performLayout() { + size = constraints.constrain(Size(constraints.maxWidth, _barHeight)); } + static const double _barHeight = 15.0; + @override void paint(PaintingContext context, Offset offset) { final size = this.size; @@ -197,7 +197,7 @@ class RenderViewPointProgressBar final paint = Paint()..style = PaintingStyle.fill; canvas.drawRect( - Rect.fromLTWH(0, 0, size.width, barHeight), + Rect.fromLTRB(0, 0, size.width, _barHeight), paint..color = Colors.grey[600]!.withValues(alpha: 0.45), ); @@ -241,11 +241,11 @@ class RenderViewPointProgressBar } canvas.drawRect( - Rect.fromLTWH( + Rect.fromLTRB( segmentStart, 0, - segmentEnd == segmentStart ? 2 : segmentEnd - segmentStart, - barHeight + height, + segmentEnd == segmentStart ? segmentStart + 2 : segmentEnd, + _barHeight + height, ), paint, ); @@ -255,7 +255,7 @@ class RenderViewPointProgressBar : (segmentStart - prevStart - textPainter.width) / 2 + prevStart + 1; - final textY = (barHeight - textPainter.height) / 2; + final textY = (_barHeight - textPainter.height) / 2; textPainter.paint(canvas, Offset(textX, textY)); } } @@ -356,12 +356,7 @@ class BaseRenderProgressBar extends RenderBox { @override void performLayout() { - size = computeDryLayout(constraints); - } - - @override - Size computeDryLayout(BoxConstraints constraints) { - return constraints.constrain(Size(constraints.maxWidth, height)); + size = constraints.constrain(Size(constraints.maxWidth, height)); } @override diff --git a/lib/common/widgets/progress_bar/video_progress_indicator.dart b/lib/common/widgets/progress_bar/video_progress_indicator.dart index 6c3d15424..2f121f060 100644 --- a/lib/common/widgets/progress_bar/video_progress_indicator.dart +++ b/lib/common/widgets/progress_bar/video_progress_indicator.dart @@ -113,14 +113,7 @@ class RenderProgressBar extends RenderBox { @override void performLayout() { - size = computeDryLayout(constraints); - } - - @override - Size computeDryLayout(BoxConstraints constraints) { - return constraints.constrain( - Size(constraints.maxWidth, _radius), - ); + size = constraints.constrain(Size(constraints.maxWidth, _radius)); } @override @@ -130,11 +123,11 @@ class RenderProgressBar extends RenderBox { final paint = Paint()..style = .fill; canvas.clipRect( - .fromLTWH(0, size.height - height, size.width, height), + .fromLTRB(0, size.height - height, size.width, size.height), ); final radius = Radius.circular(_radius); - final rect = Rect.fromLTWH(0, 0, size.width, size.height); + final rect = Rect.fromLTRB(0, 0, size.width, size.height); final rrect = RRect.fromRectAndCorners( rect, bottomLeft: radius, @@ -147,8 +140,8 @@ class RenderProgressBar extends RenderBox { canvas.drawRRect(rrect, paint..color = _color); } else { final w = size.width * progress; - final left = Rect.fromLTWH(0, 0, w, size.height); - final right = Rect.fromLTWH(w, 0, size.width - w, size.height); + final left = Rect.fromLTRB(0, 0, w, size.height); + final right = Rect.fromLTRB(w, 0, size.width, size.height); canvas ..clipRRect(rrect) ..drawRect(left, paint..color = _color) diff --git a/lib/pages/audio/view.dart b/lib/pages/audio/view.dart index 2457ec966..b9f9d5c9d 100644 --- a/lib/pages/audio/view.dart +++ b/lib/pages/audio/view.dart @@ -741,7 +741,7 @@ class _AudioPageState extends State { final baseBarColor = colorScheme.brightness.isDark ? const Color(0x33FFFFFF) : const Color(0x33999999); - final child = Obx( + return Obx( () => ProgressBar( progress: _controller.position.value, total: _controller.duration.value, @@ -757,13 +757,6 @@ class _AudioPageState extends State { onSeek: _onSeek, ), ); - if (PlatformUtils.isDesktop) { - return MouseRegion( - cursor: SystemMouseCursors.click, - child: child, - ); - } - return child; } Widget _buildDuration(ColorScheme colorScheme) { diff --git a/lib/pages/live_room/view.dart b/lib/pages/live_room/view.dart index cd0c8f412..40decd70c 100644 --- a/lib/pages/live_room/view.dart +++ b/lib/pages/live_room/view.dart @@ -964,10 +964,10 @@ class _BorderClipper extends CustomClipper { @override Rect getClip(Size size) { - return Rect.fromLTWH( + return Rect.fromLTRB( isLeft ? 0 : size.width / 2, 0, - size.width / 2, + isLeft ? size.width / 2 : size.width, size.height, ); } diff --git a/lib/pages/video/reply_new/view.dart b/lib/pages/video/reply_new/view.dart index 88851906d..2a47e22bf 100644 --- a/lib/pages/video/reply_new/view.dart +++ b/lib/pages/video/reply_new/view.dart @@ -16,6 +16,7 @@ import 'package:PiliPlus/models/common/publish_panel_type.dart'; import 'package:PiliPlus/models/dynamics/result.dart' show FilePicModel; import 'package:PiliPlus/pages/common/publish/common_rich_text_pub_page.dart'; import 'package:PiliPlus/pages/dynamics_mention/controller.dart'; +import 'package:PiliPlus/pages/emote/controller.dart'; import 'package:PiliPlus/pages/emote/view.dart'; import 'package:PiliPlus/pages/video/controller.dart'; import 'package:PiliPlus/pages/video/reply_search_item/view.dart'; @@ -62,7 +63,9 @@ class _ReplyPageState extends CommonRichTextPubPageState { @override void dispose() { - Get.delete(); + Get + ..delete() + ..delete(); super.dispose(); } diff --git a/lib/plugin/pl_player/view.dart b/lib/plugin/pl_player/view.dart index b79a6803d..9c8b2407d 100644 --- a/lib/plugin/pl_player/view.dart +++ b/lib/plugin/pl_player/view.dart @@ -2669,7 +2669,7 @@ class _VideoShotImageState extends State { void _setRect(double width, double height) { _size = Size(width, height); - _dstRect = Rect.fromLTWH(0, 0, width, height); + _dstRect = Rect.fromLTRB(0, 0, width, height); _rrect = RRect.fromRectAndRadius(_dstRect, const Radius.circular(10)); } diff --git a/lib/plugin/pl_player/widgets/bottom_control.dart b/lib/plugin/pl_player/widgets/bottom_control.dart index f58851767..195625273 100644 --- a/lib/plugin/pl_player/widgets/bottom_control.dart +++ b/lib/plugin/pl_player/widgets/bottom_control.dart @@ -56,36 +56,6 @@ class BottomControl extends StatelessWidget { final thumbGlowColor = primary.withAlpha(80); final bufferedBarColor = primary.withValues(alpha: 0.4); - Widget progressBar() { - final child = Obx(() { - final int value = controller.sliderPositionSeconds.value; - final int max = controller.durationSeconds.value.inSeconds; - return ProgressBar( - progress: Duration(seconds: value), - buffered: Duration(seconds: controller.bufferedSeconds.value), - total: Duration(seconds: max), - progressBarColor: primary, - baseBarColor: const Color(0x33FFFFFF), - bufferedBarColor: bufferedBarColor, - thumbColor: primary, - thumbGlowColor: thumbGlowColor, - barHeight: 3.5, - thumbRadius: 7, - thumbGlowRadius: 25, - onDragStart: onDragStart, - onDragUpdate: (e) => onDragUpdate(e, max), - onSeek: (e) => onSeek(e, max), - ); - }); - if (PlatformUtils.isDesktop) { - return MouseRegion( - cursor: SystemMouseCursors.click, - child: child, - ); - } - return child; - } - return Padding( padding: const EdgeInsets.fromLTRB(10, 0, 10, 12), child: Column( @@ -100,7 +70,29 @@ class BottomControl extends StatelessWidget { clipBehavior: Clip.none, alignment: Alignment.bottomCenter, children: [ - progressBar(), + Obx(() { + final int value = controller.sliderPositionSeconds.value; + final int max = + controller.durationSeconds.value.inSeconds; + return ProgressBar( + progress: Duration(seconds: value), + buffered: Duration( + seconds: controller.bufferedSeconds.value, + ), + total: Duration(seconds: max), + progressBarColor: primary, + baseBarColor: const Color(0x33FFFFFF), + bufferedBarColor: bufferedBarColor, + thumbColor: primary, + thumbGlowColor: thumbGlowColor, + barHeight: 3.5, + thumbRadius: 7, + thumbGlowRadius: 25, + onDragStart: onDragStart, + onDragUpdate: (e) => onDragUpdate(e, max), + onSeek: (e) => onSeek(e, max), + ); + }), if (controller.enableBlock && videoDetailController.segmentProgressList.isNotEmpty) Positioned( diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index 70f20a2af..2f4d20bb3 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -99,7 +99,7 @@ abstract final class Utils { static Future get sharePositionOrigin async { if (await isIpad) { final size = Get.size; - return Rect.fromLTWH(0, 0, size.width, size.height / 2); + return Rect.fromLTRB(0, 0, size.width, size.height / 2); } return null; }