view_port.dart 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import 'package:fis_measure/interfaces/enums/display_mode.dart';
  2. class LayoutViewPort {
  3. double left = 0;
  4. double right = 0;
  5. double top = 0;
  6. double bottom = 0;
  7. DisplayModeEnum displayFormat = DisplayModeEnum.Normal;
  8. LayoutViewPort();
  9. factory LayoutViewPort.fromJson(Map<String, dynamic> map) {
  10. final instance = LayoutViewPort();
  11. instance.bottom = _convertItemValue(map['Bottom']);
  12. instance.top = _convertItemValue(map['Top']);
  13. instance.left = _convertItemValue(map['Left']);
  14. instance.right = _convertItemValue(map['Right']);
  15. instance.displayFormat = _convertFormat(map['Format']);
  16. return instance;
  17. }
  18. static double _convertItemValue(dynamic val) {
  19. if (val == null) return 0.0;
  20. if (val is String) {
  21. return double.tryParse(val) ?? 0.0;
  22. } else if (val is num) {
  23. return val.toDouble();
  24. }
  25. return 0.0;
  26. }
  27. static DisplayModeEnum _convertFormat(dynamic val) {
  28. if (val == null || val is! String) return DisplayModeEnum.Normal;
  29. for (var item in DisplayModeEnum.values) {
  30. if (val == item.name) {
  31. return item;
  32. }
  33. }
  34. return DisplayModeEnum.Normal;
  35. }
  36. }