{"id":241,"date":"2020-12-26T08:41:27","date_gmt":"2020-12-26T08:41:27","guid":{"rendered":"http:\/\/www.kowanas.com\/coding\/?p=241"},"modified":"2020-12-26T09:14:56","modified_gmt":"2020-12-26T09:14:56","slug":"bloc-2","status":"publish","type":"post","link":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/","title":{"rendered":"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC"},"content":{"rendered":"\n<p>BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc124\uba85\uacfc \ud568\uaed8 \uad6c\ud604\ud558\ub294 \ucf54\ub4dc\ub294 <a href=\"https:\/\/github.com\/Kowanas\/idea_market\">github repository<\/a>\uc5d0 \uc788\uace0 \ubcf8 \uae00\uc740 <a href=\"https:\/\/github.com\/Kowanas\/idea_market\/commit\/0126e416240cec2878c27fdefeb3678f05a8094c\">commit 0126e41<\/a>\uae30\uc900\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>\ud639\uc2dc \uacf5\ubd80\ub97c \ud568\uaed8 \ud558\uc2dc\ub294 \ubd84\uc740 github\uc5d0\uc11c project\ub97c fork\ud558\uc154\ub3c4 \ub418\uace0 watch\ud558\uc2dc\uba74 \uc81c\uac00 \ubc29\ud5a5\uc744 \uc7a1\ub294\ub370 \ub3c4\uc6c0\uc774 \ub420\uac83 \uac19\uc2b5\ub2c8\ub2e4. Star\ub3c4 \ud574\uc8fc\uc2dc\uba74 \uac10\uc0ac\ud558\uad6c\uc694.<\/strong><\/p><\/blockquote>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"381\" height=\"83\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png\" alt=\"\" class=\"wp-image-244\" srcset=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png 381w, https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40-300x65.png 300w\" sizes=\"auto, (max-width: 381px) 100vw, 381px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Why BLOC<\/h2>\n\n\n\n<p>BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>MVVM, Redux \ub4f1 Presentation\uacfc Business Logic\uc744 \ubd84\ub9ac\ud558\ub294 \ub2e4\uc591\ud55c Architecture\ub4e4\uc774 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc9c1\uc811 \ub9cc\ub4e4\uc5b4\ub3c4 \ub418\uc9c0\ub9cc  Framework\ubcc4\ub85c  Library\uac00 \uad6c\ube44\ub418\uc5b4 \uc788\uace0 \uc608\uc81c\uac00 \ub9ce\uc740 \uac83\uc744 \uc0ac\uc6a9\ud558\ub294\uac8c \ud6a8\uc728\uc131\uc774 \ub192\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>Flutter\uc5d0 \uc788\uc5b4 BLOC\uac00 \uadf8\ub7ec\ud55c Architecture\uc911\uc5d0 \ud558\ub098\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub798\uc11c \uc800\ub294 BLOC\ub97c \uc0ac\uc6a9\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">BLOC Architecture<\/h2>\n\n\n\n<figure class=\"wp-block-image is-style-default\"><img decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/11\/image-2.png\" alt=\"BLOC architecture\"\/><\/figure>\n\n\n\n<p>BLOC\ub294 Software \uad6c\uc870\ub97c UI, BLOC \uadf8\ub9ac\uace0 DATA\ub85c \uc5ed\ud560\uc744 \ub098\ub204\ub294 Architecture\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc5ed\ud560\uc740 \ub2e8\uc5b4 \uadf8\ub300\ub85c UI, Business Logic, Data \uc5ed\ud560\ub85c \ub098\ub204\ub294 \uac83\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub9ac\uace0 \ub2e4\uc74c\uc740 \uac01 \uc5ed\ud560\uac04\uc5d0 Interface\ub4e4\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>states : BLOC\uc758 State\ub97c UI\uc5d0 \uc804\ub2ec\ud558\uba74 UI\ub294 \uc5ec\uae30\uc5d0 \ub9de\uac8c UI\ub97c \uad6c\uc131\ud569\ub2c8\ub2e4.<\/li><li>events : UI\ub85c\ubd80\ud130 Interaction\uc5d0 \uc758\ud55c Event\ub97c BLOC\uc5d0 \uc804\ub2ec\ud569\ub2c8\ub2e4.<\/li><li>request and response : BLOC\ub294 Data\ub97c handling\ud569\ub2c8\ub2e4. request\uc640 response\uac00 \uc788\ub2e4\ub294 \uac83\uc740 async (\ube44\ub3d9\uae30) \uc801\uc778 \uad6c\uc870\ub97c \ud3ec\ud568\ud568\uc744 \uc758\ubbf8\ud569\ub2c8\ub2e4.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">flutter_bloc import \ud558\uae30<\/h2>\n\n\n\n<p>flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294 \uc6b0\ub9ac\ub294 bloc\ub9d0\uace0 flutter_bloc \ub97c import\ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<p><a href=\"https:\/\/pub.dev\/packages\/flutter_bloc\/install\">flutter_bloc\uc758 install \uc815\ubcf4 \ud398\uc774\uc9c0<\/a> \uac00\uc11c \uc55e\uc11c <a href=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/25\/pubget\/\">Chapter #4 pubget for packages<\/a>\uc5d0\uc11c \uc124\uba85\ud55c\ub300\ub85c pubspec.yaml\uc5d0 \ucd94\uac00\ud558\uace0 pub get \ud574\uc90d\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-38.png\" alt=\"flutter BLOC library dependency\" class=\"wp-image-242\" width=\"264\" height=\"107\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">idea note \uc608\uc81c \ucf54\ub4dc\uc640 \ud30c\uc77c \uad6c\uc131<\/h2>\n\n\n\n<p>\uc9c0\ub09c <a href=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/12\/routes\/\">Chapter #3 Routes<\/a>\uc5d0\uc11c \ud3f4\ub354\uc640 UI \ud30c\uc77c\ub4e4\uc744 \uad6c\uc131\ud588\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ucf54\ub4dc\ub294 \uc55e\uc11c \uc774\uc57c\uae30\ud55c <a href=\"https:\/\/github.com\/Kowanas\/idea_market\">github repository<\/a>\uc5d0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>BLOC\ub97c \uad6c\ud604\ud558\uae30 \uc704\ud574 bloc\uc640 model \ud3f4\ub354\uc5d0 \ube68\uac04\uc0c9\uc73c\ub85c \ud45c\uc2dc\ud55c \ud30c\uc77c\ub4e4\uc744 \ucd94\uac00\ud588\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-39.png\" alt=\"\" class=\"wp-image-243\" width=\"366\" height=\"470\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">IdeaBloc<\/h2>\n\n\n\n<p>bloc\ub294 data\uc640 \uc5f0\uacb0\ub418\uace0 event\ub97c \ucc98\ub9ac\ud558\uc5ec state\ub97c \uad00\ub9ac\ud558\ub294 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-41.png\" alt=\"BLOC \uc608\uc81c\" class=\"wp-image-245\" width=\"583\" height=\"559\" srcset=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-41.png 490w, https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-41-300x288.png 300w\" sizes=\"auto, (max-width: 583px) 100vw, 583px\" \/><\/figure>\n\n\n\n<p>\uc911\uc694\ud55c \ubd80\ubd84\ub4e4\uc744 \ube68\uac04\uc0c9\uc73c\ub85c \ud45c\uc2dc\ud558\uace0 \uc22b\uc790\ub97c \uc801\uc5c8\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub9ac\uace0 \ub2e4\uc74c\uc740 \uadf8 \uc22b\uc790\uc5d0 \ub300\ud55c \uac01 \uc124\uba85\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Bloc\ub97c \uc0c1\uc18d \ubc1b\uc2b5\ub2c8\ub2e4. \uc774 \ub54c Bloc\uc5d0 \uc801\uc6a9\ud560 Event, State type\uc744 \uc815\uc758\ud569\ub2c8\ub2e4.  \uc608\uc81c\uc5d0\uc11c \uc0ac\uc6a9\ud55c IdeaEvent\uc640 IdeaState\ub294 \uc544\ub798\uc5d0 \uc124\uba85\ub429\ub2c8\ub2e4.<\/li><li>Event\ub97c \ucc98\ub9ac\ud574\uc8fc\uae30 \uc704\ud574\uc11c \uad6c\ud604\ud574\uc57c\ud558\ub294 Bloc\uc758 abstract method\uc785\ub2c8\ub2e4. <\/li><li><code>if(event is IdeaEventFetching)<\/code> event\uac00 IdeaEventFetching\uc778 \uacbd\uc6b0\uc784\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc989, IdeaEventFetching\uc774 class\uc774\uaca0\uc8e0. <\/li><li>Data Fetching \ucc98\ub9ac\ub97c \ud558\uace0 \ub098\uba74 \uc0c1\ud0dc\ub97c update\ud569\ub2c8\ub2e4. yield \ub97c \ud1b5\ud574 Stream\uc5d0 state\ub97c \ucd9c\ub825\ud574\uc90d\ub2c8\ub2e4. \uadf8\ub798\uc11c mapEventToState\uc758 type\uc774 Stream\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.<\/li><li>Bloc\ub294 model\ub97c ineterfacing\ud558\ubbc0\ub85c repository\ub97c \uac16\ub3c4\ub85d \ud588\uc2b5\ub2c8\ub2e4.<\/li><li>event\uac00 IdeaEventFetching\uc77c\ub54c ideaRepository\uac00 data\ub97c \uac00\uc838\uc624\ub3c4\ub85d \ud569\ub2c8\ub2e4.<\/li><li>data\ub294 network\uc73c\ub85c\ubd80\ud130 \uac00\uc838\uc62c \uc218\ub3c4 \uc788\uace0 \uc2dc\uac04\uc774 \uac78\ub9ac\uac8c \ub418\ub294\ub370 \uc774\ub97c \uae30\ub2e4\ub9b0\ud6c4\uc5d0 \ub2e4\uc74c\uc744 \ucc98\ub9ac\ud574\uc57c \ud558\ubbc0\ub85c await\ub97c \ud558\uac8c \ud569\ub2c8\ub2e4.<\/li><li>\uadf8\ub9ac\uace0 stream\uc744 \uc704\ud574 yield\ub97c \uc0ac\uc6a9\ud560 \uacbd\uc6b0 async*\ub97c \ubd99\uc5ec\uc57c \ud569\ub2c8\ub2e4.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">IdeaState<\/h2>\n\n\n\n<p>\ub2e4\uc74c\uc740 State \ucf54\ub4dc\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-42.png\" alt=\"\" class=\"wp-image-246\" width=\"586\" height=\"207\" srcset=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-42.png 484w, https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-42-300x106.png 300w\" sizes=\"auto, (max-width: 586px) 100vw, 586px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\"><li>abstract \ub85c IdeaState\ub97c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li><li>\uadf8\ub9ac\uace0 \uac01 State\ub294 IdeaState\ub97c \uc0c1\uc18d\ubc1b\uc2b5\ub2c8\ub2e4. \uc800\ub294 Idea note\uc758 \ucd08\uae30\ud654\uac00 \ub418\uae30\uc804\uacfc \ucd08\uae30\ud654\uac00 \ub05d\ub09c state\ub85c \uad6c\ubd84\ud558\uc5ec \uc815\uc758\ud558\uc600\uc2b5\ub2c8\ub2e4.<\/li><li>\uadf8\ub7fc bloc\uac00 \ub9c9 \uc0dd\uc131\ub420 \ub54c\ub294 \ucd08\uae30\ud654\uac00 \ub418\uae30 \uc804\uc774\uaca0\uc8e0? \uadf8\ub7ec\ubbc0\ub85c IdeaStateNotInitialized() \ub97c initial state\ub85c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">IdeaEvent<\/h2>\n\n\n\n<p>\ub2e4\uc74c\uc740 Event\uc5d0 \ub300\ud55c \uc124\uba85\uc785\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uc774\ubc88 Chapter\ub294 BLOC \ubd80\ubd84\uc774\ubbc0\ub85c Event\ub97c \ucc98\ub9ac\ud558\ub294 \ubd80\ubd84\ub9cc \uc788\uc2b5\ub2c8\ub2e4. <\/p>\n\n\n\n<p>Event\ub97c \ud638\ucd9c\ud558\ub294 \ubd80\ubd84\uc740 UI\ucabd\uc5d0 \uc788\uc0ac\uc624\ub2c8 \ub2e4\ub2e4\uc74c Chapter\uc5d0\uc11c \uc124\uba85\ud558\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized is-style-default\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-44.png\" alt=\"\" class=\"wp-image-248\" width=\"589\" height=\"866\" srcset=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-44.png 449w, https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-44-204x300.png 204w\" sizes=\"auto, (max-width: 589px) 100vw, 589px\" \/><\/figure>\n\n\n\n<ol class=\"wp-block-list\"><li>Event\ub3c4 abstract\ub85c \uc815\uc758\ud569\ub2c8\ub2e4.<\/li><li>\uadf8\ub9ac\uace0 \uac01 Event\ub4e4\uc740 IdeaEvent\ub97c \uc0c1\uc18d \ubc1b\uc2b5\ub2c8\ub2e4.<\/li><li>Event\ub3c4 \ucd94\uc0c1\ud654\ub97c \ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uadf8 event\uac00 \ucc98\ub9ac\ub418\uc5b4\uc57c \ud558\ub294 idea\ub97c \ud3ec\ud568\ud558\ub3c4\ub85d \ud558\uc600\uc2b5\ub2c8\ub2e4.<\/li><li>Fetching\uc758 \uacbd\uc6b0 \ud2b9\uc815 idea\uc640 \uc0c1\uad00\uc774 \uc5c6\uc73c\ub2c8 null\ub85c \ucc98\ub9ac\ud558\uace0 Saving\uc758 \uacbd\uc6b0\uc5d0\ub294 \ud2b9\uc815 idea\ub97c \uc800\uc7a5\ud558\ub294 \uacbd\uc6b0\uc560 \uc0ac\uc6a9\ub418\ub2c8 \ucd94\uac00\ud558\ub3c4\ub85d \ud558\uc600\uc2b5\ub2c8\ub2e4.<\/li><li>mapEventToState\uc5d0\uc11c event\ub97c \ucc98\ub9ac\ud560\ub54c \ud574\ub2f9 attribute\ub97c \uc0ac\uc6a9\ud558\uba74 \ub429\ub2c8\ub2e4.<\/li><\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">\ub9c8\uce58\uba70<\/h2>\n\n\n\n<p>bloc\ub97c \uad6c\ud604\ud55c \uacfc\uc815\uc744 \uc124\uba85\uc744 \ud574\ubd24\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\ub2e4\uc74c Chapter\uc5d0\uc11c Model\uacfc UI\uc5d0 \uc801\uc6a9\ud558\ub294 \uac83\uc744 \uc9c4\ud589\ud558\uac8c \ub418\ub294\ub370 Bloc\ub97c \uc0ac\uc6a9\ud574\uc57c\uc9c0 \ubc18\uc751\ud615 UI\ub97c \uad6c\ud604\ud558\ub294\ub370 \ud070 \ub3c4\uc6c0\uc774 \ub418\ub294 \uac83\uc744 \uc54c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n\n\n\n<p>\uadf8\ub9ac\uace0 \uc911\uac04\uc5d0 Stream, Future, final\ub4f1 dart\uc758 \ub9ce\uc740 \ud2b9\uc774\ud55c \ucee8\uc149\ub4e4\uc740 \ucc28\ucc28 \uc54c\uc544\ubcf4\ub3c4\ub85d \ud558\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. \uc124\uba85\uacfc \ud568\uaed8 \uad6c\ud604\ud558\ub294 \ucf54\ub4dc\ub294 github repository\uc5d0 \uc788\uace0 \ubcf8 \uae00\uc740 commit 0126e41\uae30\uc900\uc785\ub2c8\ub2e4. \ud639\uc2dc \uacf5\ubd80\ub97c \ud568\uaed8 \ud558\uc2dc\ub294 \ubd84\uc740 github\uc5d0\uc11c project\ub97c fork\ud558\uc154\ub3c4 \ub418\uace0 watch\ud558\uc2dc\uba74 \uc81c\uac00 \ubc29\ud5a5\uc744 \uc7a1\ub294\ub370 \ub3c4\uc6c0\uc774 \ub420\uac83 \uac19\uc2b5\ub2c8\ub2e4. Star\ub3c4 \ud574\uc8fc\uc2dc\uba74 \uac10\uc0ac\ud558\uad6c\uc694. Why BLOC BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4. MVVM, &#8230; <a title=\"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC\" class=\"read-more\" href=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/\" aria-label=\"Read more about \ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23,13],"tags":[8,9],"class_list":["post-241","post","type-post","status-publish","format-standard","hentry","category-programming","category-13","tag-flutter","tag-9"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC - Kowana&#039;s coding<\/title>\n<meta name=\"description\" content=\"BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC - Kowana&#039;s coding\" \/>\n<meta property=\"og:description\" content=\"BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/\" \/>\n<meta property=\"og:site_name\" content=\"Kowana&#039;s coding\" \/>\n<meta property=\"article:published_time\" content=\"2020-12-26T08:41:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-12-26T09:14:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png\" \/>\n\t<meta property=\"og:image:width\" content=\"381\" \/>\n\t<meta property=\"og:image:height\" content=\"83\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"kowana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"kowana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/\",\"url\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/\",\"name\":\"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC - Kowana's coding\",\"isPartOf\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png\",\"datePublished\":\"2020-12-26T08:41:27+00:00\",\"dateModified\":\"2020-12-26T09:14:56+00:00\",\"author\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af\"},\"description\":\"BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#primaryimage\",\"url\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png\",\"contentUrl\":\"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png\",\"width\":381,\"height\":83},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.kowanas.com\/coding\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#website\",\"url\":\"https:\/\/www.kowanas.com\/coding\/\",\"name\":\"Kowana's coding\",\"description\":\"\ucc9c\ucc9c\ud788 \ud55c\uac78\uc74c\uc529 \ud55c\uac78\uc74c\uc529 \ucf54\ub529\uc774 \ub300\uc138\ub780\ub2e4 \uc544\ub4e4\uc544\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kowanas.com\/coding\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af\",\"name\":\"kowana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g\",\"caption\":\"kowana\"},\"url\":\"https:\/\/www.kowanas.com\/coding\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC - Kowana's coding","description":"BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/","og_locale":"en_US","og_type":"article","og_title":"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC - Kowana's coding","og_description":"BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.","og_url":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/","og_site_name":"Kowana's coding","article_published_time":"2020-12-26T08:41:27+00:00","article_modified_time":"2020-12-26T09:14:56+00:00","og_image":[{"width":381,"height":83,"url":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png","type":"image\/png"}],"author":"kowana","twitter_card":"summary_large_image","twitter_misc":{"Written by":"kowana","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/","url":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/","name":"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC - Kowana's coding","isPartOf":{"@id":"https:\/\/www.kowanas.com\/coding\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#primaryimage"},"image":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png","datePublished":"2020-12-26T08:41:27+00:00","dateModified":"2020-12-26T09:14:56+00:00","author":{"@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af"},"description":"BLOC \ub294 \uc55e\uc73c\ub85c \uc81c\uac00 Flutter\ub85c App\uc744 \ub9cc\ub4dc\ub294\ub370 \uac00\uc7a5 \uc911\uc694\ud55c \ubd80\ubd84\uc785\ub2c8\ub2e4. BLOC (Business Logic Component)\ub294 UI\uc640 Business logic\uc744 \ubd84\ub9ac\uc2dc\ucf1c\uc8fc\uc5b4 \uc0dd\uc0b0\uc131\uacfc \uc7ac\uc0ac\uc6a9\uc131\uc744 \ub192\ud600\uc8fc\ub294 Architecture\uc785\ub2c8\ub2e4.","breadcrumb":{"@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#primaryimage","url":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png","contentUrl":"https:\/\/www.kowanas.com\/coding\/wp-content\/uploads\/sites\/5\/2020\/12\/image-40.png","width":381,"height":83},{"@type":"BreadcrumbList","@id":"https:\/\/www.kowanas.com\/coding\/2020\/12\/26\/bloc-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.kowanas.com\/coding\/"},{"@type":"ListItem","position":2,"name":"\ub9ac\uc5bc Flutter #5 App \ub9cc\ub4e4\uae30 \u2013 BLOC"}]},{"@type":"WebSite","@id":"https:\/\/www.kowanas.com\/coding\/#website","url":"https:\/\/www.kowanas.com\/coding\/","name":"Kowana's coding","description":"\ucc9c\ucc9c\ud788 \ud55c\uac78\uc74c\uc529 \ud55c\uac78\uc74c\uc529 \ucf54\ub529\uc774 \ub300\uc138\ub780\ub2e4 \uc544\ub4e4\uc544","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kowanas.com\/coding\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/190c7dff713254da763d4fe295be98af","name":"kowana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kowanas.com\/coding\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/80a89adb37a55d376afb969e327758fb?s=96&d=mm&r=g","caption":"kowana"},"url":"https:\/\/www.kowanas.com\/coding\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/241","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/comments?post=241"}],"version-history":[{"count":5,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/241\/revisions"}],"predecessor-version":[{"id":253,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/posts\/241\/revisions\/253"}],"wp:attachment":[{"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/media?parent=241"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/categories?post=241"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kowanas.com\/coding\/wp-json\/wp\/v2\/tags?post=241"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}