feat(cavas): margin, refact toDouble()

Signed-off-by: fufesou <linlong1266@gmail.com>
This commit is contained in:
fufesou 2026-05-06 14:19:43 +08:00
parent 996f0ad99e
commit adf63f67b5
3 changed files with 22 additions and 12 deletions

View file

@ -1125,7 +1125,11 @@ class _DisplayMenuState extends State<_DisplayMenu> {
final scrollVisible = data['scrollVisible'] as bool;
final groupValue = data['scrollStyle'] as String;
final edgeScrollEdgeThickness =
(data['edgeScrollEdgeThickness'] as int?) ?? 0;
((data['edgeScrollEdgeThickness'] as int?) ??
EdgeThicknessControl.kMin.round())
.clamp(EdgeThicknessControl.kMin.round(),
EdgeThicknessControl.kMax.round())
.toInt();
final supportsRemoteCanvasMargin =
data['supportsRemoteCanvasMargin'] as bool;
final remoteCanvasMargin = data['remoteCanvasMargin'] as double;

View file

@ -62,18 +62,21 @@ class CanvasCoords {
static CanvasCoords fromJson(Map<String, dynamic> json) {
final model = CanvasCoords();
model.x = json['x'];
model.y = json['y'];
model.scale = json['scale'];
model.scrollX = json['scrollX'];
model.scrollY = json['scrollY'];
model.x = (json['x'] ?? 0).toDouble();
model.y = (json['y'] ?? 0).toDouble();
model.scale = (json['scale'] ?? 1).toDouble();
model.scrollX = (json['scrollX'] ?? 0).toDouble();
model.scrollY = (json['scrollY'] ?? 0).toDouble();
model.displayWidth = (json['displayWidth'] ?? 0).toDouble();
model.displayHeight = (json['displayHeight'] ?? 0).toDouble();
model.paddingX = (json['paddingX'] ?? 0).toDouble();
model.paddingY = (json['paddingY'] ?? 0).toDouble();
model.scrollStyle =
ScrollStyle.fromJson(json['scrollStyle'], ScrollStyle.scrollauto);
model.size = Size(json['size']['w'], json['size']['h']);
model.size = Size(
(json['size']['w'] ?? 0).toDouble(),
(json['size']['h'] ?? 0).toDouble(),
);
return model;
}
@ -1461,7 +1464,8 @@ class InputModel {
if (e is PointerScrollEvent) {
final rawDx = e.scrollDelta.dx;
final rawDy = e.scrollDelta.dy;
final dominantDelta = rawDx.abs() > rawDy.abs() ? rawDx.abs() : rawDy.abs();
final dominantDelta =
rawDx.abs() > rawDy.abs() ? rawDx.abs() : rawDy.abs();
final isSmooth = dominantDelta < 1;
final nowUs = DateTime.now().microsecondsSinceEpoch;
final dtUs = _lastWheelTsUs == 0 ? 0 : nowUs - _lastWheelTsUs;

View file

@ -2226,14 +2226,16 @@ class CanvasModel with ChangeNotifier {
}
final sessionValue = await bind.sessionGetFlutterOption(
sessionId: sessionId, k: kOptionRemoteCanvasMargin);
if (_remoteCanvasMarginInitialized || !supportsRemoteCanvasMargin) {
return;
}
final defaultValue =
bind.mainGetUserDefaultOption(key: kOptionRemoteCanvasMargin);
final value =
sessionValue?.isNotEmpty == true ? sessionValue : defaultValue;
_remoteCanvasMargin =
(double.tryParse(value ?? '') ?? 0)
.clamp(0, kMaxRemoteCanvasMargin)
.toDouble();
_remoteCanvasMargin = (double.tryParse(value ?? '') ?? 0)
.clamp(0, kMaxRemoteCanvasMargin)
.toDouble();
_remoteCanvasMarginInitialized = true;
}