/* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġ- Ġ 2 0 2 2 ĠB ui js ĠSoftware Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġdev . bui js . kl utter . core . templates Ċ Ċ import Ġdev . bui js . kl utter . core . shared . Dart Field Ċ import Ġdev . bui js . kl utter . core . Kl utter Printer Ċ import Ġdev . bui js . kl utter . core . shared .* Ċ import Ġdev . bui js . kl utter . core . shared . to Camel Case Ċ import Ġdev . bui js . kl utter . core . shared . unwrap From List Ċ Ċ private Ġconst Ġval ĠBR Ġ= Ġ"\ n " Ċ Ċ /** Ċ Ġ* ĠOutput Ġthe Ġmain Ġdart Ġfile Ġwhich Ġdeleg ates Ġplatform Ġcalls Ġto Ġthe ĠKotlin ĠMulti platform Ġcode . Ċ Ġ*/ Ċ internal Ġclass ĠFlutter Adapter ( ĊĠĠĠ Ġprivate Ġval Ġplugin ClassName : ĠString Ġ= Ġ" Adapter ", ĊĠĠĠ Ġprivate Ġval Ġmethod Channel Name : ĠString Ġ= Ġ" KL UT TER ", ĊĠĠĠ Ġprivate Ġval Ġmethods : ĠList < Method >, ĊĠĠĠ Ġprivate Ġval Ġmessages : ĠList < Dart Message >, ĊĠĠĠ Ġprivate Ġval Ġenum er ations : ĠList < Dart Enum >, Ċ ): ĠK l utter Printer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprint (): ĠString Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ' dart : async '; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| import Ġ' package : flutter / services . dart '; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠAutogenerated Ġby ĠK l utter ĠFramework . ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠDo Ġnet Ġedit Ġdirectly , Ġbut Ġrecommended Ġto Ġstore Ġin ĠV CS . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠAdapter Ġclass Ġwhich Ġhandles Ġcommunication Ġwith Ġthe ĠK MP Ġlibrary . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| class Ġ$ plugin ClassName Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġstatic Ġconst ĠMethod Channel Ġ_ channel Ġ= ĠMethod Channel ('$ method Channel Name '); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ methods . join ToString ( BR Ġ+ ĠBR ) Ġ{ Ġit . as Function String () Ġ}} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠAutogenerated Ġby ĠK l utter ĠFramework . ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠDo Ġnet Ġedit Ġdirectly , Ġbut Ġrecommended Ġto Ġstore Ġin ĠV CS . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠWrap s Ġan Ġ[ exception ] Ġif Ġcalling Ġthe Ġplatform Ġmethod Ġhas Ġfailed Ġto Ġbe Ġlogged Ġby Ġthe Ġconsumer . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// ĠOr Ġwraps Ġan Ġ[ object ] Ġof Ġtype ĠT Ġwhen Ġplatform Ġmethod Ġhas Ġreturned Ġa Ġresponse Ġand ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| /// Ġde serialization Ġwas Ġsuccessful . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| class ĠAdapter Response < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠAdapter Response ( this ._ object , Ġthis ._ exception ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġfactory ĠAdapter Response . success ( T Ġt ) Ġ=> ĠAdapter Response ( t , Ġnull ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġfactory ĠAdapter Response . failure ( Exception Ġe ) Ġ=> ĠAdapter Response ( null , Ġe ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ/// The Ġactual Ġobject Ġto Ġreturned ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠT ? Ġ_ object ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġset Ġobject ( T Ġobject ) Ġ=> Ġ_ object Ġ= Ġobject ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠT Ġget Ġobject Ġ=> Ġ_ object !; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ/// Exception Ġwhich Ġoccurred Ġwhen Ġcalling Ġa Ġplatform Ġmethod Ġfailed . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠException ? Ġ_ exception ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġset Ġexception ( Exception Ġe ) Ġ=> Ġ_ exception Ġ= Ġe ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠException Ġget Ġexception Ġ=> Ġ_ exception !; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġbool Ġis Success () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġreturn Ġ_ object Ġ!= Ġnull ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ messages . as Messages String ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ enum er ations . as Enumer ations String ()} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠ Ġprivate Ġfun ĠList < Dart Message >. as Messages String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjoin ToString ( BR Ġ+ ĠBR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessage Printer ( it ). print () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠList < Dart Enum >. as Enumer ations String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjoin ToString ( BR Ġ+ ĠBR ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠEnumeration Printer ( it ). print () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . as Function String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( Dart Kotlin Map . toMap OrNull ( dataType ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" | Ġ Ġstatic ĠFuture < Adapter Response < ${ dataType } >> Ġget Ġ$ command Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġfinal Ġresponse Ġ= Ġawait Ġ_ channel . invoke Method (' ${ command }'); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġfinal Ġjson Ġ= Ġjson Decode ( response ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġreturn ĠAdapter Response . success (${ serializer () }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} Ġcatch Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġreturn ĠAdapter Response . failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠ Ġe Ġis ĠError Ġ? ĠException ( e . stack Trace ) Ġ: Ġe Ġas ĠException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} """. trim Margin () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" | Ġ Ġstatic ĠFuture < Adapter Response < ${ dataType } >> Ġget Ġ$ command Ġasync Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġfinal Ġjson Ġ= Ġawait Ġ_ channel . invoke Method (' ${ command }'); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġreturn ĠAdapter Response . success (${ serializer () }); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} Ġcatch Ġ( e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġreturn ĠAdapter Response . failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠĠĠĠĠ Ġe Ġis ĠError Ġ? ĠException ( e . stack Trace ) Ġ: Ġe Ġas ĠException ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} """. trim Margin () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠMethod . serializer (): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠMaybe Ġget Ġthe Ġdata Ġtype Ġnested Ġwithin Ġ' List < ... >' ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠdataType . unwrap From List () ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġun wrapping Ġreturned ĠdataType Ġthen Ġit Ġis Ġnot Ġa ĠList ĊĠĠĠĠĠĠĠ Ġval Ġis List Ġ= Ġtype Ġ!= ĠdataType ĊĊĠĠĠĠĠĠĠ Ġ// Standard ĠD ART Ġdatatype ĊĠĠĠĠĠĠĠ Ġreturn Ġif ( is List ) Ġtype . asList () Ġelse Ġtype . asString () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . asList () Ġ= Ġif ( Dart Kotlin Map . toMap OrNull ( this ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ" List <$ this >. from ( json . map (( o ) Ġ=> Ġ$ this . fromJson ( o ))) " ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ" List <$ this >. from ( json . map (( o ) Ġ=> Ġo ${ get Cast Method ( this )} )) " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠString . asString () Ġ= Ġif ( Dart Kotlin Map . toMap OrNull ( this ) Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ"$ this . fromJson ( json )" ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ" json ${ get Cast Method ( this )}" ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠPrints Ġall Ġmembers Ġof Ġa Ġclass . Ċ Ġ*/ Ċ internal Ġclass ĠEnumeration Printer ( private Ġval Ġmessage : ĠDart Enum ): ĠK l utter Printer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprint () Ġ= ĊĠĠĠĠĠĠĠ Ġ""" | class Ġ${ message . name } Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġ| final ĠString Ġstring ; ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠ Ġ| const Ġ${ message . name } ._ ( this . string ); ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ${ message . print Values ()} ĊĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġstatic Ġconst Ġnone Ġ= Ġ${ message . name } ._ (' none '); ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ ĊĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġstatic Ġconst Ġvalues Ġ= Ġ[ ${ message . values . join ToString (",") Ġ{ Ġit . to Camel Case ()}} ]; ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ ĊĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ@ override ĊĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ ĠString ĠtoString () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġreturn Ġ'${ message . name }.${ '$ '} string '; ĊĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ ĊĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ${ Enum Extension Printer ( message ). print ()} ĊĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ ĊĠĠĠĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠ Ġprivate Ġfun ĠDart Enum . print Values (): ĠString Ġ= Ġchoose Values () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ Ġstatic Ġconst Ġ${ entry . key . to Camel Case ()} Ġ= Ġ${ name } ._ (' ${ entry . value }'); " Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString ( BR ) Ġ{ Ġit Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠPrints Ġall Ġmembers Ġof Ġa Ġclass . Ċ Ġ*/ Ċ internal Ġclass ĠEnum Extension Printer ( private Ġval Ġmessage : ĠDart Enum ): ĠK l utter Printer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprint () Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġ| Ġ Ġstatic Ġ${ message . name } Ġfrom Json ( String Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġswitch ( value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ${ message . cases ()} ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġdefault : Ġreturn Ġ${ message . name }. none ; ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ| Ġ} ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠ Ġ| Ġ ĠString ? ĠtoJson () Ġ{ ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġswitch ( this ) Ġ{ ĠĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ${ message . serializers ()} ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠĠĠ Ġdefault : Ġreturn Ġnull ; ĊĠĠĠĠĠĠĠ Ġ| ĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ| Ġ Ġ} ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠ Ġprivate Ġfun ĠDart Enum . cases (): ĠString Ġ= Ġchoose Values () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġentry Ġ-> Ġ" ĠĠĠĠĠ Ġcase Ġ\" ${ entry . value }\ ": Ġreturn Ġ${ name }.${ entry . key . to Camel Case ()}; " Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString ( BR ) Ġ{ Ġit Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDart Enum . serializers (): ĠString Ġ= Ġchoose Values () ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġentry Ġ-> Ġ" ĠĠĠĠĠ Ġcase Ġ${ name }.${ entry . key . to Camel Case ()} : Ġreturn Ġ\" ${ entry . value }\ "; " Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString ( BR ) Ġ{ Ġit Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠMerge Ġenum Ġvalues Ġlist Ġto Ġa Ġmap Ġconsisting Ġof Ġthe Ġenumeration Ġkey Ġand ĠJSON Ġvalue Ġ( if Ġpresent ). Ċ Ġ* Ċ Ġ* ĠIf Ġthere Ġare Ġno ĠJSON Ġvalues Ġor Ġthe ĠJSON Ġvalues Ġcount Ġdoes Ġnot Ġmatch Ġthe Ġenumeration Ġkey Ġcount Ċ Ġ* Ġthen Ġa Ġmap Ġof Ġkey Ġto Ġkey Ġis Ġreturned . Ċ Ġ* Ċ Ġ* ĠIf ĠJSON Ġvalue Ġcount Ġis Ġequal Ġto Ġkey Ġcount Ġthen Ġmap Ġof Ġenumeration Ġkey Ġto ĠJSON Ġvalue Ġis Ġreturned . Ċ Ġ*/ Ċ private Ġfun ĠDart Enum . choose Values (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠ Ġval Ġv Ġ= Ġif ( values JSON . size Ġ== Ġvalues . size ) Ġvalues JSON Ġelse Ġvalues ĊĠĠĠ Ġreturn Ġvalues . zip ( v ). toMap () Ċ } Ċ Ċ /** Ċ Ġ* ĠPrints Ġall Ġmembers Ġof Ġa Ġclass . Ċ Ġ*/ Ċ internal Ġclass ĠMessage Printer ( ĊĠĠĠ Ġprivate Ġval Ġmessage : ĠDart Message , Ċ ): ĠK l utter Printer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprint () Ġ= Ġ""" ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠ Ġ| class Ġ${ message . name } Ġ{ ĊĠĠĠĠĠĠĠ Ġ| ĠĠĊĠĠĠĠĠĠĠ Ġ| ${ message . as Constructor String ()} ĊĠĠĠĠĠĠĠ Ġ| ĠĠĊĠĠĠĠĠĠĠ Ġ| ${ Factory Printer ( message ). print ()} ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠ Ġ| ${ message . fields . as Fields String ()} ĊĠĠĠĠĠĠĠ Ġ| ĊĠĠĠĠĠĠĠ Ġ| ${ message . fields . as Serializer String ()} ĠĠĊĠĠĠĠĠĠĠ Ġ| } ĊĠĠĠ Ġ""" . trim Margin () Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠPrints Ġthe Ġclass Ġconstructor Ċ Ġ*/ Ċ private Ġfun ĠDart Message . as Constructor String () Ġ= Ġfields ĊĠĠĠ Ġ. sorted By Ġ{ Ġit . is Optional Ġ} ĊĠĠĠ Ġ. join ToString ( BR ){ Ġ"" ĊĠĠĠĠĠĠĠ Ġ. if Required ( it ) Ġ{ Ġ_, Ġ_ Ġ-> Ġ" required Ġ" Ġ} ĊĠĠĠĠĠĠĠ Ġ. append Ġ{ Ġ_ Ġ-> Ġ" this .${ it . name }," Ġ} Ġ Ġ} ĊĠĠĠ Ġ. let Ġ{ ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠ Ġ| Ġ Ġ$ name ({ ĊĠĠĠĠĠĠĠ Ġ| $ it ĊĠĠĠĠĠĠĠ Ġ| Ġ Ġ}); ĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠPrints Ġthe Ġfactory Ġmethod . Ċ Ġ*/ Ċ internal Ġclass ĠFactory Printer ( ĊĠĠĠ Ġprivate Ġval Ġmessage : ĠDart Message Ċ ): ĠK l utter Printer Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġprint () Ġ= ĊĠĠĠĠĠĠĠ Ġ""" Ġ| factory Ġ${ message . name }. fromJson ( dynamic Ġjson ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġreturn Ġ${ message . name } Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ${ message . fields . join ToString ( BR ) Ġ{ Ġit . as Field String () Ġ}} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| ĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ} ĠĠĠĊĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĊĠĠĠ Ġprivate Ġfun ĠDart Field . as Field String () Ġ= Ġ" ĠĠĠĠĠ Ġ${ name }: Ġ" ĊĠĠĠĠĠĠĠ Ġ. if List ( this ) Ġ{ Ġfield , Ġcurr Ġ-> Ġ Ġfield . asList String ( curr ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Not List ( this ) Ġ{ Ġfield , Ġcurr Ġ-> Ġ Ġfield . asString ( curr ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. append Ġ{ Ġ"," Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDart Field . asList String ( value : ĠString ): ĠString Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ. if Optional ( this ) Ġ{ Ġ_, Ġcurr Ġ-> Ġ"${ curr } json [' ${ name }'] Ġ== Ġnull Ġ? Ġ[] Ġ: Ġ" Ġ} ĊĠĠĠĠĠĠĠ Ġ. append Ġ{ Ġ" List < ${ type } >. from ( json [' ${ name }'] " Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Custom Type ( this ) Ġ{ Ġ_, Ġcurr Ġ-> Ġ"$ curr ${ this . opt ()}. map (( o ) Ġ=> Ġ${ type }. fromJson ( o ))) " Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Standard Type ( this ) Ġ{ Ġ_, Ġcurr Ġ-> Ġ"$ curr ${ this . opt ()}. map (( o ) Ġ=> Ġo ${ get Cast Method ( type )} )) " Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠDart Field . asString ( value : ĠString ): ĠString Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ. if Custom Type ( this ) Ġ{ Ġ_, Ġcurr Ġ-> Ġ"$ curr $ type . fromJson ( json [' ${ name } ']) " Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Standard Type ( this ) Ġ{ Ġ_, Ġcurr Ġ-> Ġ"${ curr } json [' ${ name }'] ${ this . opt ()} ${ get Cast Method ( type )}" Ġ} Ċ Ċ } Ċ Ċ internal Ġfun Ġget Cast Method ( dataType : ĠString ) Ġ= Ġwhen ( Dart Kotlin Map . toMap ( dataType )) Ġ{ ĊĠĠĠ ĠDart Kotlin Map . BOOLEAN Ġ-> Ġ"" ĊĠĠĠ ĠDart Kotlin Map . DOUBLE Ġ-> Ġ". toDouble ()" ĊĠĠĠ ĠDart Kotlin Map . INTEGER Ġ-> Ġ". toInt ()" ĊĠĠĠ ĠDart Kotlin Map . STRING Ġ-> Ġ". toString ()" Ċ } Ċ Ċ /** Ċ Ġ* ĠPrint Ġthe Ġfields Ġof Ġa Ġmessage . Ċ Ġ*/ Ċ private Ġfun ĠList < Dart Field >. as Fields String () Ġ= ĊĠĠĠ Ġsorted By Ġ{ Ġit . is Optional Ġ}. join ToString ( BR ) Ġ{ Ġit . type ĊĠĠĠĠĠĠĠ Ġ. if List ( it ) Ġ{ Ġfield , Ġ_ Ġ-> Ġ" List < ${ field . type }> " Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Optional ( it ) Ġ{ Ġfield , Ġcurr Ġ-> Ġ" Ġ$ curr ? Ġ${ field . name }; " Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Required ( it ) Ġ{ Ġfield , Ġcurr Ġ-> Ġ" Ġfinal Ġ$ curr Ġ${ field . name }; " Ġ} ĊĠĠĠ Ġ} Ċ Ċ private Ġfun ĠString . if List ( ĊĠĠĠ Ġfield : ĠDart Field , ĊĠĠĠ Ġclosure : Ġ( field : ĠDart Field , Ġvalue : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġif ( field . is List ) Ġclosure . invoke ( field , Ġthis ) Ġelse Ġthis Ċ Ċ private Ġfun ĠString . if Not List ( ĊĠĠĠ Ġfield : ĠDart Field , ĊĠĠĠ Ġclosure : Ġ( field : ĠDart Field , Ġvalue : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġif (! field . is List ) Ġclosure . invoke ( field , Ġthis ) Ġelse Ġthis Ċ Ċ private Ġfun ĠString . if Optional ( ĊĠĠĠ Ġfield : ĠDart Field , ĊĠĠĠ Ġclosure : Ġ( field : ĠDart Field , Ġvalue : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġif ( field . is Optional ) Ġclosure . invoke ( field , Ġthis ) Ġelse Ġthis Ċ Ċ private Ġfun ĠString . if Required ( ĊĠĠĠ Ġfield : ĠDart Field , ĊĠĠĠ Ġclosure : Ġ( field : ĠDart Field , Ġvalue : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġif (! field . is Optional ) Ġclosure . invoke ( field , Ġthis ) Ġelse Ġthis Ċ Ċ private Ġfun ĠString . if Custom Type ( ĊĠĠĠ Ġfield : ĠDart Field , ĊĠĠĠ Ġclosure : Ġ( field : ĠDart Field , Ġvalue : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġif ( field . is Custom Type ) Ġclosure . invoke ( field , Ġthis ) Ġelse Ġthis Ċ Ċ private Ġfun ĠString . if Standard Type ( ĊĠĠĠ Ġfield : ĠDart Field , ĊĠĠĠ Ġclosure : Ġ( field : ĠDart Field , Ġvalue : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġif (! field . is Custom Type ) Ġclosure . invoke ( field , Ġthis ) Ġelse Ġthis Ċ Ċ private Ġfun ĠString . append ( ĊĠĠĠ Ġclosure : Ġ( old : ĠString ) Ġ-> ĠString , Ċ ) Ġ= Ġ"$ this ${ closure . invoke ( this )}" Ċ Ċ /** Ċ Ġ* ĠPrint Ġthe ĠtoJson Ġmethod . Ċ Ġ*/ Ċ private Ġfun ĠList < Dart Field >. as Serializer String () Ġ= Ġ""" ĊĠĠĠ Ġ| ĠMap < String , Ġdynamic > ĠtoJson () Ġ{ ĊĠĠĠ Ġ| ĠĠ Ġreturn Ġ{ ĊĠĠĠ Ġ|| ${ join ToString (", $ BR ") Ġ{ Ġ" ĠĠĠĠ Ġ'${ it . name } ': Ġ${ it . maybe Post fix Map ToList () }" Ġ}} ĠĠĠĠĊĠĠĠ Ġ| ĠĠ Ġ}; ĊĠĠĠ Ġ| Ġ} ĠĠĠĊĠĠĠ Ġ""" . trim Margin () Ċ Ċ private Ġfun ĠDart Field . opt () Ġ= Ġif ( is Optional ) Ġ" ?" Ġelse Ġ"" Ċ Ċ private Ġfun ĠDart Field . maybe Post fix Map ToList () Ġ= Ġwhen Ġ{ ĊĊĠĠĠ Ġ! is List Ġ-> Ġname . maybe Post fix Json ( this ) ĊĊĠĠĠ Ġis Custom Type Ġ-> Ġ"$ name ${ opt ()}. map (( o ) Ġ=> Ġo . toJson ()). toList ()" ĊĊĠĠĠ Ġelse Ġ-> Ġ"$ name ${ opt ()}. toList ()" Ċ Ċ } Ċ Ċ private Ġfun ĠString . maybe Post fix Json ( field : ĠDart Field ): ĠString Ġ= ĊĠĠĠ Ġif ( field . is Custom Type ) Ġ"$ this ${ field . opt ()}. toJson ()" Ġelse Ġthis