import 'package:fis_measure/interfaces/enums/display_mode.dart'; class LayoutViewPort { double left = 0; double right = 0; double top = 0; double bottom = 0; DisplayModeEnum displayFormat = DisplayModeEnum.Normal; LayoutViewPort(); factory LayoutViewPort.fromJson(Map map) { final instance = LayoutViewPort(); instance.bottom = _convertItemValue(map['Bottom']); instance.top = _convertItemValue(map['Top']); instance.left = _convertItemValue(map['Left']); instance.right = _convertItemValue(map['Right']); instance.displayFormat = _convertFormat(map['Format']); return instance; } static double _convertItemValue(dynamic val) { if (val == null) return 0.0; if (val is String) { return double.tryParse(val) ?? 0.0; } else if (val is num) { return val.toDouble(); } return 0.0; } static DisplayModeEnum _convertFormat(dynamic val) { if (val == null || val is! String) return DisplayModeEnum.Normal; for (var item in DisplayModeEnum.values) { if (val == item.name) { return item; } } return DisplayModeEnum.Normal; } }