feat(cavas): margin, simple refactor

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou 2026-05-06 19:08:20 +08:00
parent adf63f67b5
commit 0ee87d5db5
2 changed files with 22 additions and 3 deletions

View file

@ -941,6 +941,7 @@ class _DisplayMenu extends StatefulWidget {
class _DisplayMenuState extends State<_DisplayMenu> {
final RxInt _customPercent = 100.obs;
double? _remoteCanvasMarginPreview;
late final ScreenAdjustor _screenAdjustor = ScreenAdjustor(
id: widget.id,
ffi: widget.ffi,
@ -1132,7 +1133,11 @@ class _DisplayMenuState extends State<_DisplayMenu> {
.toInt();
final supportsRemoteCanvasMargin =
data['supportsRemoteCanvasMargin'] as bool;
final remoteCanvasMargin = data['remoteCanvasMargin'] as double;
final savedRemoteCanvasMargin = data['remoteCanvasMargin'] as double;
final remoteCanvasMargin =
(_remoteCanvasMarginPreview ?? savedRemoteCanvasMargin)
.clamp(0, kMaxRemoteCanvasMargin)
.toDouble();
final hasVisibleControls = scrollVisible || supportsRemoteCanvasMargin;
if (!hasVisibleControls) {
@ -1158,7 +1163,16 @@ class _DisplayMenuState extends State<_DisplayMenu> {
onChangeRemoteCanvasMargin(double? value) async {
if (value == null) return;
_remoteCanvasMarginPreview =
value.clamp(0, kMaxRemoteCanvasMargin).toDouble();
state.setState(() {});
}
onChangeRemoteCanvasMarginEnd(double value) async {
_remoteCanvasMarginPreview =
value.clamp(0, kMaxRemoteCanvasMargin).toDouble();
await widget.ffi.canvasModel.setRemoteCanvasMargin(value);
_remoteCanvasMarginPreview = null;
state.setState(() {});
}
@ -1217,6 +1231,7 @@ class _DisplayMenuState extends State<_DisplayMenu> {
min: 0,
max: kMaxRemoteCanvasMargin,
onChanged: onChangeRemoteCanvasMargin,
onChangeEnd: onChangeRemoteCanvasMarginEnd,
colorScheme: colorScheme,
),
),
@ -2796,6 +2811,7 @@ Widget _buildPointerTrackWidget(Widget child, FFI? ffi) {
class EdgeThicknessControl extends StatelessWidget {
final double value;
final ValueChanged<double>? onChanged;
final ValueChanged<double>? onChangeEnd;
final ColorScheme? colorScheme;
final double min;
final double max;
@ -2805,6 +2821,7 @@ class EdgeThicknessControl extends StatelessWidget {
Key? key,
required this.value,
this.onChanged,
this.onChangeEnd,
this.colorScheme,
this.min = kMin,
this.max = kMax,
@ -2843,6 +2860,7 @@ class EdgeThicknessControl extends StatelessWidget {
semanticFormatterCallback: (double newValue) =>
"${newValue.round()}$unit",
onChanged: onChanged,
onChangeEnd: onChangeEnd,
),
),
);

View file

@ -73,9 +73,10 @@ class CanvasCoords {
model.paddingY = (json['paddingY'] ?? 0).toDouble();
model.scrollStyle =
ScrollStyle.fromJson(json['scrollStyle'], ScrollStyle.scrollauto);
final sizeMap = json['size'];
model.size = Size(
(json['size']['w'] ?? 0).toDouble(),
(json['size']['h'] ?? 0).toDouble(),
(sizeMap?['w'] ?? 0).toDouble(),
(sizeMap?['h'] ?? 0).toDouble(),
);
return model;
}