import 'package:flutter/material.dart'; import 'package:oc_front/models/resources/resources.dart'; class WorkflowItem extends AbstractItem { // special attributes String? workflowID; WorkflowItem({ this.workflowID, }): super(); @override String get topic => "workflow"; @override deserialize(dynamic data) { try { data = data as Map; } catch (e) { return WorkflowItem(); } var w = WorkflowItem( workflowID: data.containsKey("workflow_id") && data["workflow_id"] != null ? data["workflow_id"] : null, ); w.mapFromJSON(data, WorkflowInstance()); if (w.logo != null) { // get image dimensions var image = Image.network(w.logo!); image.image .resolve(const ImageConfiguration()) .addListener( ImageStreamListener( (ImageInfo info, bool _) { w.width = info.image.width.toDouble(); w.height = info.image.height.toDouble(); })); } return w; } @override Map infos() { return {}; } @override Map serialize() { Map obj ={ "workflow_id": workflowID, }; obj.addAll(toJSON()); return obj; } } class WorkflowInstance extends AbstractInstance { WorkflowInstance(): super(); @override WorkflowInstance deserialize(json) { try { json = json as Map; } catch (e) { return WorkflowInstance(); } var w = WorkflowInstance(); w.mapFromJSON(json, WorkflowPartnership()); return w; } @override Map infos() { return {}; } @override Map serialize() { return toJSON(); } } class WorkflowPartnership extends AbstractPartnerShip { WorkflowPartnership(): super(); @override WorkflowPartnership deserialize(json) { try { json = json as Map; } catch (e) { return WorkflowPartnership(); } var w = WorkflowPartnership(); w.mapFromJSON(json, WorkflowPricing()); return w; } @override Map serialize() { return toJSON(); } } class WorkflowPricing extends AbstractPricing { @override WorkflowPricing deserialize(json) { var w = WorkflowPricing(); w.mapFromJSON(json); return w; } @override Map serialize() { return toJSON(); } }