Cookie ã®äœ¿çšã«ã€ããŠ.æ¬ãµã€ãã§ã¯ãåºæ¬æ©èœã®æäŸã«å¿ èŠãªå¿ é Cookie ã䜿çšããŠããŸããããã«ãåæããã ããå Žåã«éããã¢ã¯ã»ã¹è§£æ Cookie ãå©çšããŠå©çšç¶æ³ãææ¡ãããµãŒãã¹æ¹åã«åœ¹ç«ãŠãŸãã詳ãã㯠.
ãã®ããŒã«ã¯äœ¿ããããã£ãã§ããïŒ
ãã£ãŒãããã¯ã¯æ¹åã«åœ¹ç«ã¡ãŸã
å°JSONæ°æ®èªåšèœ¬æ¢äžºDartæ°æ®æš¡å类代ç ïŒéçšäºFlutter/DartåŒåïŒæ¯æç©ºå®å šäžåµå¥ç»æã
æŠèŠ
解決ã§ãã課é¡ãåŠçã®ä»çµã¿ãããŒã¿ã®ç¯å²ã確èªã§ããŸãã
JSONâDartã¯ã©ã¹å€æã¯ãå ¥åããJSONãªããžã§ã¯ããŸãã¯é åã®åœ¢ãèªã¿åãã察å¿ããDartã®åå®çŸ©ãã¢ãã«ã³ãŒããçæããããŒã«ã§ããAPIã¬ã¹ãã³ã¹ã®é ç®ãæäœæ¥ã§ã¯ã©ã¹ã«åãåã«ãæ§é ãèŠãã圢ã«ããŠäœæ¥ã®ãããå°ãäœããŸããJSONã®ããŒã¯ããããã£åã«ãæååã»æ°å€ã»çåœå€ã»é åã»å ¥ãåã®ãªããžã§ã¯ãã¯ããããã®åãé¢é£ããåã«åæ ãããŸããé åå ã«ãªããžã§ã¯ããããã°ããã®èŠçŽ ã®æ§é ãã¢ãã«ã«å«ãŸããŸãã
JSONã¯ããŒã¿äº€æã«äœ¿ãããã¹ã圢åŒã§ããDartã§ã¯JSONããã³ãŒããããšããªããžã§ã¯ãã¯ããããé
åã¯ãªã¹ããšããŠæ±ãããŸããã¢ãã«ã¯ã©ã¹ãçšæãããšãã¢ããªå
ã§å€ãåä»ãã®ãã£ãŒã«ããšããŠæ±ãããããªããŸããDartå
¬åŒè³æã§ã¯ãJSONæååãšDartãªããžã§ã¯ãã®å€æã« dart:convert ãæ¡å
ããæ³šéã䜿ãçææ¹åŒãšã㊠json_serializable ã玹ä»ããŠããŸãã
çæãããåã¯ã貌ãä»ãããµã³ãã«ã«çŸããå€ããæšè«ãããŸããããšãã° {"name":"Mika","age":28,"active":true} ãªããæååã»æŽæ°ã»çåœå€ã«å¯Ÿå¿ãããã£ãŒã«ãæ§é ã確èªã§ããŸãããªãã·ã§ã³ã§åå®çŸ©ã ãã«çµãã»ããFreezedäºæãHiveã¢ããã¿ãŒãJSONã¢ãããŒã·ã§ã³ãfinalããããã£ãcopyWith ã®çæãåãæ¿ããããŸããåæèšå®ã§ã¯nullå®å
šæ§ãšJSONã¢ãããŒã·ã§ã³ãæå¹ã§ãã
Dartã®nullå®å
šæ§ã§ã¯ãéåžžã®åã¯nullãåãåãããååã« ? ãä»ãããšnullãèš±ãåã«ãªããŸãããµã³ãã«ã§nullãçç¥é
ç®ãã©ã®ããã«è¡šçŸãããããèŠãªããèšå®ã確èªããŠãã ãããããã§åŸãããã®ã¯å
¥åäŸã«åºã¥ãã³ãŒãæ¡ã§ããããµãŒããŒãè¿ãããå
šãã¿ãŒã³ãå¿
é æ¡ä»¶ãèªåã§ææ¡ãããã®ã§ã¯ãããŸããã
äœ¿ãæ¹
æé ã«æ²¿ã£ãŠæäœããäŸã䜿ã£ãŠå ¥åãšçµæã確èªããŸãã
å®éã®APIã¬ã¹ãã³ã¹ãããå¿ èŠãªããŒãå ¥ãåãé åèŠçŽ ãå«ãŸããæå¹ãªJSONã貌ãä»ããŸããè€æ°ã¬ã³ãŒãã§é ç®ãç°ãªãå Žåã¯ããã®éããåãããµã³ãã«ãé åã«ãŸãšãããšç¢ºèªãããããªããŸãã
ã«ãŒãã®ååããããžã§ã¯ãå ã§äœ¿ãååã«å€æŽããŸããnullå®å šæ§ãJSONã¢ãããŒã·ã§ã³ãªã©åºæ¬èšå®ã確èªããå¿ èŠãªã詳现èšå®ã§åå®çŸ©ã®ã¿ãFreezedãHiveãfinalãcopyWithãéžã³ãŸããéžæã«ãã£ãŠåºåå 容ãå€ãããŸãã
å
¥ãåã®åããªã¹ãã®èŠçŽ åãããããã£åãnullãèš±ãåãèŠçŽããŸããåé¡ãªããã°ã³ãŒããã³ããŒããããååã䜿ã£ã .dart ãã¡ã€ã«ãšããŠããŠã³ããŒãããŸãã
å ¥åã®å€æŽã«å¿ããŠã³ãŒããæŽæ°ãããŸããããã©ãŒããããã¯JSONã®èŠãç®ãæŽããããµã³ãã«ãã¯äŸãèªã¿èŸŒã¿ãŸããæ§æãšã©ãŒãåºãå Žåã¯ãããŒãšæååãäºéåŒçšç¬Šã§å²ã¿ãæ«å°Ÿã®ã«ã³ããã³ã¡ã³ããåãé€ããŠãã ããã
掻çšäŸ
ä»äºãæ¥åžžã®æµãã®äžã§ã®æŽ»ç𿹿³ã玹ä»ããŸãã
ç»é¢ã§äœ¿ãã¬ã¹ãã³ã¹äŸãå ¥åãããã£ãŒã«ãããã¹ãããããŒã¿ã®åãã¢ãã«æ¡ãšããŠç¢ºèªããŸããå®è£ ã«åã蟌ãåã«ãAPI仿§ãšç §ããåãããŠå¿ é é ç®ã倿åŠçã調æŽããŸãã
ãªããžã§ã¯ãã®äžã«ãããã£ãŒã«ãæçްã®é åãããããŒã¿ãå ¥åãã芪åã®åã®é¢ä¿ãäžèЧã§ããã³ãŒãæ¡ã«ããŸããããŒã ã§é ç®ã確èªãããšãã®äžæžããšããŠäœ¿ããŸãã
åå®çŸ©ã®ã¿ã®åºåãšã泚éãFreezedãªã©ã®èšå®ãå€ããåºåãèŠæ¯ã¹ãæ¢åãããžã§ã¯ãã®äŸåé¢ä¿ãã³ãŒãçææé ã«åãæ¡ãéžã¶ææã«ããŸãã
Q&A
ããããçåãè¿·ããããç¹ããŸãšããŠç¢ºèªã§ããŸãã
䜿ããŸãããªããžã§ã¯ãé åãå ¥åãããšãå«ãŸããèŠçŽ ã®åœ¢ããã¢ãã«æ§é ãçæãããŸããã«ãŒãååã¯ãããžã§ã¯ãã«åãããŠèšå®ããé åã空ã®å Žåã¯èŠçŽ ã®åãæšæž¬ã§ããªãç¹ã«æ³šæããŠãã ããã
ãµã³ãã«ã«çŸããªãé ç®ããå°æ¥ã®ã¬ã¹ãã³ã¹åœ¢åŒã¯æšæž¬ã§ããŸãããç°ãªãã¬ã³ãŒãã§é ç®ã®æç¡ãåãå€ããå Žåã¯ãè€æ°ã®ä»£è¡šäŸãé åã«å«ããåºååŸãå¥çŽè³æãšç §åããŠãã ããã
ããããéžæã«å¿ããã³ãŒããçæããŸãããå¿ èŠãªããã±ãŒãžãäŸåé¢ä¿ãã¢ãããŒã·ã§ã³ããã«ãèšå®ãŸã§ã¯ãããžã§ã¯ãã«è¿œå ããŸãããå©çšäžã®ããŒãžã§ã³ãšçææé ãå¥é確èªããŠãã ããã
泚æ
å©çšç¯å²ãçµæã®å¶éãå¿ èŠãªæ³šæç¹ãäºåã«ç¢ºèªããŸãã
åºåã¯å ¥åãµã³ãã«ã®åœ¢ããæšè«ããã³ãŒãèæ¡ã§ãããµã³ãã«ã«ãªãä»»æé ç®ããã£ãŒã«ãããšã®æ¥åã«ãŒã«ãå€ã®ç¯å²ãAPIã®ããŒãžã§ã³å·®ã¯ä¿èšŒãããŸãããåäžã¬ã³ãŒãã ãã§ã¯ãä»ã®å¿çã§çŸããé ç®ãnullã®å¯èœæ§ã衚ããªãããšããããŸãã代衚æ§ã®ããäŸãçšæããåã»null蚱容ã»ãã£ãŒã«ãåãAPIå¥çŽã«ç §ãããŠä¿®æ£ããŠãã ããã
ãã®ããŒã«ã¯Dartã³ãŒãã®ã³ã³ãã€ã«ãã¢ããªäžã®åäœãæ€èšŒããŸãããFreezedãHiveãJSONã¢ãããŒã·ã§ã³ãæå¹ã«ããå Žåã¯ãåºåããããžã§ã¯ãã®äŸåããã±ãŒãžãšçæèšå®ã«åããã確èªããå®éã®ãã«ãããã¹ãã§ç¢ºãããŠãã ãããæ©å¯æ§ã®ããå®ããŒã¿ãå ¥åããå Žåã¯ãçµç¹ã®ããŒã¿åæ±ãã«ãŒã«ã«åŸããå人æ å ±ãèªèšŒæ å ±ãå«ãŸãªããµã³ãã«ã«çœ®ãæããããšãæ€èšããŠãã ããã
é¢é£
é¢é£ããŒã«ãç¹éãå©çšå¯èœãªAPIãæ¢ããŸãã