<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8260673545987087429</id><updated>2026-07-29T06:20:58.123-07:00</updated><category term="angularjs"/><category term="javascript"/><category term="spring"/><category term="vue"/><category term="$apply"/><category term="$eval"/><category term="$parse"/><category term="Prototype"/><category term="array"/><category term="array-like object"/><category term="array.prototype.map"/><category term="basic"/><category term="closure"/><category term="controller"/><category term="directive"/><category term="expression"/><category term="file download"/><category term="isolate scope"/><category term="python"/><category term="security.xml"/><category term="spring security"/><category term="transaction"/><category term="vuejs"/><category term="클로져"/><title type='text'>자몽이랑꼬부기</title><subtitle type='html'>For Programming Code!!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>96</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-194340455434243268</id><published>2026-07-29T06:19:50.824-07:00</published><updated>2026-07-29T06:20:58.123-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="vue"/><title type='text'>[Spring Boot + Vue.js ] Threads Clone 코딩  Day 2</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;안녕하세요.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;친숙한 Spring boot 부터 시작하겠습니다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;span style=&quot;font-family: verdana; font-size: large;&quot;&gt;목표&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;li data-end=&quot;92&quot; data-section-id=&quot;10f7njw&quot; data-start=&quot;77&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Boot 3&lt;span aria-hidden=&quot;true&quot; class=&quot;PDq2pG_selectionAnchor&quot;&gt;&lt;/span&gt;
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;102&quot; data-section-id=&quot;2kc2oi&quot; data-start=&quot;93&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Java 17
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;120&quot; data-section-id=&quot;x8pvgv&quot; data-start=&quot;103&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Spring Security
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;130&quot; data-section-id=&quot;ye1rr1&quot; data-start=&quot;121&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
JWT 로그인
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;143&quot; data-section-id=&quot;6zn6pa&quot; data-start=&quot;131&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
PostgreSQL
&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;149&quot; data-section-id=&quot;1o49v7&quot; data-start=&quot;144&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
JPA&lt;/span&gt;&lt;/li&gt;&lt;li data-end=&quot;149&quot; data-section-id=&quot;1o49v7&quot; data-start=&quot;144&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Vue3에서 바로 연동 가능한 REST API&lt;/span&gt;&lt;/li&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. 프로젝트 생성&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;span style=&quot;background-color: white; color: #353638;&quot;&gt;spring initializr&lt;/span&gt;로 이동하기 :&amp;nbsp;&lt;a href=&quot;https://start.spring.io/&quot; target=&quot;_blank&quot;&gt;https://start.spring.io/&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj6W56zvb9ULAugjmBOPZ6qL7tFQlYChvjaN-nsgLujGT086dERv8ZdHCJKiCCvrh9ZeTMgDxHtJ3tmLsM4vqoyiZruy_jUASUViy5n8pPwL2IQnQooWijAhZOac2vHsUAEGKt5EvaFzO75lDw5eF7Z9F82irrBC9djIJIa_76DhEKPdq5mEdiMwCCserB-&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;1230&quot; data-original-width=&quot;2286&quot; height=&quot;344&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEj6W56zvb9ULAugjmBOPZ6qL7tFQlYChvjaN-nsgLujGT086dERv8ZdHCJKiCCvrh9ZeTMgDxHtJ3tmLsM4vqoyiZruy_jUASUViy5n8pPwL2IQnQooWijAhZOac2vHsUAEGKt5EvaFzO75lDw5eF7Z9F82irrBC9djIJIa_76DhEKPdq5mEdiMwCCserB-=w640-h344&quot; width=&quot;640&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&amp;nbsp; &amp;nbsp;다음 환경으로 시작하는 것을 권장합니다.&lt;/span&gt;&lt;/div&gt;
&lt;ul data-end=&quot;263&quot; data-start=&quot;145&quot;&gt;
&lt;li data-end=&quot;162&quot; data-section-id=&quot;sxoub1&quot; data-start=&quot;145&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Spring Boot 4.x
&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;177&quot; data-section-id=&quot;or9g8t&quot; data-start=&quot;163&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Java 21(LTS)
&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;186&quot; data-section-id=&quot;1xv5kk1&quot; data-start=&quot;178&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Gradle
&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;199&quot; data-section-id=&quot;6zn6pa&quot; data-start=&quot;187&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
PostgreSQL
&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;217&quot; data-section-id=&quot;x8pvgv&quot; data-start=&quot;200&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Spring Security
&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;235&quot; data-section-id=&quot;v6agmq&quot; data-start=&quot;218&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Spring Data JPA&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;250&quot; data-section-id=&quot;1pb87nk&quot; data-start=&quot;242&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Lombok
&lt;/span&gt;&lt;/li&gt;
&lt;li data-end=&quot;263&quot; data-section-id=&quot;1vgmmzn&quot; data-start=&quot;251&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
Validation&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;2. Generate 버튼을 누르면 thread.zip으로 다운로드 됩니다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;3. Visual Studio code를 사용해서 프로젝트를 열면 아래와 같습니다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg3hSX2EFgcp0oCllR3vSjEYlzvWeASs9Hj1tzPz5HwOnrTUR4M6g5R7n43ZnzCv85GiSKGo-e_F5-foLS88OVIEPUIevEwsi7GkSPerE8zIRWFJWZOMRB4cO9Xx7zm5l05wQdqWkDsvBhY5kCpWOM3A-lA4lM-6PYAQEbyLpsiScfl2oRbMW6Y2bl8DMnd&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;img alt=&quot;&quot; data-original-height=&quot;685&quot; data-original-width=&quot;378&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/a/AVvXsEg3hSX2EFgcp0oCllR3vSjEYlzvWeASs9Hj1tzPz5HwOnrTUR4M6g5R7n43ZnzCv85GiSKGo-e_F5-foLS88OVIEPUIevEwsi7GkSPerE8zIRWFJWZOMRB4cO9Xx7zm5l05wQdqWkDsvBhY5kCpWOM3A-lA4lM-6PYAQEbyLpsiScfl2oRbMW6Y2bl8DMnd=w220-h400&quot; width=&quot;220&quot; /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;4. 환경설정을 왜 위에 처럼 해야하는 건가?&lt;/span&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;blockquote style=&quot;border-color: currentcolor; border-image: none; border-style: none; border-width: medium; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;&lt;h2 style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;1. Spring Boot 4.x 추천&lt;/span&gt;&lt;/h2&gt;&lt;/blockquote&gt;&lt;blockquote style=&quot;border-color: currentcolor; border-image: none; border-style: none; border-width: medium; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;&quot;&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;최신 프로젝트라면 다음 환경으로 시작하는 것을 권장합니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Boot 4.x&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Java 21(LTS)&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Gradle&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;PostgreSQL&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Security&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Data JPA&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Lombok&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Validation&lt;/span&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Java 17도 가능하지만, 새 프로젝트라면 &lt;strong&gt;Java 21 LTS&lt;/strong&gt;를 사용하는 것이 장기적으로 유리합니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;2. JAR vs WAR&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;JAR (추천)&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Vue&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;   ↓&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Boot (내장 Tomcat)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;   ↓&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;PostgreSQL&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;장점&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;설정이 간단합니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;배포가 쉽습니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Docker와 잘 어울립니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;AWS, Oracle Cloud, Ubuntu 서버에서 많이 사용합니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;GitHub Actions로 CI/CD 구성도 편리합니다.&lt;/span&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;실행도 간단합니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;java -jar threads.jar&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div&gt;&lt;h3&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;WAR&lt;/span&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Tomcat&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;   └── threads.war&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;장점&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;기존 Tomcat 서버를 사용하는 회사에서 필요할 수 있습니다.&lt;/span&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;단점&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;설정이 복잡합니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Boot의 장점을 일부 잃게 됩니다.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;신규 프로젝트에서는 선택하는 경우가 많이 줄었습니다.&lt;/span&gt;&lt;div&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;3. Threads 프로젝트라면?&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;저라면 아래와 같이 구성합니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Frontend&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Vue3 + Vite&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Backend&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Spring Boot 4.x&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Database&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;PostgreSQL&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Cache&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Redis&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Storage&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;MinIO (개발)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;AWS S3 (운영)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Deploy&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Docker&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Docker Compose&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;Nginx&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;실무에서도 많이 사용하는 구성입니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2&gt;&lt;span style=&quot;font-family: verdana; font-size: small;&quot;&gt;4. Gradle(Groovy) 추천&lt;/span&gt;&lt;/h2&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;개인적으로는 Kotlin DSL보다 **Groovy 기반 &lt;code inline=&quot;&quot;&gt;build.gradle&lt;/code&gt;**을 추천합니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;threads-server&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt; ├── src&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt; ├── build.gradle&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt; ├── settings.gradle&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;pre&gt;&lt;code&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt; └── gradlew&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;span style=&quot;font-family: verdana;&quot;&gt;이유는 예제와 자료가 많고, 처음 학습할 때 참고하기 쉽기 때문입니다.&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/194340455434243268/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2026/07/spring-boot-vuejs-threads-clone-day-2.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/194340455434243268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/194340455434243268'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2026/07/spring-boot-vuejs-threads-clone-day-2.html' title='[Spring Boot + Vue.js ] Threads Clone 코딩  Day 2'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/a/AVvXsEj6W56zvb9ULAugjmBOPZ6qL7tFQlYChvjaN-nsgLujGT086dERv8ZdHCJKiCCvrh9ZeTMgDxHtJ3tmLsM4vqoyiZruy_jUASUViy5n8pPwL2IQnQooWijAhZOac2vHsUAEGKt5EvaFzO75lDw5eF7Z9F82irrBC9djIJIa_76DhEKPdq5mEdiMwCCserB-=s72-w640-h344-c" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-2043392214016295401</id><published>2026-07-27T06:54:35.549-07:00</published><updated>2026-07-27T07:00:55.274-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="spring"/><category scheme="http://www.blogger.com/atom/ns#" term="vue"/><category scheme="http://www.blogger.com/atom/ns#" term="vuejs"/><title type='text'>[Spring Boot + Vue.js ] Threads Clone 코딩  Day 1</title><content type='html'>&lt;p&gt;&amp;nbsp;Vue js를 익히기 위해 시작한 클론 코딩 1일차.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 24px; font-weight: 700;&quot;&gt;윈도우환경&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-size: 24px; font-weight: 700;&quot;&gt;다음 순서대로 만들기&lt;/span&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left;&quot;&gt;&lt;li&gt;Vue.js 3&amp;nbsp;&lt;/li&gt;&lt;li&gt;Spring Boot&amp;nbsp;&lt;/li&gt;&lt;li&gt;MySQL 또는 &lt;b&gt;PostgreSQL&lt;/b&gt;&lt;/li&gt;&lt;li&gt;JWT 로그인&lt;/li&gt;&lt;li&gt;REST API&lt;/li&gt;&lt;li&gt;Docker&lt;/li&gt;&lt;li&gt;AWS 또는 Ubuntu 서버 배포&lt;/li&gt;&lt;/ol&gt;&lt;p style=&quot;text-align: left;&quot;&gt;





&lt;/p&gt;&lt;h2 class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;106&quot; data-section-id=&quot;1yur4zw&quot; data-start=&quot;98&quot; style=&quot;display: inline; text-align: left;&quot;&gt;&lt;div&gt;&lt;h2 class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;106&quot; data-section-id=&quot;1yur4zw&quot; data-start=&quot;98&quot; style=&quot;display: inline; text-align: left;&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;/div&gt;기술 스택&lt;span aria-hidden=&quot;true&quot; class=&quot;PDq2pG_selectionAnchor&quot;&gt;&lt;/span&gt;&lt;/h2&gt;&lt;h3 data-end=&quot;120&quot; data-section-id=&quot;5hbczs&quot; data-start=&quot;108&quot;&gt;Frontend&lt;/h3&gt;&lt;ul data-end=&quot;186&quot; data-start=&quot;121&quot;&gt;&lt;li data-end=&quot;128&quot; data-section-id=&quot;17bsiql&quot; data-start=&quot;121&quot;&gt;
Vue 3
&lt;/li&gt;&lt;li data-end=&quot;135&quot; data-section-id=&quot;1j4hah2&quot; data-start=&quot;129&quot;&gt;
Vite
&lt;/li&gt;&lt;li data-end=&quot;150&quot; data-section-id=&quot;anokp3&quot; data-start=&quot;136&quot;&gt;
Pinia (상태관리)
&lt;/li&gt;&lt;li data-end=&quot;163&quot; data-section-id=&quot;fhtttx&quot; data-start=&quot;151&quot;&gt;
Vue Router
&lt;/li&gt;&lt;li data-end=&quot;171&quot; data-section-id=&quot;16yybk4&quot; data-start=&quot;164&quot;&gt;
Axios
&lt;/li&gt;&lt;li data-end=&quot;186&quot; data-section-id=&quot;wu8u6n&quot; data-start=&quot;172&quot;&gt;
Tailwind CSS
&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;199&quot; data-section-id=&quot;6pmtqa&quot; data-start=&quot;188&quot;&gt;Backend&lt;/h3&gt;&lt;ul data-end=&quot;320&quot; data-start=&quot;200&quot;&gt;&lt;li data-end=&quot;215&quot; data-section-id=&quot;10f7njw&quot; data-start=&quot;200&quot;&gt;
Spring Boot 3
&lt;/li&gt;&lt;li data-end=&quot;239&quot; data-section-id=&quot;1rwi4zx&quot; data-start=&quot;216&quot;&gt;
Spring Security + JWT
&lt;/li&gt;&lt;li data-end=&quot;257&quot; data-section-id=&quot;v6agmq&quot; data-start=&quot;240&quot;&gt;
Spring Data JPA
&lt;/li&gt;&lt;li data-end=&quot;270&quot; data-section-id=&quot;6zn6pa&quot; data-start=&quot;258&quot;&gt;
PostgreSQL
&lt;/li&gt;&lt;li data-end=&quot;298&quot; data-section-id=&quot;1n8w58k&quot; data-start=&quot;271&quot;&gt;
WebSocket(STOMP) (실시간 알림)
&lt;/li&gt;&lt;li data-end=&quot;320&quot; data-section-id=&quot;iv3nh3&quot; data-start=&quot;299&quot;&gt;
Redis (좋아요, 캐시, 세션)
&lt;/li&gt;&lt;/ul&gt;&lt;h3 data-end=&quot;328&quot; data-section-id=&quot;1hrh1ga&quot; data-start=&quot;322&quot;&gt;배포&lt;/h3&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;
Docker&lt;/li&gt;&lt;li&gt;Nginx&lt;/li&gt;&lt;li&gt;AWS EC2 또는 Oracle Cloud&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h2 class=&quot;PDq2pG_selectionAnchorContainer&quot; data-end=&quot;383&quot; data-section-id=&quot;1m7gog&quot; data-start=&quot;378&quot;&gt;기능&lt;span aria-hidden=&quot;true&quot; class=&quot;PDq2pG_selectionAnchor&quot;&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h3 data-end=&quot;394&quot; data-section-id=&quot;6pkyqt&quot; data-start=&quot;385&quot;&gt;1. 회원&lt;/h3&gt;
&lt;ul data-end=&quot;447&quot; data-start=&quot;395&quot;&gt;
&lt;li data-end=&quot;401&quot; data-section-id=&quot;asusj5&quot; data-start=&quot;395&quot;&gt;
회원가입
&lt;/li&gt;
&lt;li data-end=&quot;412&quot; data-section-id=&quot;16tr73w&quot; data-start=&quot;402&quot;&gt;
로그인(JWT)
&lt;/li&gt;
&lt;li data-end=&quot;421&quot; data-section-id=&quot;lvv995&quot; data-start=&quot;413&quot;&gt;
프로필 수정
&lt;/li&gt;
&lt;li data-end=&quot;430&quot; data-section-id=&quot;lvv0cc&quot; data-start=&quot;422&quot;&gt;
프로필 사진
&lt;/li&gt;
&lt;li data-end=&quot;436&quot; data-section-id=&quot;2k3eew&quot; data-start=&quot;431&quot;&gt;
소개글
&lt;/li&gt;
&lt;li data-end=&quot;447&quot; data-section-id=&quot;1wpt33&quot; data-start=&quot;437&quot;&gt;
팔로우/언팔로우
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;465&quot; data-section-id=&quot;135dmr9&quot; data-start=&quot;449&quot;&gt;2. 글(Thread)&lt;/h3&gt;
&lt;ul data-end=&quot;503&quot; data-start=&quot;466&quot;&gt;
&lt;li data-end=&quot;472&quot; data-section-id=&quot;1wr7tvs&quot; data-start=&quot;466&quot;&gt;
글 작성
&lt;/li&gt;
&lt;li data-end=&quot;481&quot; data-section-id=&quot;17spk6k&quot; data-start=&quot;473&quot;&gt;
이미지 첨부
&lt;/li&gt;
&lt;li data-end=&quot;486&quot; data-section-id=&quot;yim751&quot; data-start=&quot;482&quot;&gt;
수정
&lt;/li&gt;
&lt;li data-end=&quot;491&quot; data-section-id=&quot;yilqk9&quot; data-start=&quot;487&quot;&gt;
삭제
&lt;/li&gt;
&lt;li data-end=&quot;496&quot; data-section-id=&quot;yi0071&quot; data-start=&quot;492&quot;&gt;
답글
&lt;/li&gt;
&lt;li data-end=&quot;503&quot; data-section-id=&quot;afrlt0&quot; data-start=&quot;497&quot;&gt;
해시태그
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;515&quot; data-section-id=&quot;7a4ayo&quot; data-start=&quot;505&quot;&gt;3. 좋아요&lt;/h3&gt;
&lt;ul data-end=&quot;539&quot; data-start=&quot;516&quot;&gt;
&lt;li data-end=&quot;521&quot; data-section-id=&quot;2iswfn&quot; data-start=&quot;516&quot;&gt;
좋아요
&lt;/li&gt;
&lt;li data-end=&quot;530&quot; data-section-id=&quot;8gz8pj&quot; data-start=&quot;522&quot;&gt;
좋아요 취소
&lt;/li&gt;
&lt;li data-end=&quot;539&quot; data-section-id=&quot;8hg9o7&quot; data-start=&quot;531&quot;&gt;
좋아요 개수
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;550&quot; data-section-id=&quot;6k2tov&quot; data-start=&quot;541&quot;&gt;4. 댓글&lt;/h3&gt;
&lt;ul data-end=&quot;566&quot; data-start=&quot;551&quot;&gt;
&lt;li data-end=&quot;555&quot; data-section-id=&quot;yhzxnf&quot; data-start=&quot;551&quot;&gt;
댓글
&lt;/li&gt;
&lt;li data-end=&quot;561&quot; data-section-id=&quot;20briz&quot; data-start=&quot;556&quot;&gt;
대댓글
&lt;/li&gt;
&lt;li data-end=&quot;566&quot; data-section-id=&quot;yilqk9&quot; data-start=&quot;562&quot;&gt;
삭제
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;577&quot; data-section-id=&quot;6n4mql&quot; data-start=&quot;568&quot;&gt;5. 피드&lt;/h3&gt;
&lt;ul data-end=&quot;599&quot; data-start=&quot;578&quot;&gt;
&lt;li data-end=&quot;583&quot; data-section-id=&quot;2i8oi0&quot; data-start=&quot;578&quot;&gt;
최신순
&lt;/li&gt;
&lt;li data-end=&quot;593&quot; data-section-id=&quot;cnylmp&quot; data-start=&quot;584&quot;&gt;
팔로잉만 보기
&lt;/li&gt;
&lt;li data-end=&quot;599&quot; data-section-id=&quot;2joxk0&quot; data-start=&quot;594&quot;&gt;
인기글
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;610&quot; data-section-id=&quot;6iunxz&quot; data-start=&quot;601&quot;&gt;6. 검색&lt;/h3&gt;
&lt;ul data-end=&quot;629&quot; data-start=&quot;611&quot;&gt;
&lt;li data-end=&quot;619&quot; data-section-id=&quot;zkdp3o&quot; data-start=&quot;611&quot;&gt;
사용자 검색
&lt;/li&gt;
&lt;li data-end=&quot;629&quot; data-section-id=&quot;1u19vil&quot; data-start=&quot;620&quot;&gt;
해시태그 검색
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;640&quot; data-section-id=&quot;6lq5ov&quot; data-start=&quot;631&quot;&gt;7. 알림&lt;/h3&gt;
&lt;ul data-end=&quot;682&quot; data-start=&quot;641&quot;&gt;
&lt;li data-end=&quot;649&quot; data-section-id=&quot;bidc0n&quot; data-start=&quot;641&quot;&gt;
누가 좋아요
&lt;/li&gt;
&lt;li data-end=&quot;657&quot; data-section-id=&quot;1g09blr&quot; data-start=&quot;650&quot;&gt;
누가 댓글
&lt;/li&gt;
&lt;li data-end=&quot;666&quot; data-section-id=&quot;bmrm2c&quot; data-start=&quot;658&quot;&gt;
누가 팔로우
&lt;/li&gt;
&lt;li data-end=&quot;682&quot; data-section-id=&quot;7hz9a9&quot; data-start=&quot;667&quot;&gt;
실시간 WebSocket
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;698&quot; data-section-id=&quot;vjxogg&quot; data-start=&quot;684&quot;&gt;8. 메시지(DM)&lt;/h3&gt;
&lt;ul data-end=&quot;724&quot; data-start=&quot;699&quot;&gt;
&lt;li data-end=&quot;707&quot; data-section-id=&quot;dijv8z&quot; data-start=&quot;699&quot;&gt;
1:1 채팅
&lt;/li&gt;
&lt;li data-end=&quot;716&quot; data-section-id=&quot;17srh41&quot; data-start=&quot;708&quot;&gt;
이미지 전송
&lt;/li&gt;
&lt;li data-end=&quot;724&quot; data-section-id=&quot;6aiawp&quot; data-start=&quot;717&quot;&gt;
읽음 표시&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/2043392214016295401/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2026/07/spring-boot-vuejs-threads-clone-day-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2043392214016295401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2043392214016295401'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2026/07/spring-boot-vuejs-threads-clone-day-1.html' title='[Spring Boot + Vue.js ] Threads Clone 코딩  Day 1'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-1125122425227974461</id><published>2025-04-20T21:58:00.000-07:00</published><updated>2025-04-23T23:24:26.808-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="python"/><title type='text'>[Python] Python 스터디 Day1 (window)</title><content type='html'>&lt;p&gt;&amp;nbsp;1. python 설치 (3.11)&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.python.org/downloads/&quot; target=&quot;_blank&quot;&gt;https://www.python.org/downloads/&lt;/a&gt;&amp;nbsp;에 3.11을 찾아서&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.python.org/downloads/release/python-3117/&quot;&gt;https://www.python.org/downloads/release/python-3117/&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;로 이동. 여기에서 해당되는 것 다운로드.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNPZU2AzyW2Xzxo2H6hK9U6F966HMAjUBN-4L5Yn3P17pK1XQu3T5YzHWk-NvtHYXOHW9rovwL9PsqBDmW35W9re7uX3H_Mb-fBBKjKL0D7GKwGajofWRWhwfEGDWKPV7mCdMNoU0pVgNJPYvr1Vsna03ei_wT_kEpDcAzk7MGz0WFleD-wj_JfohsUeUI/s2053/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202025-04-21%20140125.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;778&quot; data-original-width=&quot;2053&quot; height=&quot;242&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNPZU2AzyW2Xzxo2H6hK9U6F966HMAjUBN-4L5Yn3P17pK1XQu3T5YzHWk-NvtHYXOHW9rovwL9PsqBDmW35W9re7uX3H_Mb-fBBKjKL0D7GKwGajofWRWhwfEGDWKPV7mCdMNoU0pVgNJPYvr1Vsna03ei_wT_kEpDcAzk7MGz0WFleD-wj_JfohsUeUI/w640-h242/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202025-04-21%20140125.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Visual Code 사용.&amp;nbsp;&lt;/p&gt;&lt;p&gt;- 개발할 때 손에 익은 툴을 사용.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. CMD (명령프롬프트) 열기&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;&amp;nbsp;pip --version을 실행.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCt30tWzocZv3EA5Zg4wUN9H6ubdV_HSe2qbCTeRd7grXYLpv7t3ZlhddusN69UdOLZhEuiiRXkBtILqaBMwGSQkMYEhjy7bEeVwPLrBu1ROXq8dnhLO1gYjTc0rWLPR_1pPcdmmHg3yBjskfN08tqo5UgPs7l7scaSj8484XcMCIbx2EK1tpIMLyWYTRP/s1051/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202025-04-21%20135606.png&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;118&quot; data-original-width=&quot;1051&quot; height=&quot;81&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhCt30tWzocZv3EA5Zg4wUN9H6ubdV_HSe2qbCTeRd7grXYLpv7t3ZlhddusN69UdOLZhEuiiRXkBtILqaBMwGSQkMYEhjy7bEeVwPLrBu1ROXq8dnhLO1gYjTc0rWLPR_1pPcdmmHg3yBjskfN08tqo5UgPs7l7scaSj8484XcMCIbx2EK1tpIMLyWYTRP/w722-h81/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202025-04-21%20135606.png&quot; width=&quot;722&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;ul&gt;&lt;li style=&quot;text-align: left;&quot;&gt;너무 당황스러운 부분은 3.13 버전 설치 시 윈도우에서 오류가 발생되서 3.11 버전으로 설치하였습니다. 왜 그럴까요????&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;4. 유소년 축구 커뮤니티 사이트 만들기.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;예상 구성도&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;┌──────────────┐&amp;nbsp; &amp;nbsp; &amp;nbsp;REST API&amp;nbsp; &amp;nbsp; &amp;nbsp;┌──────────────┐&lt;div&gt;│&amp;nbsp; Vue.js SPA&amp;nbsp; │ ◀──────────────▶ │&amp;nbsp; &amp;nbsp; Flask&amp;nbsp; &amp;nbsp; &amp;nbsp;│&lt;/div&gt;&lt;div&gt;│&amp;nbsp; (Frontend)&amp;nbsp; │&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │ (Backend API)│&lt;/div&gt;&lt;div&gt;└──────────────┘&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; └──────┬───────┘&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; │&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Admin UI&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;▼&lt;/div&gt;&lt;div&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;(Flask-Admin)&amp;nbsp; &amp;nbsp;Database (PostgreSQL)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table class=&quot;min-w-full&quot; data-end=&quot;501&quot; data-start=&quot;305&quot;&gt;&lt;thead data-end=&quot;321&quot; data-start=&quot;305&quot;&gt;&lt;tr data-end=&quot;321&quot; data-start=&quot;305&quot;&gt;&lt;th data-end=&quot;310&quot; data-start=&quot;305&quot;&gt;역할&lt;/th&gt;&lt;th data-end=&quot;315&quot; data-start=&quot;310&quot;&gt;기술&lt;/th&gt;&lt;th data-end=&quot;321&quot; data-start=&quot;315&quot;&gt;설명&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;501&quot; data-start=&quot;345&quot;&gt;&lt;tr data-end=&quot;379&quot; data-start=&quot;345&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;353&quot; data-start=&quot;345&quot;&gt;프론트엔드&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;362&quot; data-start=&quot;353&quot;&gt;&amp;nbsp; &amp;nbsp;Vue.js&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;379&quot; data-start=&quot;362&quot;&gt;&amp;nbsp; 사용자용 화면 (SPA)&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;424&quot; data-start=&quot;380&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;390&quot; data-start=&quot;380&quot;&gt;백엔드 API&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;398&quot; data-start=&quot;390&quot;&gt;&amp;nbsp; &amp;nbsp;Flask&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;424&quot; data-start=&quot;398&quot;&gt;&amp;nbsp; Vue에서 사용하는 JSON API 제공,&amp;nbsp; Python Flask + Flask-Admin +&amp;nbsp; &amp;nbsp;SQLAlchemy + PostgreSQL&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;478&quot; data-start=&quot;425&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;435&quot; data-start=&quot;425&quot;&gt;관리자 페이지&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;449&quot; data-start=&quot;435&quot;&gt;&amp;nbsp; &amp;nbsp;Flask-Admin&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;478&quot; data-start=&quot;449&quot;&gt;&amp;nbsp; 관리자만 사용하는 전용 페이지 (서버 렌더링)&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;501&quot; data-start=&quot;479&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;484&quot; data-start=&quot;479&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;501&quot; data-start=&quot;484&quot;&gt;&lt;br /&gt;&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot;&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div&gt;&lt;ul style=&quot;text-align: left;&quot;&gt;&lt;li&gt;DB에 대한 고민&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;table class=&quot;min-w-full&quot; data-end=&quot;765&quot; data-start=&quot;579&quot;&gt;&lt;thead data-end=&quot;593&quot; data-start=&quot;579&quot;&gt;&lt;tr data-end=&quot;593&quot; data-start=&quot;579&quot;&gt;&lt;th data-end=&quot;584&quot; data-start=&quot;579&quot;&gt;DB&lt;/th&gt;&lt;th data-end=&quot;593&quot; data-start=&quot;584&quot;&gt;추천 이유&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody data-end=&quot;765&quot; data-start=&quot;613&quot;&gt;&lt;tr data-end=&quot;652&quot; data-start=&quot;613&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;626&quot; data-start=&quot;613&quot;&gt;&lt;strong data-end=&quot;625&quot; data-start=&quot;615&quot;&gt;SQLite&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;652&quot; data-start=&quot;626&quot;&gt;가볍고 설정 필요 없음 (개발용에 좋음)&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;689&quot; data-start=&quot;653&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;675&quot; data-start=&quot;653&quot;&gt;&lt;strong data-end=&quot;674&quot; data-start=&quot;655&quot;&gt;MySQL / MariaDB&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;689&quot; data-start=&quot;675&quot;&gt;많이 쓰이고 안정적&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;727&quot; data-start=&quot;690&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;707&quot; data-start=&quot;690&quot;&gt;&lt;strong data-end=&quot;706&quot; data-start=&quot;692&quot;&gt;PostgreSQL&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;727&quot; data-start=&quot;707&quot;&gt;복잡한 기능/대용량에도 강력함&lt;/td&gt;&lt;/tr&gt;&lt;tr data-end=&quot;765&quot; data-start=&quot;728&quot;&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;742&quot; data-start=&quot;728&quot;&gt;&lt;strong data-end=&quot;741&quot; data-start=&quot;730&quot;&gt;MongoDB&lt;/strong&gt;&lt;/td&gt;&lt;td class=&quot;max-w-[calc(var(--thread-content-max-width)*2/3)]&quot; data-end=&quot;765&quot; data-start=&quot;742&quot;&gt;NoSQL이 필요할 경우 선택 가능&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/1125122425227974461/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2025/04/python-python-day1-window.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/1125122425227974461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/1125122425227974461'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2025/04/python-python-day1-window.html' title='[Python] Python 스터디 Day1 (window)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNPZU2AzyW2Xzxo2H6hK9U6F966HMAjUBN-4L5Yn3P17pK1XQu3T5YzHWk-NvtHYXOHW9rovwL9PsqBDmW35W9re7uX3H_Mb-fBBKjKL0D7GKwGajofWRWhwfEGDWKPV7mCdMNoU0pVgNJPYvr1Vsna03ei_wT_kEpDcAzk7MGz0WFleD-wj_JfohsUeUI/s72-w640-h242-c/%ED%99%94%EB%A9%B4%20%EC%BA%A1%EC%B2%98%202025-04-21%20140125.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-2852087644866750240</id><published>2022-05-24T20:52:00.004-07:00</published><updated>2022-05-24T20:52:56.242-07:00</updated><title type='text'>Flutter3 -Visual Studio - develop for Windows (the doctor check crashed) ERROR</title><content type='html'>&lt;p&gt;Flutter3 window install error issue!&lt;/p&gt;&lt;p&gt;&amp;gt;flutter doctor&lt;/p&gt;&lt;p&gt;&amp;gt;Due to an error, the doctor check did not complete. If the error message below is not helpful, please let us know about this issue at&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; https://github.com/flutter/flutter/issues.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; X Exception: Bad UTF-8 encoding (U+FFFD; REPLACEMENT CHARACTER) found while decoding string: [&lt;/p&gt;&lt;p&gt;....&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- Solution&lt;/p&gt;&lt;p&gt;Move to C:\Program Files (x86)\Microsoft Visual Studio\Installer&lt;/p&gt;&lt;p&gt;And replace vswhere.exe to&lt;a href=&quot;https://github.com/microsoft/vswhere/releases&quot;&gt; this one&amp;nbsp;&lt;/a&gt;&amp;nbsp;!!&lt;/p&gt;&lt;p&gt;And Move to Visual Studio Installer&amp;nbsp;&lt;/p&gt;&lt;p&gt;Check the C++ desktop!!&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeQXbidG3emguxvqUeTpAVK5DoKtzOfOOSbqvIjIxH98cMp5dGN42lWXgFV08RPaJXbqL3WvIJLfHegNh9rC6oD6bBi5ygrTZTSr5sk0Rpl0UQe4v4oh8WrN1GAeEmENn0mj0zxpK0EAyZSZlHFm-nXtLjAxGM6zc9JFSxOu-oPIQcIKtUJgkmmcSU4Q/s1598/flutter3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;883&quot; data-original-width=&quot;1598&quot; height=&quot;354&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeQXbidG3emguxvqUeTpAVK5DoKtzOfOOSbqvIjIxH98cMp5dGN42lWXgFV08RPaJXbqL3WvIJLfHegNh9rC6oD6bBi5ygrTZTSr5sk0Rpl0UQe4v4oh8WrN1GAeEmENn0mj0zxpK0EAyZSZlHFm-nXtLjAxGM6zc9JFSxOu-oPIQcIKtUJgkmmcSU4Q/w640-h354/flutter3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Finally, solved!&lt;/p&gt;&lt;p&gt;&amp;gt; flutter doctor&lt;/p&gt;&lt;p&gt;Doctor summary (to see all details, run flutter doctor -v):&lt;/p&gt;&lt;p&gt;[√] Flutter (Channel stable, 3.0.0, on Microsoft Windows [Version 10.0.19044.1706], locale ko-KR)&lt;/p&gt;&lt;p&gt;[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)&lt;/p&gt;&lt;p&gt;[√] Chrome - develop for the web&lt;/p&gt;&lt;p&gt;[√] Visual Studio - develop for Windows (Visual Studio Community 2022 17.2.2)&lt;/p&gt;&lt;p&gt;[√] Android Studio (version 4.1)&lt;/p&gt;&lt;p&gt;[√] VS Code (version 1.67.2)&lt;/p&gt;&lt;p&gt;[√] Connected device (3 available)&lt;/p&gt;&lt;p&gt;[√] HTTP Host Availability&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;• No issues found!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/2852087644866750240/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2022/05/flutter3-visual-studio-develop-for.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2852087644866750240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2852087644866750240'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2022/05/flutter3-visual-studio-develop-for.html' title='Flutter3 -Visual Studio - develop for Windows (the doctor check crashed) ERROR'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgeQXbidG3emguxvqUeTpAVK5DoKtzOfOOSbqvIjIxH98cMp5dGN42lWXgFV08RPaJXbqL3WvIJLfHegNh9rC6oD6bBi5ygrTZTSr5sk0Rpl0UQe4v4oh8WrN1GAeEmENn0mj0zxpK0EAyZSZlHFm-nXtLjAxGM6zc9JFSxOu-oPIQcIKtUJgkmmcSU4Q/s72-w640-h354-c/flutter3.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-8484613079283578763</id><published>2020-11-23T21:04:00.003-08:00</published><updated>2020-11-23T21:04:48.546-08:00</updated><title type='text'>[Flutter] Flutter &amp; Firebase 개발 도중 오류! Flutter Upgrade!</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;Flutter Upgrade 실행 이후 오류 발생!!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;- Can&#39;t load Kernel binary: Invalid kernel binary format version. 메시지와 함께&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;flutter 실행이 안됨. 구글에 있는 내용으로 해도 안되서 결국 flutter 재설치!!!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBnQqNu0-uiwRsqPm4LPGpGfA4kJw6iWm2JJKYFSAcS_-MwlHuUbFe6ambbrt49IFaOEekxmS0NQ-JSUpAVR6O0-guCIk5oQEYAzPxswiOX3pP2Dt4hx0FIyYaMyV70N4edKm088boAiwh/s1744/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.49.51.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1112&quot; data-original-width=&quot;1744&quot; height=&quot;408&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBnQqNu0-uiwRsqPm4LPGpGfA4kJw6iWm2JJKYFSAcS_-MwlHuUbFe6ambbrt49IFaOEekxmS0NQ-JSUpAVR6O0-guCIk5oQEYAzPxswiOX3pP2Dt4hx0FIyYaMyV70N4edKm088boAiwh/w640-h408/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.49.51.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;- mac os에서 발생한 문제로&amp;nbsp;https://flutter.dev/docs/get-started/install/macos 로 이동.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;- 터미널에서&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;git clone https://github.com/flutter/flutter.git /Users/xxx/Downloads/flutter 실행.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;- 터미널에서 cd / 로 이동 후 ls -al 실행.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi90SU49XCsP5XQFiGdm4myUWgs1uNT3ZUMsuhI_6dhdoly3H7RuT2vP7lhhkwZunbr9ieJ7-JvmoyXDJA2o7an4Jy0qTvvAhcV_UDPRB-CmbNElF9Im9BQJFjM_kTl0huSwOzG64mYjjTP/s1658/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.29.08.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1520&quot; data-original-width=&quot;1658&quot; height=&quot;586&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi90SU49XCsP5XQFiGdm4myUWgs1uNT3ZUMsuhI_6dhdoly3H7RuT2vP7lhhkwZunbr9ieJ7-JvmoyXDJA2o7an4Jy0qTvvAhcV_UDPRB-CmbNElF9Im9BQJFjM_kTl0huSwOzG64mYjjTP/w640-h586/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.29.08.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&amp;nbsp;- .bash_profile 혹은 .zshrc 로 이동.&amp;nbsp;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp;echo $PATH하면 나오는 flutter 경로 변경을 위해 환경설정 파일 수정.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; &amp;nbsp; vi .zshrc 실행.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;- 여기에 flutter path를 git clone한 위치로 매칭시켜줌.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;export PATH=/Users/xxx/Downloads/flutter/bin:$PATH 를 입력 후 저장.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;- 새로운 터미널에서 flutter doctor를 실행. (기존 터미널 모두 닫기)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-variant-ligatures: no-common-ligatures;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjCPdJtxHqA8MP1PmLd_158UWzUvYBLfl5AcKe5BFr8cjSrnY1KlkRP4k6GoB8qvQwKdzXQ_W7fJFlQ0KCdbPavH_9406ZdqkaOdZS4XDiIcp38CEGV3-KmClDJyJzcudMEfsBQyXUYOJv/s1672/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.28.37.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1214&quot; data-original-width=&quot;1672&quot; height=&quot;464&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgjCPdJtxHqA8MP1PmLd_158UWzUvYBLfl5AcKe5BFr8cjSrnY1KlkRP4k6GoB8qvQwKdzXQ_W7fJFlQ0KCdbPavH_9406ZdqkaOdZS4XDiIcp38CEGV3-KmClDJyJzcudMEfsBQyXUYOJv/w640-h464/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.28.37.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;- 위와 같이 no issues found! 라고 나오면 설치 완료.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;- Android studio에서 flutter 프로젝트 재 실행 시 아래와 같은 화면 보임.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB6bcVoNNIG5g0mJ8R6h21ODUQJOxJRPqO6mYWP7zJ5FAcDkZ-mdUSeBwpljbJBEVJvkU0ixI1UncKyX94OjahATTAADf7UDRonTEXC01cfEeS2jdi01yFYzDcHlJ0LWwWOeRbssrSI7HA/s2024/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.49.56.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;778&quot; data-original-width=&quot;2024&quot; height=&quot;246&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiB6bcVoNNIG5g0mJ8R6h21ODUQJOxJRPqO6mYWP7zJ5FAcDkZ-mdUSeBwpljbJBEVJvkU0ixI1UncKyX94OjahATTAADf7UDRonTEXC01cfEeS2jdi01yFYzDcHlJ0LWwWOeRbssrSI7HA/w640-h246/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.49.56.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;&amp;nbsp; &amp;nbsp;- Open Dart settings를 클릭한다.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBjbm0b4hzxEqeLp1BXtzwRMZDMP9_nlJAad3vrdGAo16YENHvj_E2Tf6wPH4kBYf2HDmKyzXwDzMLmdHY6Q1ivXb_oAkfHhxdJDFMY4ZPgb0PLYZYTMMdJ2OnTb55QdPE4ryIN6_FhIQZ/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.57.16.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBjbm0b4hzxEqeLp1BXtzwRMZDMP9_nlJAad3vrdGAo16YENHvj_E2Tf6wPH4kBYf2HDmKyzXwDzMLmdHY6Q1ivXb_oAkfHhxdJDFMY4ZPgb0PLYZYTMMdJ2OnTb55QdPE4ryIN6_FhIQZ/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.57.16.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimJMNFLwmodkzEykABJccQpzlAVGJL6RUnq2vDagiE4ASdWM89fmIE3t7dagVHXJt3_3Ohfl3Vv4SsXmJ_kMJ9JX7xF55MS2Jbzgq-P2SmYx6WmYeDczq-2fQtS7YwMBaK8ElRof8uFsv6/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.57.40.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimJMNFLwmodkzEykABJccQpzlAVGJL6RUnq2vDagiE4ASdWM89fmIE3t7dagVHXJt3_3Ohfl3Vv4SsXmJ_kMJ9JX7xF55MS2Jbzgq-P2SmYx6WmYeDczq-2fQtS7YwMBaK8ElRof8uFsv6/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+1.57.40.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp;위의 화면에서 왼쪽 메뉴 Flutter로 이동하여 SDK PATH를 위에서 git clone한 경로인&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;/Users/xxx/Downloads/flutter로 수정해준 뒤 OK를 눌러준다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilg3lrD_sIMMjwPzyKnxT3UPnySUHA59xG5eudOEKT6sPFoLc0kaQ96XHBFTvABYV66wpCT9ERH9A52Xt382CbyYa93NWqtM2biycjqwWp67R1SQZxo9RLo7VTCA7Z8SoHYsHqsC53KkkW/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.01.22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEilg3lrD_sIMMjwPzyKnxT3UPnySUHA59xG5eudOEKT6sPFoLc0kaQ96XHBFTvABYV66wpCT9ERH9A52Xt382CbyYa93NWqtM2biycjqwWp67R1SQZxo9RLo7VTCA7Z8SoHYsHqsC53KkkW/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.01.22.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: courier;&quot;&gt;&amp;nbsp; - 해당 오류 메시지가 사라지고 flutter를 실행할 수 있는 상태로 정상화 됨을 확인.&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/8484613079283578763/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/11/flutter-flutter-firebase-flutter-upgrade.html#comment-form' title='1개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/8484613079283578763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/8484613079283578763'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/11/flutter-flutter-firebase-flutter-upgrade.html' title='[Flutter] Flutter &amp; Firebase 개발 도중 오류! Flutter Upgrade!'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBnQqNu0-uiwRsqPm4LPGpGfA4kJw6iWm2JJKYFSAcS_-MwlHuUbFe6ambbrt49IFaOEekxmS0NQ-JSUpAVR6O0-guCIk5oQEYAzPxswiOX3pP2Dt4hx0FIyYaMyV70N4edKm088boAiwh/s72-w640-h408-c/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-24+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.49.51.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-2507040999291402856</id><published>2020-11-17T21:47:00.000-08:00</published><updated>2020-11-17T21:47:35.843-08:00</updated><title type='text'>[Flutter] Using FireStore with Flutter 1 - Firebase and Flutter Connect(ios)</title><content type='html'>&lt;p&gt;&amp;nbsp;1. Firebase에서 Android를 추가해준것 과 같이 IOS플랫폼을 추가해준다.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCiJQWxER6ISUYc2kELdUQrnLgCQmP1i-uk6lN-VVFIG4v6xo7Da3f366dudNK-URot0vJsZ6EzobcduBZLnIQF-8I_Utu4f8KzRaMr6b6hUnt34AmHT3DdSKafy2k4hoh1sDPPuj8L3xB/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-18+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.35.48.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1114&quot; data-original-width=&quot;2048&quot; height=&quot;348&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCiJQWxER6ISUYc2kELdUQrnLgCQmP1i-uk6lN-VVFIG4v6xo7Da3f366dudNK-URot0vJsZ6EzobcduBZLnIQF-8I_Utu4f8KzRaMr6b6hUnt34AmHT3DdSKafy2k4hoh1sDPPuj8L3xB/w640-h348/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-18+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.35.48.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp; - IOS 번들 ID에 안드로이드의 package명과 같은 이름을 작성한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. 앱 등록 후 구성파일을 다운로드 해준다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; - GoogleService-info.plist파일을 다운로드.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. ios 확인을 위해 CMD에서 생성한 Flutter 프로젝트 폴더 아래 ios 폴더로 이동한다.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;- Open Runner.xcworkspace 를 실행한다.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAKLm2oLun9TT8JlevHh5EFZlL22VowmqCM-Ymdn6nmpRnTQO2b95mHrGeuUSnSnH7nPORDLbT2GE_9AA3DhUKNx4wNfWiMAPUgNsxWsrfA1mpk9ygHwZv1dHtkdH9FKJql7s9qItHIpgR/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.52.22.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAKLm2oLun9TT8JlevHh5EFZlL22VowmqCM-Ymdn6nmpRnTQO2b95mHrGeuUSnSnH7nPORDLbT2GE_9AA3DhUKNx4wNfWiMAPUgNsxWsrfA1mpk9ygHwZv1dHtkdH9FKJql7s9qItHIpgR/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.52.22.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;아래와 같이 xcode가 실행된다.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0orNfl4SGia0kfg65AzcTFd0l2ENUHMLFJXb2B9C2BGw9Kvsfrb-e9eHQpapzPyknEADE0rkdk7XJcuBqf_irAh4mUHJwGTTt3v0JmV_m2C0Jh-SCODQp_dWHivttypi9XQF_EwB5YTyX/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.55.10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj0orNfl4SGia0kfg65AzcTFd0l2ENUHMLFJXb2B9C2BGw9Kvsfrb-e9eHQpapzPyknEADE0rkdk7XJcuBqf_irAh4mUHJwGTTt3v0JmV_m2C0Jh-SCODQp_dWHivttypi9XQF_EwB5YTyX/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.55.10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;4. Firebase에서 다운받은 GoogleService-info.plist를 Runner아래 이동시킨다.&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI-DzIrVRiuQ7QjvpAxh0MesbYaFBfjBe0vyFub4cT4MyE2N_V0m654WbwdhTB6JrFgA3UJZmB89MDxDDrg06EOJChYxSdv9W_faZeN9NejLRlnOduz3-LIVXMlMXtmbSu2c9OYomzpDH9/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.55.21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjI-DzIrVRiuQ7QjvpAxh0MesbYaFBfjBe0vyFub4cT4MyE2N_V0m654WbwdhTB6JrFgA3UJZmB89MDxDDrg06EOJChYxSdv9W_faZeN9NejLRlnOduz3-LIVXMlMXtmbSu2c9OYomzpDH9/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.55.21.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg28INBkGLDBXBX91fCP2tGNYCkfMOMwoqjVypQ53fPwKYX4lsgLSmmFLes7axeKch7_3JOFT9lbfhDdwblPUyfaYFWm6H_ahD-yD-w66H3EgV7u7pQ0BbFQgwYdLqUmt2XMwENutCt2Yt6/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+3.00.02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg28INBkGLDBXBX91fCP2tGNYCkfMOMwoqjVypQ53fPwKYX4lsgLSmmFLes7axeKch7_3JOFT9lbfhDdwblPUyfaYFWm6H_ahD-yD-w66H3EgV7u7pQ0BbFQgwYdLqUmt2XMwENutCt2Yt6/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-12+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+3.00.02.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/2507040999291402856/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/11/flutter-using-firestore-with-flutter-1_17.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2507040999291402856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2507040999291402856'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/11/flutter-using-firestore-with-flutter-1_17.html' title='[Flutter] Using FireStore with Flutter 1 - Firebase and Flutter Connect(ios)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgCiJQWxER6ISUYc2kELdUQrnLgCQmP1i-uk6lN-VVFIG4v6xo7Da3f366dudNK-URot0vJsZ6EzobcduBZLnIQF-8I_Utu4f8KzRaMr6b6hUnt34AmHT3DdSKafy2k4hoh1sDPPuj8L3xB/s72-w640-h348-c/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-11-18+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.35.48.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-3515859654121849362</id><published>2020-11-02T21:32:00.005-08:00</published><updated>2020-11-23T04:54:38.268-08:00</updated><title type='text'>[Flutter] Using FireStore with Flutter 1 - Firebase and Flutter Connect(Android)</title><content type='html'>&lt;p&gt;&amp;nbsp;참고 유투브 동영상&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=DqJ_KjFzL9I&amp;amp;feature=youtu.be&quot;&gt;https://www.youtube.com/watch?v=DqJ_KjFzL9I&amp;amp;feature=youtu.be&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. Google에서 Firebase 사이트로 이동&lt;/p&gt;&lt;p&gt;https://firebase.google.com&lt;/p&gt;&lt;p&gt;- Flutter에서 안내하는 Flutter&amp;amp;Firebase FlutterFire 사이트&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;https://firebase.flutter.dev/&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;2. Firebase Console화면에서 + 프로젝트 추가 버튼 클릭&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC4nMWt-J16CkiGNoCJzJYxWe_UHNSgbcyhNZob_8lPTJdWGnb4unsWzHJb0R2KQr7WaDXhTwzw3LQfI0LPc_agwZmlWVfsQfG6NIIaoyrsVXMZPOFaeWw8-OQsQm75zCdVi68tYnyAWWs/s1904/111111.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC4nMWt-J16CkiGNoCJzJYxWe_UHNSgbcyhNZob_8lPTJdWGnb4unsWzHJb0R2KQr7WaDXhTwzw3LQfI0LPc_agwZmlWVfsQfG6NIIaoyrsVXMZPOFaeWw8-OQsQm75zCdVi68tYnyAWWs/w640-h336/111111.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 순서에 따라 프로젝트 이름 입력.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7vSqAChjjqmZA9s3NtGf9HXOfHetqP8kR7Bz2fQwUEVTRVHSKhvHE11j1a1jJtQDtd_fHcb3eFWNzD_wDBQDJXdUOdnNz-gLZWbH35egfpWmJRroRy1-v9jdDf5vYQ1AkGQLHPZReCrmV/s1904/11.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7vSqAChjjqmZA9s3NtGf9HXOfHetqP8kR7Bz2fQwUEVTRVHSKhvHE11j1a1jJtQDtd_fHcb3eFWNzD_wDBQDJXdUOdnNz-gLZWbH35egfpWmJRroRy1-v9jdDf5vYQ1AkGQLHPZReCrmV/w640-h336/11.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcmQrGH9q4RNdKrLFQxDijDIXzNyjgNbzp5EJWESLDLS5wfm7ZDIwsSy7fc4y7mXIR5QnxmT6bO6pTT-liFkcGC_rN8pfv0LHUTZfPMFl2ftxQhibS9wxleqNkrSe45OL_fTeGVnRH4j9P/s1904/12.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcmQrGH9q4RNdKrLFQxDijDIXzNyjgNbzp5EJWESLDLS5wfm7ZDIwsSy7fc4y7mXIR5QnxmT6bO6pTT-liFkcGC_rN8pfv0LHUTZfPMFl2ftxQhibS9wxleqNkrSe45OL_fTeGVnRH4j9P/w640-h336/12.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIIGJROLnQrades8thML-N6HfdOYJS0aErPNS8RZ4YGWb2dRJsTZniJeUFxVa0MdpUR05kdrGcxXh7jZU49Io2zgAPI7I-xKlOVaOgaxgPMlcmg3-nHLqazfv5Q3CKBwK95zMiQ4UvK2PL/s1904/13.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIIGJROLnQrades8thML-N6HfdOYJS0aErPNS8RZ4YGWb2dRJsTZniJeUFxVa0MdpUR05kdrGcxXh7jZU49Io2zgAPI7I-xKlOVaOgaxgPMlcmg3-nHLqazfv5Q3CKBwK95zMiQ4UvK2PL/w640-h336/13.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjijRv-DYl_fOjo4NRRtWfluKPhXH2KstJ2cXdaOGdqzxFr3foLqmXdmnWj_NuHbFEmh_PColwqn8E4uB6TZS4JsC27ShKKusHi8rnlxgJGLTJlEEhyL0bQesI_hxhQcZJLqyFZrw0iMaOO/s1904/14.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjijRv-DYl_fOjo4NRRtWfluKPhXH2KstJ2cXdaOGdqzxFr3foLqmXdmnWj_NuHbFEmh_PColwqn8E4uB6TZS4JsC27ShKKusHi8rnlxgJGLTJlEEhyL0bQesI_hxhQcZJLqyFZrw0iMaOO/w640-h336/14.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;4. 순서에 따라 이동하고 완료시 &#39;test1&#39;이라는 프로젝트가 생성.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigHf-r7_Q9UMgbRZrq78FiwB5UzYrgKeFa7ZZKjvvOJ_wmSWQaI-m5doSd5az85sXMcNLNPrVRE1v-5kJT96mpBjYoifXCfRu9wPCCB8Hwr2n4yjJbljVixe1stswhdi3xmvSwF0j35M3l/s1904/15.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEigHf-r7_Q9UMgbRZrq78FiwB5UzYrgKeFa7ZZKjvvOJ_wmSWQaI-m5doSd5az85sXMcNLNPrVRE1v-5kJT96mpBjYoifXCfRu9wPCCB8Hwr2n4yjJbljVixe1stswhdi3xmvSwF0j35M3l/w640-h336/15.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;5. 안드로이드 앱을 추가하기 위해 &#39;앱에&amp;nbsp; Firebase를 추가하여 시작하기&#39; 아래 안드로이드 버튼을 클릭하면 아래와 같은 화면으로 이동.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;- Flutter의 package 명과 같은 패키지 명을 입력.&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrxngRwFzp4CIVFoYkL418_3KKTdy01jr60fo8kGa3q-2cs-uzP-Gyj20x4b29zK77UEPVHqVnTJEALsug7ZY-5lCRA8co98XLIWu_l8j-xsdXipORaOn_2h9_uXArXFkOTPaMXOtfkJ_d/s1904/16.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgrxngRwFzp4CIVFoYkL418_3KKTdy01jr60fo8kGa3q-2cs-uzP-Gyj20x4b29zK77UEPVHqVnTJEALsug7ZY-5lCRA8co98XLIWu_l8j-xsdXipORaOn_2h9_uXArXFkOTPaMXOtfkJ_d/w640-h336/16.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;- app/google-services.json을 추가해준다.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWsA1zBBZFmCG5ra2HOGgapIT2Gfh3Bl-ey2vU6GIVKOJPppdMD05AUgGYy56FEDO6RTuxqtsMrsh2UFCsSNDNS16ib4G2oK6eNP2WiICXTP-ndp3phO-cck4z2RB2im48JLl8FOrRkk9j/s1904/17.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjWsA1zBBZFmCG5ra2HOGgapIT2Gfh3Bl-ey2vU6GIVKOJPppdMD05AUgGYy56FEDO6RTuxqtsMrsh2UFCsSNDNS16ib4G2oK6eNP2WiICXTP-ndp3phO-cck4z2RB2im48JLl8FOrRkk9j/w640-h336/17.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;- 아래 설명에 따라 build.gradle에 각각 추가.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyJ5JrbzApCePnzpz_U9WzLCZkxyc5YgdYN5fIodsWKgrODEsspdeSWwL-6F9Do2B5Dyi1z9XlqTgkzvRo6_4EoJfjP7wHicjw27RcIsVJoZGNZshL7I2muB-tHlVykprHTjtluMiNi_Ay/s1904/18.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyJ5JrbzApCePnzpz_U9WzLCZkxyc5YgdYN5fIodsWKgrODEsspdeSWwL-6F9Do2B5Dyi1z9XlqTgkzvRo6_4EoJfjP7wHicjw27RcIsVJoZGNZshL7I2muB-tHlVykprHTjtluMiNi_Ay/w640-h336/18.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheU3N_Uu3wvjITMLOKZvBFxpD9ZirsjKICu_CtsezCBcmXu88SYvPOmMTAmFEjeGVViEpn8EufQFjUh-i3WADusb6Sp6DkLDVNlTG0EAP6-7QwNIdP-ShLzjz-6lroyzSYxLs1TLF_apEh/s1904/135135.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEheU3N_Uu3wvjITMLOKZvBFxpD9ZirsjKICu_CtsezCBcmXu88SYvPOmMTAmFEjeGVViEpn8EufQFjUh-i3WADusb6Sp6DkLDVNlTG0EAP6-7QwNIdP-ShLzjz-6lroyzSYxLs1TLF_apEh/w640-h336/135135.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;- 콘솔로 이동하면 나의 &#39;test1&#39; 프로젝트 아래 안드로이드 명의 앱이 생성된것을 확인.&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6HbhX6PCdyN9zfHWbkRLhxQ5hccCjc5s9TAxnf7sx-Bi9azHrjRYPEWexR71tQdOuaHmGld1gJRUZaR4xR0YTojacUaJRcoECL9YnNMoZxyCMOXruou8B1Crfu8C__vdhQa5V1TV-dHds/s1904/19.PNG&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1001&quot; data-original-width=&quot;1904&quot; height=&quot;336&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj6HbhX6PCdyN9zfHWbkRLhxQ5hccCjc5s9TAxnf7sx-Bi9azHrjRYPEWexR71tQdOuaHmGld1gJRUZaR4xR0YTojacUaJRcoECL9YnNMoZxyCMOXruou8B1Crfu8C__vdhQa5V1TV-dHds/w640-h336/19.PNG&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;- Flutter에서 위에&lt;span style=&quot;font-family: arial;&quot;&gt; 설정들을 완&lt;/span&gt;료후 Run을 했을 때&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: verdana;&quot;&gt;&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #1c1e21; font-family: verdana; font-size: 14.4px;&quot;&gt;Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K&#39;&lt;/span&gt;와 같은 오류 발생 시 아래와 같이 처리해준다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;/android/app/build.gradle 파일에 다음과 같이 추가한다.&lt;/p&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;android &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;    defaultConfig &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;        &lt;/span&gt;&lt;span class=&quot;token comment&quot; style=&quot;box-sizing: border-box; font-style: italic;&quot;&gt;// ...&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;        minSdkVersion &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box;&quot;&gt;16&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;        targetSdkVersion &lt;/span&gt;&lt;span class=&quot;token number&quot; style=&quot;box-sizing: border-box;&quot;&gt;28&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line docusaurus-highlight-code-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; margin: 0 calc(-1*var(--ifm-pre-padding)); padding: 0 var(--ifm-pre-padding); white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;        multiDexEnabled &lt;/span&gt;&lt;span class=&quot;token boolean&quot; style=&quot;box-sizing: border-box;&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;    &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box; display: inline-block;&quot;&gt;
&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;dependencies &lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line docusaurus-highlight-code-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; margin: 0 calc(-1*var(--ifm-pre-padding)); padding: 0 var(--ifm-pre-padding); white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;  implementation &lt;/span&gt;&lt;span class=&quot;token string&quot; style=&quot;box-sizing: border-box;&quot;&gt;&#39;com.android.support:multidex:1.0.3&#39;&lt;/span&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token plain&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;/span&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;span class=&quot;token punctuation&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;최종 파일 app/build.gradle 은 아래와 같다.&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;def &lt;/span&gt;localProperties = &lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;new &lt;/span&gt;Properties()&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;def &lt;/span&gt;localPropertiesFile = rootProject.file(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;local.properties&#39;&lt;/span&gt;)&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;if &lt;/span&gt;(localPropertiesFile.exists()) {&lt;br /&gt;    localPropertiesFile.withReader(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;UTF-8&#39;&lt;/span&gt;) &lt;span style=&quot;font-weight: bold;&quot;&gt;{ &lt;/span&gt;reader &lt;span style=&quot;font-weight: bold;&quot;&gt;-&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;        &lt;/span&gt;localProperties.load(reader)&lt;br /&gt;    &lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;def &lt;/span&gt;flutterRoot = localProperties.getProperty(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;flutter.sdk&#39;&lt;/span&gt;)&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;if &lt;/span&gt;(flutterRoot == &lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {&lt;br /&gt;    &lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;throw new &lt;/span&gt;GradleException(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;Flutter SDK not found. Define location with flutter.sdk in the local.properties file.&quot;&lt;/span&gt;)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;def &lt;/span&gt;flutterVersionCode = localProperties.getProperty(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;flutter.versionCode&#39;&lt;/span&gt;)&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;if &lt;/span&gt;(flutterVersionCode == &lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {&lt;br /&gt;    flutterVersionCode = &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;1&#39;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;def &lt;/span&gt;flutterVersionName = localProperties.getProperty(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;flutter.versionName&#39;&lt;/span&gt;)&lt;br /&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;if &lt;/span&gt;(flutterVersionName == &lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {&lt;br /&gt;    flutterVersionName = &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;1.0&#39;&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;apply &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;plugin&lt;/span&gt;: &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;com.android.application&#39;&lt;br /&gt;&lt;/span&gt;apply &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;from&lt;/span&gt;: &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;&lt;/span&gt;$flutterRoot&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;/packages/flutter_tools/gradle/flutter.gradle&quot;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;android &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    &lt;/span&gt;compileSdkVersion &lt;span style=&quot;color: blue;&quot;&gt;28&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;    &lt;/span&gt;lintOptions &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;        &lt;/span&gt;disable &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;InvalidPackage&#39;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    &lt;/span&gt;defaultConfig &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;        &lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #0073bf; font-style: italic; font-weight: bold;&quot;&gt;TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0073bf; font-style: italic; font-weight: bold;&quot;&gt;        &lt;/span&gt;applicationId &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&quot;com.gauri.media&quot;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;        &lt;/span&gt;minSdkVersion &lt;span style=&quot;color: blue;&quot;&gt;16&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;        &lt;/span&gt;targetSdkVersion &lt;span style=&quot;color: blue;&quot;&gt;28&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: blue;&quot;&gt;        &lt;/span&gt;versionCode flutterVersionCode.toInteger()&lt;br /&gt;        versionName flutterVersionName&lt;br /&gt;        multiDexEnabled &lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;true&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #000043; font-weight: bold;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    &lt;/span&gt;buildTypes &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;        &lt;/span&gt;release &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;// &lt;/span&gt;&lt;span style=&quot;color: #0073bf; font-style: italic; font-weight: bold;&quot;&gt;TODO: Add your own signing config for the release build.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: #0073bf; font-style: italic; font-weight: bold;&quot;&gt;            &lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;// Signing with the debug keys for now, so `flutter run --release` works.&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;            &lt;/span&gt;signingConfig signingConfigs.debug&lt;br /&gt;        &lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    }&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;flutter &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    &lt;/span&gt;source &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;../..&#39;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;dependencies &lt;span style=&quot;font-weight: bold;&quot;&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;// Import the Firebase BoM&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;    &lt;/span&gt;implementation platform(&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;com.google.firebase:firebase-bom:26.0.0&#39;&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;    &lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;// Add the dependency for the Firebase SDK for Google Analytics&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;    // When using the BoM, don&#39;t specify versions in Firebase dependencies&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;    &lt;/span&gt;implementation &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;com.google.firebase:firebase-analytics&#39;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;    &lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;// Add the dependencies for any other desired Firebase products&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;    // https://firebase.google.com/docs/android/setup#available-libraries&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;    &lt;/span&gt;implementation &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;com.android.support:multidex:1.0.3&#39;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;apply &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;plugin&lt;/span&gt;: &lt;span style=&quot;color: green; font-weight: bold;&quot;&gt;&#39;com.google.gms.google-services&#39;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;token-line&quot; style=&quot;box-sizing: border-box; font-family: SFMono-Regular, Menlo, Monaco, Consolas, &amp;quot;Liberation Mono&amp;quot;, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px; white-space: pre;&quot;&gt;6. 터미널에서 flutter doctor를 실행하여 수정해야하는 부분이 있는지 체크한다.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/3515859654121849362/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/11/flutter-using-firestore-with-flutter-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/3515859654121849362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/3515859654121849362'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/11/flutter-using-firestore-with-flutter-1.html' title='[Flutter] Using FireStore with Flutter 1 - Firebase and Flutter Connect(Android)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgC4nMWt-J16CkiGNoCJzJYxWe_UHNSgbcyhNZob_8lPTJdWGnb4unsWzHJb0R2KQr7WaDXhTwzw3LQfI0LPc_agwZmlWVfsQfG6NIIaoyrsVXMZPOFaeWw8-OQsQm75zCdVi68tYnyAWWs/s72-w640-h336-c/111111.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7079335168251950371</id><published>2020-10-26T22:16:00.002-07:00</published><updated>2020-10-26T22:16:40.870-07:00</updated><title type='text'>[Spring Boot]Visual Studio Code에서 개발하기 1 - index 화면까지 보기</title><content type='html'>&lt;p&gt;- https://spring.io/tools&lt;/p&gt;&lt;p&gt;Spring Tools 사이트에서&amp;nbsp; 파일 없음이라 다운로드 안된다니..&amp;nbsp;&lt;/p&gt;&lt;p&gt;Visual Studio Code에서 개발하기로 정함!!&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;공식사이트에서 알려준데로&amp;nbsp;&lt;/p&gt;&lt;p&gt;https://marketplace.visualstudio.com/items?itemName=Pivotal.vscode-boot-dev-pack&lt;/p&gt;&lt;p&gt;에서 install하니까 연결됨.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip3Ekp8ABV9I0wnGFjAg3W05jKH2tZX-3kE05qe3PABHDvW9pYQHZdq-S3b9uwxFTPiFQnjTIkkStMviqH1PSeyl9vqT5rfhiJHoHZ9oDkPUFx9wP2U5nkdP7m_8-vZ0yRY2-RY7yRCMRj/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.44.24.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1049&quot; data-original-width=&quot;2048&quot; height=&quot;328&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip3Ekp8ABV9I0wnGFjAg3W05jKH2tZX-3kE05qe3PABHDvW9pYQHZdq-S3b9uwxFTPiFQnjTIkkStMviqH1PSeyl9vqT5rfhiJHoHZ9oDkPUFx9wP2U5nkdP7m_8-vZ0yRY2-RY7yRCMRj/w640-h328/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.44.24.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc8yAEXkIpfBTMMsDJ4STp4bEYvEKgPFozpSgvX6QQAMNdkB-4TVL8St0s1Lxt16agFQJtB0zph2QsRpRiJLfXld2kyIqYrR9Ms37qQBRBExQo6neueODknN_XWbgqFW71N9B35wCt6_e7/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.45.02.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1049&quot; data-original-width=&quot;2048&quot; height=&quot;328&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjc8yAEXkIpfBTMMsDJ4STp4bEYvEKgPFozpSgvX6QQAMNdkB-4TVL8St0s1Lxt16agFQJtB0zph2QsRpRiJLfXld2kyIqYrR9Ms37qQBRBExQo6neueODknN_XWbgqFW71N9B35wCt6_e7/w640-h328/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.45.02.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-AwKTtQotKWTtI45rsVqF4TPofA73yMUbltZhagXhO8h9kNASxOHxJiru_5UMXsPcF0mH6pwtUP9HUJfhbQTVCJPqdlf-ytQFDk4ERNsYQGBDiN3kllJaan-S7CNIj33IOQiBVVFZFmve/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.45.17.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1079&quot; data-original-width=&quot;2048&quot; height=&quot;338&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi-AwKTtQotKWTtI45rsVqF4TPofA73yMUbltZhagXhO8h9kNASxOHxJiru_5UMXsPcF0mH6pwtUP9HUJfhbQTVCJPqdlf-ytQFDk4ERNsYQGBDiN3kllJaan-S7CNIj33IOQiBVVFZFmve/w640-h338/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.45.17.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKhgacqQ_qDkbndXQzF9XtOiZ8sJqUkF6iRksUrnY-zVg8xqw1nF43PdZoWXRTkHreclit-S7hATT8jFKiOdxvISyBHvgAvxoGgLWNAhCEuQcnb9waYlBmRS_jw6qF68UCa_BEI-Pihie4/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.46.07.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1141&quot; data-original-width=&quot;2048&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiKhgacqQ_qDkbndXQzF9XtOiZ8sJqUkF6iRksUrnY-zVg8xqw1nF43PdZoWXRTkHreclit-S7hATT8jFKiOdxvISyBHvgAvxoGgLWNAhCEuQcnb9waYlBmRS_jw6qF68UCa_BEI-Pihie4/w640-h356/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.46.07.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;Visual studio code에서 install 버튼을 누르면 설치됨.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;3. 자바 버전이 8 이하로 낮은 경우 아래와 같은 오류 메시지가 보이면서 높은 버전의 jdk 설치를 요함.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTJqz5S1ojPLkmZY1R_TTMfT2aBHteIt42G6p-mbzv6xyLn1HKtsLM6rsvCqz0Fd1wOEIHeZAgKuQvhCmlNvIhypvL7KdtlxWxY8iT_arBpvdN8wbGoxusBjOZO5BXiKspPET8zbrYIVt4/s1120/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.47.21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;566&quot; data-original-width=&quot;1120&quot; height=&quot;324&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhTJqz5S1ojPLkmZY1R_TTMfT2aBHteIt42G6p-mbzv6xyLn1HKtsLM6rsvCqz0Fd1wOEIHeZAgKuQvhCmlNvIhypvL7KdtlxWxY8iT_arBpvdN8wbGoxusBjOZO5BXiKspPET8zbrYIVt4/w640-h324/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.47.21.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoX7muGcrSGeLVs1FSWjH_NeDxkKbNuswU4ETRpx1AEL88irbiTzIox-9OchEzP9f2EW3JLhTj5E6ng6NPt4MDV5J5_WD5iaffnz1lDUGhtv-mbuen37FkSiMazbpC_r1ct3fnINwFLXyr/s2148/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.48.03.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;798&quot; data-original-width=&quot;2148&quot; height=&quot;238&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoX7muGcrSGeLVs1FSWjH_NeDxkKbNuswU4ETRpx1AEL88irbiTzIox-9OchEzP9f2EW3JLhTj5E6ng6NPt4MDV5J5_WD5iaffnz1lDUGhtv-mbuen37FkSiMazbpC_r1ct3fnINwFLXyr/w640-h238/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.48.03.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;jdk설치 완료후 위와 같은 오류 메시지가 더이상 보이지 않음.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;4. spring boot project 생성하기&lt;/p&gt;&lt;p&gt;-&amp;nbsp;&lt;a href=&quot;https://code.visualstudio.com/docs/java/java-spring-boot&quot; target=&quot;_blank&quot;&gt;참고링크&lt;/a&gt;&amp;nbsp;: spring boot suppport in vs&lt;/p&gt;&lt;p&gt;- 메뉴 view -&amp;gt;&amp;nbsp;&lt;span style=&quot;background-color: white; color: #444444; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 600;&quot;&gt;Command Palette 에서&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: &amp;quot;Segoe UI&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, Helvetica, Arial, sans-serif; font-size: 16px; font-weight: 600;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f9f2f4; font-family: Menlo, Monaco, Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14.4px;&quot;&gt;Spring Initializr 명령어 호출&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK8qd6n02sVCmjl5gX_GEgFSb9t46A3iX95A4aKhJv13yEXX4jV4MGO-hfjvEIUlKmErvaeDM4kc1rkhFnqFLXGM3Tcb80bX4L7AwMP5Wh9LQBUvnOVw8YWpXceTy_UwFcg1Pni6NIK_0l/s2148/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.52.15.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;844&quot; data-original-width=&quot;2148&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiK8qd6n02sVCmjl5gX_GEgFSb9t46A3iX95A4aKhJv13yEXX4jV4MGO-hfjvEIUlKmErvaeDM4kc1rkhFnqFLXGM3Tcb80bX4L7AwMP5Wh9LQBUvnOVw8YWpXceTy_UwFcg1Pni6NIK_0l/w640-h252/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.52.15.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, Courier New, monospace;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 14.4px;&quot;&gt;- 원하는 프로젝트를 선택한 다음 대화창에 따라 프로젝트 생성.&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, Courier New, monospace;&quot;&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, Courier New, monospace;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNVGdcVKwisiFqzmbR562oUHr8FuwdbjQnnhN6OQalmPtFL_j5r4xQkRE7tMvVUrGzCARgO4voOjLdLvzBTT0es6igkjb1fk14CRpSs7-1FlBp7RZn_i8nd4sA-aBfr2CzsH4ymYNJuo8/s2148/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.52.25.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;844&quot; data-original-width=&quot;2148&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhxNVGdcVKwisiFqzmbR562oUHr8FuwdbjQnnhN6OQalmPtFL_j5r4xQkRE7tMvVUrGzCARgO4voOjLdLvzBTT0es6igkjb1fk14CRpSs7-1FlBp7RZn_i8nd4sA-aBfr2CzsH4ymYNJuo8/w640-h252/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.52.25.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-family: Menlo, Monaco, Consolas, Courier New, monospace;&quot;&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLeE2uHpb8IDb_ieH8mA8cbD16OwubEoyoVzPR8XIoYvFaAya7tqpXIEUbCUssgiOFaXi8e-mRq4S4RAt8Dpv0Zr1hwMhBQRTu_Gxt9idZWGcWhKKBRs6Hi9xpn7OvIgQ7awIwJVbIokx0/s2148/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.52.52.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;844&quot; data-original-width=&quot;2148&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLeE2uHpb8IDb_ieH8mA8cbD16OwubEoyoVzPR8XIoYvFaAya7tqpXIEUbCUssgiOFaXi8e-mRq4S4RAt8Dpv0Zr1hwMhBQRTu_Gxt9idZWGcWhKKBRs6Hi9xpn7OvIgQ7awIwJVbIokx0/w640-h252/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.52.52.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRxztPnsLAW0k6aXdze7Puv5S7KROITNGKmj-4yf4rc7_rHiyjOaJ2mvKSqWu68SWlzaTRkAS8EJ18_WYDYtNO4XHfFoNw5GuuarBx3SVOJVJUPQXIf3qNMSze_WGZvSw7-0uqv4KcKOtu/s2148/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.54.23.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;844&quot; data-original-width=&quot;2148&quot; height=&quot;252&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgRxztPnsLAW0k6aXdze7Puv5S7KROITNGKmj-4yf4rc7_rHiyjOaJ2mvKSqWu68SWlzaTRkAS8EJ18_WYDYtNO4XHfFoNw5GuuarBx3SVOJVJUPQXIf3qNMSze_WGZvSw7-0uqv4KcKOtu/w640-h252/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.54.23.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6hc2vfXTnCBeeSVHzsNkqcghmo-BgMGkLZZV8RGcNEzGWVhNDozM711rgV-42czDC9YpxF-5YMMa5YcjyviVCpxeG5Lw3ZDjTyUyCIkRsPv16T4nvXQ70pN5H_GiUS7bT4GZMwN50z-aR/s1536/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.54.45.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;728&quot; data-original-width=&quot;1536&quot; height=&quot;304&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh6hc2vfXTnCBeeSVHzsNkqcghmo-BgMGkLZZV8RGcNEzGWVhNDozM711rgV-42czDC9YpxF-5YMMa5YcjyviVCpxeG5Lw3ZDjTyUyCIkRsPv16T4nvXQ70pN5H_GiUS7bT4GZMwN50z-aR/w640-h304/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.54.45.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white; font-size: 14.4px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- dependencies는 후에 pom.xml에서 오른쪽 버튼 &amp;gt; Add Starters에서 언제든지 수정이 가능하다.&lt;/p&gt;&lt;p&gt;- 마지막 화면에서 처럼 성공적으로 생성되었다고 나오면 Open을 클릭&lt;/p&gt;&lt;p&gt;- mac인 경우 자동적으로 VS Extensions들이 설치되는데 windows의 경우 install이 각각 필요.&lt;/p&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp;- java 라고 찾아서 아래 화면에서 보이는 요소들이 설치가 되어있어야함.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQb92MIOp3mGE5UM-hbJTcfZLVjPOPOCJEgbEvulcNjZy5DJryGKFqs0AQGajYJ-rorBCPgQv355vELH0vvjOMibCi8DK0GJSZMLooiBJ3ENUZZQiRU9uy1p9197Bn_K7QFyNKNqNz3ku5/s1016/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.08.11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1016&quot; data-original-width=&quot;592&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQb92MIOp3mGE5UM-hbJTcfZLVjPOPOCJEgbEvulcNjZy5DJryGKFqs0AQGajYJ-rorBCPgQv355vELH0vvjOMibCi8DK0GJSZMLooiBJ3ENUZZQiRU9uy1p9197Bn_K7QFyNKNqNz3ku5/w372-h640/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.08.11.png&quot; width=&quot;372&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;- spring boot에서는 기본적으로 jsp/jstl을 지원해주지 않으므로 pom.xml에 추가해 줘야함.&lt;/p&gt;&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;            &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;groupId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;org.apache.tomcat.embed&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;groupId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;            &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;tomcat-embed-jasper&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;         &lt;span style=&quot;color: #6a9955;&quot;&gt;&amp;lt;!--&amp;lt;scope&amp;gt;provided&amp;lt;/scope&amp;gt;--&amp;gt;&lt;/span&gt; &lt;/div&gt;&lt;div&gt;         &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;         &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;            &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;groupId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;javax.servlet&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;groupId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;            &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;jstl&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;artifactId&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;        &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;dependency&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;- src &amp;gt; main아래 webapp &amp;gt; WEB-INF &amp;gt; view &amp;gt; index.jsp를 생성한다.&lt;/p&gt;&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;&amp;lt;&lt;/span&gt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot; pageEncoding=&quot;UTF-8&quot;%&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;&amp;lt;&lt;/span&gt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;DOCTYPE&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;lang&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;ko&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;http-equiv&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;content&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text/html; charset=UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;Spring boot sample&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;Index Page&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;- resources &amp;gt;&amp;nbsp; application.properties 에 아래와 같이 추가해 줘야함.&lt;/p&gt;&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #6a9955;&quot;&gt;#jsp 경로 설정&lt;/span&gt;&lt;/div&gt;&lt;div&gt;spring.mvc.view.prefix=&lt;span style=&quot;color: #ce9178;&quot;&gt;/WEB-INF/view/&lt;/span&gt;&lt;/div&gt;&lt;div&gt;spring.mvc.view.suffix=&lt;span style=&quot;color: #ce9178;&quot;&gt;.jsp&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- controller&amp;gt; MainController.java를 생성.&lt;/p&gt;&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Menlo, Monaco, &amp;quot;Courier New&amp;quot;, monospace; font-size: 12px; line-height: 18px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;&amp;lt;&lt;/span&gt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=UTF-8&quot; pageEncoding=&quot;UTF-8&quot;%&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #f44747;&quot;&gt;&amp;lt;&lt;/span&gt;%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot;%&amp;gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;!&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;DOCTYPE&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;lang&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;ko&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;meta&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;http-equiv&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;Content-Type&quot;&lt;/span&gt; &lt;span style=&quot;color: #9cdcfe;&quot;&gt;content&lt;/span&gt;=&lt;span style=&quot;color: #ce9178;&quot;&gt;&quot;text/html; charset=UTF-8&quot;&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;Spring boot sample&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;head&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;    &lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;Index Page&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;body&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span style=&quot;color: #569cd6;&quot;&gt;html&lt;/span&gt;&lt;span style=&quot;color: grey;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;5. 프로젝트 실행하기.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLX991_qDk05FkLnUH4tnTND82MZNpXuf3i9X3mLyKCRiLbCza35d3NbBBCvOUK6RoU6K9UN5tB1W_HCI96rV2m9f32nPDV0sA1eOENOgscqCLneWJ-crPeBYIcXD5aMZ_aIFJ2uwDBEXn/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.13.52.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLX991_qDk05FkLnUH4tnTND82MZNpXuf3i9X3mLyKCRiLbCza35d3NbBBCvOUK6RoU6K9UN5tB1W_HCI96rV2m9f32nPDV0sA1eOENOgscqCLneWJ-crPeBYIcXD5aMZ_aIFJ2uwDBEXn/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.13.52.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp; - 좌측에 spring-boot-dashboard에서 실행버튼 클릭 시 서버 가동.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;6. 화면 확인&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGudKDYrGJA5HCqBHRi0_j7r7SJOLm7l_oEqhQ2mA_-9i50hYpVMIE04zf8JG1gT1mjjf0oeRaAeYruywaVnngP36bHHq41jESymp5u6BTSpmT2JZ6D9AD6ZwvDaUU9d9y9CsRFd67fNuR/s2048/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.14.54.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1280&quot; data-original-width=&quot;2048&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGudKDYrGJA5HCqBHRi0_j7r7SJOLm7l_oEqhQ2mA_-9i50hYpVMIE04zf8JG1gT1mjjf0oeRaAeYruywaVnngP36bHHq41jESymp5u6BTSpmT2JZ6D9AD6ZwvDaUU9d9y9CsRFd67fNuR/w640-h400/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+2.14.54.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7079335168251950371/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/10/spring-bootvisual-studio-code-1-index.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7079335168251950371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7079335168251950371'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/10/spring-bootvisual-studio-code-1-index.html' title='[Spring Boot]Visual Studio Code에서 개발하기 1 - index 화면까지 보기'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEip3Ekp8ABV9I0wnGFjAg3W05jKH2tZX-3kE05qe3PABHDvW9pYQHZdq-S3b9uwxFTPiFQnjTIkkStMviqH1PSeyl9vqT5rfhiJHoHZ9oDkPUFx9wP2U5nkdP7m_8-vZ0yRY2-RY7yRCMRj/s72-w640-h328-c/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-10-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.44.24.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7784246509316389200</id><published>2020-10-15T23:38:00.001-07:00</published><updated>2020-10-15T23:38:24.641-07:00</updated><title type='text'>[Spring Boot]Visual Studio Code에서 개발하기 2 - lombok 적용하기</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;1. pom.xml에 lombok 추가.&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;div style=&quot;background-color: white; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;org.projectlombok&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;lombok&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;scope&amp;gt;&lt;/span&gt;provided&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;/scope&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;2. VO 클래스에 @Data annotation추가하여 사용.&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; color: blue; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;import&lt;/span&gt;&lt;span style=&quot;background-color: white; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;lombok.*;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;background-color: white; line-height: 19px;&quot;&gt;&lt;br /&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;@&lt;span style=&quot;color: #267f99;&quot;&gt;Data&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&lt;span style=&quot;color: blue;&quot;&gt;public&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;TableSampleVO&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;String&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;searchType&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;String&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;searchValue&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;String&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;wStartDate&lt;/span&gt;;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;String&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;wEndDate&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;rnum&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//&amp;nbsp;순번&lt;/span&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;private&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #267f99;&quot;&gt;int&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;pageIndex&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #098658;&quot;&gt;1&lt;/span&gt;;&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//&amp;nbsp;현재&amp;nbsp;페이지&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;}&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;3. 해당 TableSampleVO를 불러오는 jsp에서 getter 오류 발생.&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; text-align: center; white-space: pre;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic7CT_yHeVcVfNEdClt1Ad-HrmcvE0vpGHzVpM9X6ORASc351-vUtw0iXZdPM4RC_0gg1MtuC6OwLqWorY56rFfkDMHaYKEK3ycW0yu4LO435QWxqi7nZQUHvQbdYy0FtS2lmpXH8ipoMt/s1224/%25EC%2582%25AC%25EB%25B3%25B8+-1-1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;751&quot; data-original-width=&quot;1224&quot; height=&quot;392&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic7CT_yHeVcVfNEdClt1Ad-HrmcvE0vpGHzVpM9X6ORASc351-vUtw0iXZdPM4RC_0gg1MtuC6OwLqWorY56rFfkDMHaYKEK3ycW0yu4LO435QWxqi7nZQUHvQbdYy0FtS2lmpXH8ipoMt/w640-h392/%25EC%2582%25AC%25EB%25B3%25B8+-1-1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style=&quot;font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; white-space: pre;&quot;&gt;4. Visual Studio Code에서 사용시 별도로 플러그인 설치가 필요하다.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Consolas, Courier New, monospace;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;- &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=GabrielBB.vscode-lombok&quot;&gt;https://marketplace.visualstudio.com/items?itemName=GabrielBB.vscode-lombok&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Consolas, Courier New, monospace;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;에서 install 버튼을 눌러 설치하기.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Consolas, Courier New, monospace;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Consolas, Courier New, monospace;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYMkBRRipLjXQmpr8XfhE0PyaezSvy7hG9EAQ8na3OZT3iKs01p-tAZunhPwI1xXd52CH4Fmz-pfrH4JSvOMuTSjya-GrdvGQbW1v2-9AMXObHuzgZQO3wmpsUu-pill2rHqFeFSeDXRqq/s1525/%25EC%2582%25AC%25EB%25B3%25B8+-2-2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;806&quot; data-original-width=&quot;1525&quot; height=&quot;338&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYMkBRRipLjXQmpr8XfhE0PyaezSvy7hG9EAQ8na3OZT3iKs01p-tAZunhPwI1xXd52CH4Fmz-pfrH4JSvOMuTSjya-GrdvGQbW1v2-9AMXObHuzgZQO3wmpsUu-pill2rHqFeFSeDXRqq/w640-h338/%25EC%2582%25AC%25EB%25B3%25B8+-2-2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: Consolas, Courier New, monospace;&quot;&gt;&lt;span style=&quot;font-size: 14px; white-space: pre;&quot;&gt;5. Visual Studio Code 재시작 후 페이지가 제대로 나오는 것을 확인할 수 있다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7784246509316389200/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/10/spring-bootvisual-studio-code-2-lombok.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7784246509316389200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7784246509316389200'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/10/spring-bootvisual-studio-code-2-lombok.html' title='[Spring Boot]Visual Studio Code에서 개발하기 2 - lombok 적용하기'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEic7CT_yHeVcVfNEdClt1Ad-HrmcvE0vpGHzVpM9X6ORASc351-vUtw0iXZdPM4RC_0gg1MtuC6OwLqWorY56rFfkDMHaYKEK3ycW0yu4LO435QWxqi7nZQUHvQbdYy0FtS2lmpXH8ipoMt/s72-w640-h392-c/%25EC%2582%25AC%25EB%25B3%25B8+-1-1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7403071573459100412</id><published>2020-10-07T20:28:00.002-07:00</published><updated>2020-11-23T04:49:18.483-08:00</updated><title type='text'>[Flutter]JSON and serialization 1</title><content type='html'>&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;1. 간단 용어정리&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;- Encoding == serialization == data structure를 string 으로 변경해줌.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;- Decoding == deserialization == string을 data structure로 변경해줌.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;2. 어떤 JSON Serialization 방법이 나에게 맞을까?&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;-&amp;nbsp;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-size: 16px;&quot;&gt;Manual serialization (일반 직렬화) : 소규모 프로젝트&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-family: arial; font-size: 16px;&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; - 기본적으로 제공하는 dart:convert 사용&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-size: 16px;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-size: 16px;&quot;&gt;Automated serialization using code generation&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-family: arial; font-size: 16px;&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;(코드 생성을 통한 자동 직렬화) : 중대형 프로젝트&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-family: arial; font-size: 16px;&quot;&gt;&amp;nbsp; &amp;nbsp; - json_serializable, built_value를 사용.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;3. dart:convert 사용한 JSON 직렬화 두가지 방법.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: arial;&quot;&gt;&lt;b&gt;var&amp;nbsp;&lt;span style=&quot;font-size: inherit;&quot;&gt;jsonString = &#39;&lt;/span&gt;{&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: arial;&quot;&gt;&lt;b&gt;&amp;nbsp; &quot;name&quot;: &quot;John Smith&quot;,&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: arial;&quot;&gt;&lt;b&gt;&amp;nbsp; &quot;email&quot;: &quot;john@example.com&quot;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;background-color: white; font-family: arial;&quot;&gt;&lt;b&gt;}&#39;;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;- Serializing JSON inline 방법.&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #212529; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; color: inherit; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonDecode&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonString&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;Howdy, &lt;/span&gt;&lt;span class=&quot;si&quot; style=&quot;box-sizing: border-box;&quot;&gt;${user[&#39;name&#39;]}&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;!&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;We sent the verification link to &lt;/span&gt;&lt;span class=&quot;si&quot; style=&quot;box-sizing: border-box;&quot;&gt;${user[&#39;email&#39;]}&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;.&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; &amp;nbsp;이 방법은 실행전까지 value의 타입을 모른다는 문제가 있으며&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-family: arial; font-size: 16px;&quot;&gt;&amp;nbsp; &amp;nbsp;type safety, autocompletion and most importantly, compile-time exceptions를 사용수 없다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;- Serializing JSON inside model classes 방법.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; User 클래스를 사용하는 방법으로&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; User.fromJson() 생성자를 통해 map으로 부터 User를 생성한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; User.toJson() 메서드를 통해 User를 map으로 변환한다.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #212529; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; color: inherit; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot; style=&quot;box-sizing: border-box;&quot;&gt;User&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;;&lt;/span&gt;
  &lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;;&lt;/span&gt;

  &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;k&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;

  &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;fromJson&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;)&lt;/span&gt;
      &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;name&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;name&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;],&lt;/span&gt;
        &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;email&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;email&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;];&lt;/span&gt;

  &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;toJson&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&amp;gt;&lt;/span&gt;
    &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;{&lt;/span&gt;
      &lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;name&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt;
      &lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;email&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;email&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;};&lt;/span&gt;
&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #212529; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; color: inherit; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Map&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;userMap&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonDecode&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonString&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;fromJson&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;userMap&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;

&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;Howdy, &lt;/span&gt;&lt;span class=&quot;si&quot; style=&quot;box-sizing: border-box;&quot;&gt;${user.name}&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;!&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;We sent the verification link to &lt;/span&gt;&lt;span class=&quot;si&quot; style=&quot;box-sizing: border-box;&quot;&gt;${user.email}&lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;.&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;User를 인코딩하기 위해서는 jsonEncode()를 사용한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;jsonEncode()가 대신 인코딩을 하기 때문에 toJson()메서드를 호출할 필요는 없다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;highlight&quot; style=&quot;box-sizing: border-box; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #212529; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; color: inherit; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;String&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;json&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonEncode&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;4. json_serializable를 사용한 직렬화.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;https://pub.dev/packages/json_serializable 에 자세한 정보를 찾을수 있다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;a.&amp;nbsp;&lt;span face=&quot;Roboto, sans-serif&quot; style=&quot;background-color: white; color: #4a4a4a; font-size: 16px; font-weight: bolder;&quot;&gt;pubspec.yaml에 추가.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #212529; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; color: inherit; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;dependencies&lt;/span&gt;&lt;span class=&quot;pi&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;c1&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;# Your other regular dependencies here&lt;/span&gt;
  &lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;json_annotation&lt;/span&gt;&lt;span class=&quot;pi&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&amp;lt;latest_version&amp;gt;&lt;/span&gt;

&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;dev_dependencies&lt;/span&gt;&lt;span class=&quot;pi&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt;
  &lt;span class=&quot;c1&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;# Your other dev_dependencies here&lt;/span&gt;
  &lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;build_runner&lt;/span&gt;&lt;span class=&quot;pi&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&amp;lt;latest_version&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;json_serializable&lt;/span&gt;&lt;span class=&quot;pi&quot; style=&quot;box-sizing: border-box;&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&amp;lt;latest_version&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;b. 터미널에서&amp;nbsp;&lt;span style=&quot;background-color: white; font-size: 14px;&quot;&gt;&lt;b&gt;flutter pub get&lt;/b&gt; 를 실행.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;c. user.dart 생성.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;prettyprint lang-dart prettyprinted&quot; style=&quot;background-color: #f8f9fa; border: none; box-sizing: border-box; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;import&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box;&quot;&gt;&#39;package:json_annotation/json_annotation.dart&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// This allows the `User` class to access private members in&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// the generated file. The value for this is (파일명:&lt;b&gt;*).g.dart&lt;/b&gt;, where&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// the star denotes the source file name.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;part&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box;&quot;&gt;&#39;&lt;/span&gt;&lt;span class=&quot;highlight&quot; style=&quot;background: rgb(255, 230, 0); box-sizing: border-box; padding: 2px;&quot;&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box;&quot;&gt;user&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box;&quot;&gt;.g.dart&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt; // 이부분에서 에러표시가 발생함.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;

&lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// JSON 직렬화 로직이 만들어져야 한다고 알려주는 어노테이션.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;highlight&quot; style=&quot;background: rgb(255, 230, 0); box-sizing: border-box; color: red; padding: 2px;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;JsonSerializable&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;()&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;

&lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;class&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;email. this.registDateMill&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;

  &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; name&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; email&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;prettyprint lang-dart prettyprinted&quot; style=&quot;background-color: #f8f9fa; border: none; box-sizing: border-box; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; font-family: arial;&quot;&gt;&lt;pre class=&quot;highlight&quot; style=&quot;box-sizing: border-box; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span class=&quot;c1&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// @JsonKey를 사용하여 네이밍전략을 알려줄수 있다.&lt;/span&gt;&lt;div&gt;&lt;span style=&quot;color: #999999;&quot;&gt;// name: 네이밍 전략, required(t/f): 무조건 포함해야 하는 키 인지 여부, &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: #999999;&quot;&gt;//defaultValue(t/f): Json에 해당 키가 없어도 되거나 값이 &#39;null&#39;인 경우.&lt;/span&gt;&lt;/div&gt;&lt;/code&gt;&lt;/pre&gt;&lt;pre class=&quot;highlight&quot; style=&quot;box-sizing: border-box; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.1rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;nd&quot; color=&quot;inherit&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;b&gt;@JsonKey&lt;/b&gt;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nl&quot; color=&quot;inherit&quot; style=&quot;box-sizing: border-box;&quot;&gt;name:&lt;/span&gt;&lt;span color=&quot;rgba(0, 0, 0, 0)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s&quot; style=&quot;box-sizing: border-box;&quot;&gt;&#39;registration_date_millis&#39;&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box;&quot;&gt;)&lt;/span&gt;&lt;span color=&quot;rgba(0, 0, 0, 0)&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box;&quot;&gt;final&lt;/span&gt;&lt;span color=&quot;rgba(0, 0, 0, 0)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;kt&quot; style=&quot;box-sizing: border-box;&quot;&gt;int&lt;/span&gt;&lt;span color=&quot;rgba(0, 0, 0, 0)&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box;&quot;&gt;registrationDateMillis&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box;&quot;&gt;;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class=&quot;prettyprint lang-dart prettyprinted&quot; style=&quot;background-color: #f8f9fa; border: none; box-sizing: border-box; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// map에서 User를 생성하기 위한 팩토리 생성자.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// Pass the map to the generated `_$UserFromJson()` constructor.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// 생성자의 이름은 클래스 명을 따른다. ( _$+클래스명+FromJson )&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;factory&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;fromJson&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; json&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;)&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; _$&lt;/span&gt;&lt;span class=&quot;highlight&quot; style=&quot;background: rgb(255, 230, 0); box-sizing: border-box; padding: 2px;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;User&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;FromJson&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;json&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;

  &lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// `toJson` JSON  인코딩을 지원을 선언하는 규칙.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// The implementation simply calls the private, generated&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;com&quot; style=&quot;box-sizing: border-box; color: #999999;&quot;&gt;/// helper method `_$UserToJson`. ( _$+클래스명+ToJson)&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;Map&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box;&quot;&gt;dynamic&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; toJson&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;()&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt; _$&lt;/span&gt;&lt;span class=&quot;highlight&quot; style=&quot;background: rgb(255, 230, 0); box-sizing: border-box; padding: 2px;&quot;&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;User&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;ToJson&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;kwd&quot; style=&quot;box-sizing: border-box;&quot;&gt;this&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;);&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box;&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;d. 터미널에서&lt;b&gt;&amp;nbsp;&lt;span style=&quot;background-color: white; font-size: 14px;&quot;&gt;flutter pub run build_runner build&lt;/span&gt;&lt;/b&gt;&amp;nbsp;를 실행.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; - c에서 빨간색 부분을 모두 작성해준다음에 위에 명령어 실행을 시켜야한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; - serialization에 대한 모든 로직이 담김 user.g.dart가 생성된다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; - build_runner에 build 명령은 클래스 변경시 마다 호출해야 함으로&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&amp;nbsp; &amp;nbsp; 일회성이 아닌 지속적인 변경 감지를 위해&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: arial; font-size: 14px;&quot;&gt;&lt;b&gt;&amp;nbsp; &amp;nbsp;flutter pub run build_runner watch&lt;/b&gt;를 실행한다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: arial; font-size: 14px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: arial; font-size: 14px;&quot;&gt;e. json_serialization User 모델을 사용하는 방법: 위에서 사용했던 방법과 똑같다.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: arial; font-size: 14px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;pre class=&quot;highlight&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #212529; font-size: 14px; margin-bottom: 0px; margin-top: 0px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;code style=&quot;box-sizing: border-box; color: inherit; font-size: inherit; overflow-wrap: break-word; word-break: normal;&quot;&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Map&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;userMap&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonDecode&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;jsonString&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;kd&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;var&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;User&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot; style=&quot;box-sizing: border-box; color: #1fbaac;&quot;&gt;fromJson&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;userMap&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;background-color: white; font-family: arial; font-size: 14px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;&lt;span style=&quot;background-color: white; font-size: 14px;&quot;&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;kt&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #1fbaac; font-size: inherit;&quot;&gt;String&lt;/span&gt;&lt;span color=&quot;inherit&quot; style=&quot;background-color: #f8f9fa; font-size: inherit;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #660066; font-size: inherit;&quot;&gt;json&lt;/span&gt;&lt;span color=&quot;inherit&quot; style=&quot;background-color: #f8f9fa; font-size: inherit;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #222222; font-size: inherit;&quot;&gt;=&lt;/span&gt;&lt;span color=&quot;inherit&quot; style=&quot;background-color: #f8f9fa; font-size: inherit;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #660066; font-size: inherit;&quot;&gt;jsonEncode&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #222222; font-size: inherit;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #660066; font-size: inherit;&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;o&quot; style=&quot;background-color: #f8f9fa; box-sizing: border-box; color: #222222; font-size: inherit;&quot;&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7403071573459100412/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/10/flutterjson-and-serialization-1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7403071573459100412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7403071573459100412'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/10/flutterjson-and-serialization-1.html' title='[Flutter]JSON and serialization 1'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-6548582630501031035</id><published>2020-09-22T23:17:00.000-07:00</published><updated>2020-09-22T23:17:07.054-07:00</updated><title type='text'>한줄 CSS 추가로 DARK MODE 표현하기 </title><content type='html'>&lt;p&gt;CSS 템플릿을 무료로 받아쓸수 있는 사이트를 통한 예제.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://bulmatemplates.github.io/bulma-templates/&quot;&gt;https://bulmatemplates.github.io/bulma-templates/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;위의 사이트에서 Admin이라는 제목을 가진 소스를 복사해서 사용합니다.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEv_ezxpBacPFjeLOmi0YzdxZKpTRy1y_p9ImIekI5Y_bthI4CCLgs7u4MHCFNmx_IIhfB10bxd-0VbmmWXHmzdJwYKhfM4aqpkgFmFxvCG1-9RAYtzf8hYLNFvl-Sevtr73JYSZM2V9fC/s2048/%25EA%25B7%25B8%25EB%25A6%25BC0.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1109&quot; data-original-width=&quot;2048&quot; height=&quot;346&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEv_ezxpBacPFjeLOmi0YzdxZKpTRy1y_p9ImIekI5Y_bthI4CCLgs7u4MHCFNmx_IIhfB10bxd-0VbmmWXHmzdJwYKhfM4aqpkgFmFxvCG1-9RAYtzf8hYLNFvl-Sevtr73JYSZM2V9fC/w640-h346/%25EA%25B7%25B8%25EB%25A6%25BC0.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;Visual Studio Code를 열어 index.html에 해당 소스를 복사합니다.&lt;/p&gt;&lt;p&gt;그리고 Dark Mode 실행을 위해 css폴더 및에 main.css파일을 생성한 뒤 index.html에&amp;nbsp;&lt;/p&gt;&lt;pre style=&quot;color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;link&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;rel=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;stylesheet&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/css&quot;&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;href=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;./css/main.css&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;p&gt;를 추가해줍니다.&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNE31CX7ctuMcJsC1PiteDpdY5AQa7m44Qa_TWbVQIO0sDGzznd6TwQMrP-nh80egLq0IT9Nnx4th2YxrcWQaP_DRF0AWj1IKSm6MrYY67lQVvTNNIf_pJcJ95cqIHok8pCA7-aZRGvY9j/s1920/%25EA%25B7%25B8%25EB%25A6%25BC00.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNE31CX7ctuMcJsC1PiteDpdY5AQa7m44Qa_TWbVQIO0sDGzznd6TwQMrP-nh80egLq0IT9Nnx4th2YxrcWQaP_DRF0AWj1IKSm6MrYY67lQVvTNNIf_pJcJ95cqIHok8pCA7-aZRGvY9j/w640-h360/%25EA%25B7%25B8%25EB%25A6%25BC00.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;css폴더의 main.css 파일에 다음과 같이 한줄을 추가시켜줍니다.&lt;/p&gt;&lt;pre style=&quot;color: #333333; line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;color: #555555; font-weight: bold;&quot;&gt;:root&lt;/span&gt; {
    filter: &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;invert&lt;/span&gt;(&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;100&lt;/span&gt;%); 
  }&lt;/pre&gt;&lt;p&gt;해당 파일을 chrome에서 체크하면 다음과 같이 나옵니다.&lt;/p&gt;&lt;p&gt;invert(100%)는 invert(1)로 표현이 가능합니다.&lt;/p&gt;&lt;p&gt;invert(0 - 100%) 혹은 invert(0 - 1)&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQamWsl3lwwye4AoOwveQokt7BYS-PSO0oXZRjE88XAUkD8yrE4XWEBUNvO9oHQxCzaHzUnrGeAbybl-X2vZe7DEF6dWNVaoAVtG_nwnfZOVtS_ACaAaz6710LmyieN2AP9Kpg_PPG3GIn/s1920/%25EA%25B7%25B8%25EB%25A6%25BC000.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQamWsl3lwwye4AoOwveQokt7BYS-PSO0oXZRjE88XAUkD8yrE4XWEBUNvO9oHQxCzaHzUnrGeAbybl-X2vZe7DEF6dWNVaoAVtG_nwnfZOVtS_ACaAaz6710LmyieN2AP9Kpg_PPG3GIn/w640-h360/%25EA%25B7%25B8%25EB%25A6%25BC000.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;h2 style=&quot;background-color: white; box-sizing: border-box; color: #08090a; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 1.7em; font-weight: 400; line-height: 1.25em; margin-bottom: 0.5em; margin-top: calc(var(--article-rythm) * 2); padding: 0px;&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;Toggle를 통한 필터 추가 시 다음과 같은 코드를 작성을 해주면 됩니다.&lt;/div&gt;&lt;div&gt;Enter를 쳤을 경우만&amp;nbsp;&lt;span style=&quot;background-color: #fff0f0; color: #333333;&quot;&gt;dark-mode&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;로 class가 toggle 되도록 코드를 추가합&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;니다&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;pre style=&quot;line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;script&amp;gt;
        &lt;/span&gt;&lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.onkeypress = &lt;/span&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt; (e) {
            e = e || &lt;/span&gt;&lt;span style=&quot;color: #007020;&quot;&gt;window&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.event;

            &lt;/span&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;(e.keyCode === &lt;/span&gt;&lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;13&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;) { &lt;/span&gt;&lt;span style=&quot;color: #888888;&quot;&gt;// enter key &lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;
                &lt;/span&gt;&lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;.documentElement.classList.toggle(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0; color: #333333;&quot;&gt;&#39;dark-mode&#39;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;);

               
            }
        }
&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre style=&quot;line-height: 16.25px; margin-bottom: 0px; margin-top: 0px;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYkyvRg0OfiWrobTfeKbVukMjQNBOMCqh295MKNLrlr0SawxpidVQbSDvQAUdYkxy4fQpGvPr2lxUH6ovO6PXw8Vuw5djV7zVt0g0WFmERUilpGmAUkiIdov2aTRUZsGvh-Ik8D52EJNG-/s1920/%25EA%25B7%25B8%25EB%25A6%25BC6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1083&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjYkyvRg0OfiWrobTfeKbVukMjQNBOMCqh295MKNLrlr0SawxpidVQbSDvQAUdYkxy4fQpGvPr2lxUH6ovO6PXw8Vuw5djV7zVt0g0WFmERUilpGmAUkiIdov2aTRUZsGvh-Ik8D52EJNG-/w640-h360/%25EA%25B7%25B8%25EB%25A6%25BC6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 style=&quot;background-color: white; box-sizing: border-box; color: #08090a; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Helvetica, Arial, sans-serif, &amp;quot;Apple Color Emoji&amp;quot;, &amp;quot;Segoe UI Emoji&amp;quot;, &amp;quot;Segoe UI Symbol&amp;quot;; font-size: 1.7em; font-weight: 400; line-height: 1.25em; margin-bottom: 0.5em; margin-top: calc(var(--article-rythm) * 2); padding: 0px;&quot;&gt;&lt;br /&gt;&lt;/h2&gt;&lt;div&gt;제목 부분만 그대로 유지를 원하는 경우 다음과 같은 코드를 추가해줍니다.&lt;/div&gt;&lt;div&gt;class에 inverted가 포함되어있으면 원본으로 보여지도록 실행되는 코드입니다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;제목 부분은 그대로 보여지도록 class에 inverted를 추가함.&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;background-color: white; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;h1&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color: blue;&quot;&gt;&quot;title&amp;nbsp;inverted&quot;&lt;/span&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Hello,&amp;nbsp;Admin.&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div style=&quot;background-color: white; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&lt;div&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;document&lt;/span&gt;.&lt;span style=&quot;color: #001080;&quot;&gt;onkeypress&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;function&lt;/span&gt;&amp;nbsp;(&lt;span style=&quot;color: #001080;&quot;&gt;e&lt;/span&gt;)&amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;e&lt;/span&gt;&amp;nbsp;=&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;e&lt;/span&gt;&amp;nbsp;||&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;window&lt;/span&gt;.&lt;span style=&quot;color: #001080;&quot;&gt;event&lt;/span&gt;;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #af00db;&quot;&gt;if&lt;/span&gt;(&lt;span style=&quot;color: #001080;&quot;&gt;e&lt;/span&gt;.&lt;span style=&quot;color: #0070c1;&quot;&gt;keyCode&lt;/span&gt;&amp;nbsp;===&amp;nbsp;&lt;span style=&quot;color: #098658;&quot;&gt;13&lt;/span&gt;)&amp;nbsp;{&amp;nbsp;&lt;span style=&quot;color: green;&quot;&gt;//&amp;nbsp;enter&amp;nbsp;key&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;document&lt;/span&gt;.&lt;span style=&quot;color: #0070c1;&quot;&gt;documentElement&lt;/span&gt;.&lt;span style=&quot;color: #0070c1;&quot;&gt;classList&lt;/span&gt;.&lt;span style=&quot;color: #795e26;&quot;&gt;toggle&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&#39;dark-mode&#39;&lt;/span&gt;);&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;document&lt;/span&gt;.&lt;span style=&quot;color: #795e26;&quot;&gt;querySelectorAll&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&#39;.inverted&#39;&lt;/span&gt;).&lt;span style=&quot;color: #795e26;&quot;&gt;forEach&lt;/span&gt;((&lt;span style=&quot;color: #001080;&quot;&gt;result&lt;/span&gt;)&amp;nbsp;&lt;span style=&quot;color: blue;&quot;&gt;=&amp;gt;&lt;/span&gt;&amp;nbsp;{&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #001080;&quot;&gt;result&lt;/span&gt;.&lt;span style=&quot;color: #0070c1;&quot;&gt;classList&lt;/span&gt;.&lt;span style=&quot;color: #795e26;&quot;&gt;toggle&lt;/span&gt;(&lt;span style=&quot;color: #a31515;&quot;&gt;&#39;invert&#39;&lt;/span&gt;);&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;});&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/div&gt;&lt;div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP2PGpqMk5RZWz1DfxSEQUhcyQQVfYjr7uTf0fzmwmqm_N8WtdFMw1zwTQ8nzOY1dB7sATLwpytL8qFVKb8p4OPVE8HmQDU-gGpaxaHuRT-ym0rliK9w_fHVQCqSGpaDk48mzWsn4eFAEB/s1920/%25EA%25B7%25B8%25EB%25A6%25BC7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1079&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjP2PGpqMk5RZWz1DfxSEQUhcyQQVfYjr7uTf0fzmwmqm_N8WtdFMw1zwTQ8nzOY1dB7sATLwpytL8qFVKb8p4OPVE8HmQDU-gGpaxaHuRT-ym0rliK9w_fHVQCqSGpaDk48mzWsn4eFAEB/w640-h360/%25EA%25B7%25B8%25EB%25A6%25BC7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;color: maroon;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;이미지나 사진 같은 경우에도 class 명에 inverted를 추가하면 원본으로&amp;nbsp;&lt;/p&gt;&lt;p&gt;보이게 해줄수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihFgZU7nebK_6nBMr4MjrH1kkorwh8b2brF9Q9i3N0sh6F-mSQboJskGxVRtyMo7R96PubDl1qk3jfrgv_5ZNE6bKmXE1O6ZHB-v5CiFJjswgGQjOMYuiqLdz6x81_cVDo2yYfbNg0GWKx/s1920/%25EA%25B7%25B8%25EB%25A6%25BC8.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1080&quot; data-original-width=&quot;1920&quot; height=&quot;360&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEihFgZU7nebK_6nBMr4MjrH1kkorwh8b2brF9Q9i3N0sh6F-mSQboJskGxVRtyMo7R96PubDl1qk3jfrgv_5ZNE6bKmXE1O6ZHB-v5CiFJjswgGQjOMYuiqLdz6x81_cVDo2yYfbNg0GWKx/w640-h360/%25EA%25B7%25B8%25EB%25A6%25BC8.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style=&quot;background-color: white; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;&amp;lt;img&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;class&lt;/span&gt;=&lt;span style=&quot;color: blue;&quot;&gt;&quot;inverted&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: red;&quot;&gt;src&lt;/span&gt;=&lt;span style=&quot;color: blue;&quot;&gt;&quot;./image/ocean.jpg&quot;&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: maroon;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;위의 코드에서 class를 추가해주면&amp;nbsp;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1_PxBlRkDR0UqmqwDDJMNdWYfbEFB_boiLGyzMpdolrilE8OXgaarsn9HG3zDEKnk71w6qtRSNbEmtIgVf5d49ZMhSCN8CFDolwR-vNpn6UycQfzc6oz_SJpXUA_MYoJFZ6Gppc-mFWVj/s1920/%25EA%25B7%25B8%25EB%25A6%25BC9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1084&quot; data-original-width=&quot;1920&quot; height=&quot;362&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi1_PxBlRkDR0UqmqwDDJMNdWYfbEFB_boiLGyzMpdolrilE8OXgaarsn9HG3zDEKnk71w6qtRSNbEmtIgVf5d49ZMhSCN8CFDolwR-vNpn6UycQfzc6oz_SJpXUA_MYoJFZ6Gppc-mFWVj/w640-h362/%25EA%25B7%25B8%25EB%25A6%25BC9.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;원본 이미지 그대로 볼수 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;위의 invert code는 firefox 브라우저의 background에는 적용이 안된다는 문제점이 있습니다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;- 참고유투브&lt;/p&gt;&lt;p&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;iframe allowfullscreen=&quot;&quot; class=&quot;BLOG_video_class&quot; height=&quot;266&quot; src=&quot;https://www.youtube.com/embed/qimopjP6YoM&quot; width=&quot;320&quot; youtube-src-id=&quot;qimopjP6YoM&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/6548582630501031035/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/09/css-dark-mode.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/6548582630501031035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/6548582630501031035'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/09/css-dark-mode.html' title='한줄 CSS 추가로 DARK MODE 표현하기 '/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhEv_ezxpBacPFjeLOmi0YzdxZKpTRy1y_p9ImIekI5Y_bthI4CCLgs7u4MHCFNmx_IIhfB10bxd-0VbmmWXHmzdJwYKhfM4aqpkgFmFxvCG1-9RAYtzf8hYLNFvl-Sevtr73JYSZM2V9fC/s72-w640-h346-c/%25EA%25B7%25B8%25EB%25A6%25BC0.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7017103189291162878</id><published>2020-04-27T07:02:00.002-07:00</published><updated>2020-04-27T07:02:46.397-07:00</updated><title type='text'>[Flutter] Flutter 4 .Networking and FutureBuilder(from The Boring Flutter Development Show)</title><content type='html'>&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;**Networking and FutureBuilder **&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;1. 이전 글에서 작성한 코드는 고정된 json값을 다루었지만 그부분을 모두 http 통신을 통해 데이터를 가져오는 방식으로 변경한다.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
- https://pub.dev/packages/http를 참고하여&amp;nbsp;&lt;span style=&quot;background-color: white; font-family: &amp;quot;roboto&amp;quot; , sans-serif;&quot;&gt;pubspec.yaml&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;nbsp;파일&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box; font-family: &amp;quot;roboto mono&amp;quot; , &amp;quot;source code pro&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , monospace; font-size: 13.6px; white-space: pre;&quot;&gt;&lt;span class=&quot;hljs-attr&quot; style=&quot;box-sizing: border-box;&quot;&gt;&lt;span style=&quot;background-color: #f8f8f8; font-size: 13.6px;&quot;&gt;dependencies 아래 http&lt;/span&gt;:&lt;/span&gt; &lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box;&quot;&gt;^0.12.0+ 를 추가한다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;box-sizing: border-box; font-family: &amp;quot;roboto mono&amp;quot; , &amp;quot;source code pro&amp;quot; , &amp;quot;menlo&amp;quot; , &amp;quot;bitstream vera sans mono&amp;quot; , &amp;quot;dejavu sans mono&amp;quot; , &amp;quot;monaco&amp;quot; , &amp;quot;consolas&amp;quot; , monospace; font-size: 13.6px; white-space: pre;&quot;&gt;&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box;&quot;&gt;- 사용방법은 Example 탭을 통해 확인하면 된다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;strong style=&quot;box-sizing: border-box; color: #333333; font-family: &amp;quot;Roboto Mono&amp;quot;, &amp;quot;Source Code Pro&amp;quot;, Menlo, &amp;quot;Bitstream Vera Sans Mono&amp;quot;, &amp;quot;DejaVu Sans Mono&amp;quot;, Monaco, Consolas, monospace; font-size: 13.6px; white-space: pre;&quot;&gt;&lt;span class=&quot;hljs-string&quot; style=&quot;box-sizing: border-box; color: #dd1144;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter_test/flutter_test.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutterapp/json_parsing.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dart:convert&#39;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;as&lt;/span&gt; json;
&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:http/http.dart&#39;&lt;/span&gt; &lt;span style=&quot;font-weight: bold;&quot;&gt;as&lt;/span&gt; http; //flutter에서 제공.&lt;/span&gt;

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://github.com/HackerNews/API&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//New, top and best stories api와 id로 개정보를 가져오는 api를 사&lt;/span&gt;
&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main(){
   test(&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;parses item.json over network&quot;&lt;/span&gt;, () &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt;ync{
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://hacker-news.firebaseio.com/v0/item/8863.json?print=pretty&lt;/span&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; url &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;https://hacker-news.firebaseio.com/v0/beststories.json&#39;&lt;/span&gt;;
   &lt;b&gt; &lt;span style=&quot;color: #007020;&quot;&gt;var&lt;/span&gt; response &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; await http.&lt;span style=&quot;color: #007020;&quot;&gt;get&lt;/span&gt;(url);&lt;/b&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;    &lt;b&gt;//해당 url에서 id값 리스트를 결과값으로 받는다.&lt;/b&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt;(response.statusCode &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;200&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; idListJson &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; json.jsonDecode(response.body);
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt;(idListJson.isNotEmpty){
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; storyUrl &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;https://hacker-news.firebaseio.com/v0/item/&lt;/span&gt;&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;${&lt;/span&gt;idListJson.first&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;.json?print=pretty&#39;&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; storyRes &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; await http.&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt;(storyUrl);&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;        &lt;b&gt;//해당 id의 상세 정보를 받아온다.&lt;/b&gt;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt;(storyRes.statusCode &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;200&lt;/span&gt;){
          expect(&lt;span style=&quot;color: red;&quot;&gt;parseArticle&lt;/span&gt;(storyRes.body).by, &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;dhouston&quot;&lt;/span&gt;);

        }
      }
    }
    });
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
parseArticle은 이전 글에서 작성한 json_parsing.json에서 불러온다.&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;Article parseArticle(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; jsonStr){
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; parsed &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; json.jsonDecode(jsonStr);
  Article article &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; standardSerializers.deserializeWith(Article.serializer, parsed);
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; article;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
테스트 실행 시 실행된 정보의 by와 &quot;dhouson&quot; 예상했던 값이 틀려 fail이 떨어진다.&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;이를 바탕으로 맨 첫번째 글 Flutter 1에서 작성한 main.dart 부분을 고정된 json값이 아닌&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;http 통신을 통해 리스트 업 되도록 수정한다.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;http 플러그인을 기본으로 통신 후 Widget이 세팅될수 있도록 FutureBuilder를 사용한다.&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
참고:&amp;nbsp;&lt;a href=&quot;https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html&quot;&gt;https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html&lt;/a&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter/material.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:url_launcher/url_launcher.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;src/articles.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:http/http.dart&#39;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;as&lt;/span&gt; http;

&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main() {
  runApp(MyApp());
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;MyApp&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; StatelessWidget {
  &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// This widget is the root of your application.&lt;/span&gt;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Widget build(BuildContext context) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; MaterialApp(
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Flutter Demo&#39;&lt;/span&gt;,
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;theme:&lt;/span&gt; ThemeData(
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;primarySwatch:&lt;/span&gt; Colors.blue,
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;visualDensity:&lt;/span&gt; VisualDensity.adaptivePlatformDensity,
      ),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;home:&lt;/span&gt; MyHomePage(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Flutter Demo Home Page&#39;&lt;/span&gt;),
    );
  }
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;MyHomePage&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; StatefulWidget {
  MyHomePage({Key key, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.title}) &lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;super&lt;/span&gt;(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;key:&lt;/span&gt; key);

  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; title;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  _MyHomePageState createState() &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _MyHomePageState();
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;_MyHomePageState&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; State&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;MyHomePage&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://hacker-news.firebaseio.com/v0/beststories.json?print=pretty&lt;/span&gt;
  List&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; _ids &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; [&lt;span style=&quot;color: #40a070;&quot;&gt;22972983&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22980932&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22973455&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22990926&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22969533&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22979245&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22972661&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22977637&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22987747&lt;/span&gt;, &lt;span style=&quot;color: #40a070;&quot;&gt;22989280&lt;/span&gt;];

 &lt;b&gt; Future&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; _getArticle(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; id) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt;ync{
    &lt;span style=&quot;color: #007020;&quot;&gt;final&lt;/span&gt; storyUrl &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;https://hacker-news.firebaseio.com/v0/item/&lt;/span&gt;&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;${&lt;/span&gt;id&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;.json?print=pretty&#39;&lt;/span&gt;;
    &lt;span style=&quot;color: #007020;&quot;&gt;final&lt;/span&gt; storyRes &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; await http.&lt;span style=&quot;color: #007020;&quot;&gt;get&lt;/span&gt;(storyUrl);
    &lt;span style=&quot;color: #007020;&quot;&gt;if&lt;/span&gt;(storyRes.statusCode &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;200&lt;/span&gt;){
      &lt;span style=&quot;color: #007020;&quot;&gt;return&lt;/span&gt; parseArticle(storyRes.body);
    }
  }
&lt;/b&gt;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Widget build(BuildContext context) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; Scaffold(
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;appBar:&lt;/span&gt; AppBar(
        &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// Here we take the value from the MyHomePage object that was created by&lt;/span&gt;
        &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// the App.build method, and use it to set our appbar title.&lt;/span&gt;
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; Text(widget.title),
      ),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;body:&lt;/span&gt;  ListView( &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//Listview는 스크롤을 가짐&lt;/span&gt;
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;children:&lt;/span&gt; _ids.map((i)&lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt;
          &lt;b&gt;FutureBuilder&amp;lt;Article&amp;gt;(
            future: _getArticle(i), //통신을 통한 정보를 가져옴.
            builder: (BuildContext context, AsyncSnapshot&amp;lt;Article&amp;gt; snapshot){
              if(snapshot.connectionState == ConnectionState.done){&lt;/b&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;b&gt;                //통신이 끝난 뒤 widget을 생성함.
                return _buildItem(snapshot.data);
              }else{
                return Center(child: CircularProgressIndicator());
              }
            },
          )&lt;/b&gt;
        ).toList(),
      ),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;floatingActionButton:&lt;/span&gt; FloatingActionButton(
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;onPressed:&lt;/span&gt; (){},
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;tooltip:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Increment&#39;&lt;/span&gt;,
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;child:&lt;/span&gt; Icon(Icons.add),
      ), &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// This trailing comma makes auto-formatting nicer for build methods.&lt;/span&gt;
    );
  }

  Widget _buildItem(Article arc){
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; Padding(
      &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//give identity using key! unique!&lt;/span&gt;
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;key:&lt;/span&gt; Key(arc.title),
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;padding:&lt;/span&gt; EdgeInsets.all(&lt;span style=&quot;color: #40a070;&quot;&gt;16.0&lt;/span&gt;),
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;child:&lt;/span&gt; ExpansionTile(
      &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//ExpansionTile안에 자식은 무조건 column 형식.&lt;/span&gt;
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; Text(arc.title, &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;style:&lt;/span&gt; TextStyle(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;fontSize:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;24.0&lt;/span&gt;)),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;children:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;[
         Row(
           &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;mainAxisAlignment:&lt;/span&gt; MainAxisAlignment.spaceEvenly,
           &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;children:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;[
             Text(arc.type),
             IconButton(
               &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;icon:&lt;/span&gt; Icon(Icons.launch),
               &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;color:&lt;/span&gt; Colors.green,
               &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;onPressed:&lt;/span&gt; () &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt;ync {
                 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; url &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;http://&lt;/span&gt;&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;${&lt;/span&gt;arc.url&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;&lt;/span&gt;;
                 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt;(await canLaunch(url)){
                   await launch(url);
                 }
               },
             )
           ],
         )
        ]
      )
    );
  }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglXc62HviatCCTwWCv4g345zRokAE2MWKJrCakPw4squ5848G9gBOYep45kmA4ciwJRAGbHNVGrAJrUlZKE_StZpTDvp9NKgAJOv327c-0XCIQeV6efw66HxkOg53uPMOUc8Fn4VYiyPiV/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+11.02.11.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1230&quot; data-original-width=&quot;546&quot; height=&quot;640&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglXc62HviatCCTwWCv4g345zRokAE2MWKJrCakPw4squ5848G9gBOYep45kmA4ciwJRAGbHNVGrAJrUlZKE_StZpTDvp9NKgAJOv327c-0XCIQeV6efw66HxkOg53uPMOUc8Fn4VYiyPiV/s640/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+11.02.11.png&quot; width=&quot;284&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7017103189291162878/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-flutter-4-networking-and.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7017103189291162878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7017103189291162878'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-flutter-4-networking-and.html' title='[Flutter] Flutter 4 .Networking and FutureBuilder(from The Boring Flutter Development Show)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEglXc62HviatCCTwWCv4g345zRokAE2MWKJrCakPw4squ5848G9gBOYep45kmA4ciwJRAGbHNVGrAJrUlZKE_StZpTDvp9NKgAJOv327c-0XCIQeV6efw66HxkOg53uPMOUc8Fn4VYiyPiV/s72-c/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-27+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+11.02.11.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-5225285243716446319</id><published>2020-04-25T07:25:00.000-07:00</published><updated>2020-04-25T07:29:35.136-07:00</updated><title type='text'>[Flutter] Flutter 3. Immutable value&amp; serialization(from The Boring Flutter Development Show)</title><content type='html'>&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;**JSON serialization, and immutables Part2 **&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;
&lt;b&gt;1. built_value plugin을 사용한다.&lt;/b&gt;&lt;br /&gt;
-&amp;nbsp;&lt;a href=&quot;https://pub.dev/packages/built_value&quot;&gt;https://pub.dev/packages/built_value&lt;/a&gt;:&amp;nbsp;&lt;a class=&quot;er fp gr gs gt gu&quot; href=&quot;https://en.wikipedia.org/wiki/Metaprogramming&quot; rel=&quot;noopener nofollow&quot; style=&quot;-webkit-tap-highlight-color: transparent; background-color: white; background-image: url(&amp;quot;data:image/svg+xml; background-position: 0px calc(1em + 1px); background-repeat: repeat-x; background-size: 1px 1px; box-sizing: inherit; font-family: medium-content-serif-font, Georgia, Cambria, &amp;quot;Times New Roman&amp;quot;, Times, serif; http: //www.w3.org/2000/svg\&amp;quot;&amp;gt;&amp;lt;line x1=\&amp;quot;0\&amp;quot; y1=\&amp;quot;0\&amp;quot; x2=\&amp;quot;1\&amp;quot; y2=\&amp;quot;1\&amp;quot; stroke=\&amp;quot;rgba(0, 0, 0, 0.84)\&amp;quot; /&amp;gt;&amp;lt;/svg&amp;gt;&amp;quot;); letter-spacing: -0.084px; text-decoration-line: none;&quot; target=&quot;_blank&quot;&gt;metaprogramming&lt;/a&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.83921568627451); font-family: , &amp;quot;georgia&amp;quot; , &amp;quot;cambria&amp;quot; , &amp;quot;times new roman&amp;quot; , &amp;quot;times&amp;quot; , serif;&quot;&gt;&lt;span style=&quot;background-color: white; letter-spacing: -0.084px;&quot;&gt;!&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: , &amp;quot;georgia&amp;quot; , &amp;quot;cambria&amp;quot; , &amp;quot;times new roman&amp;quot; , &amp;quot;times&amp;quot; , serif;&quot;&gt;&lt;span style=&quot;background-color: white; letter-spacing: -0.084px;&quot;&gt;&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.83921568627451);&quot;&gt;- &lt;/span&gt;서버와의 통신을 통해 받은&lt;span style=&quot;color: rgba(0 , 0 , 0 , 0.83921568627451);&quot;&gt;&amp;nbsp;&lt;/span&gt;데이터를 가공해서 쉽게 사용할수 있도록 도와주는 플러그인.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: , &amp;quot;georgia&amp;quot; , &amp;quot;cambria&amp;quot; , &amp;quot;times new roman&amp;quot; , &amp;quot;times&amp;quot; , serif;&quot;&gt;&lt;span style=&quot;background-color: white; letter-spacing: -0.084px;&quot;&gt;- Json serializing &amp;amp; deserializing을 할 때에는 StandardJsonPlugin을 사용한다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
2.&amp;nbsp;&lt;a href=&quot;https://github.com/google/built_value.dart&quot;&gt;https://github.com/google/built_value.dart&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
3. 플러그인 사용을 위해서&amp;nbsp;&lt;span style=&quot;background-color: white; color: #24292e; font-family: , , &amp;quot;segoe ui&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif , &amp;quot;apple color emoji&amp;quot; , &amp;quot;segoe ui emoji&amp;quot;; font-size: 16px; font-weight: 600;&quot;&gt;pubspec.yaml&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #24292e; font-family: , , &amp;quot;segoe ui&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif , &amp;quot;apple color emoji&amp;quot; , &amp;quot;segoe ui emoji&amp;quot;; font-size: 16px;&quot;&gt;에 다음과 같이 추가한다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #24292e; font-family: , , &amp;quot;segoe ui&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif , &amp;quot;apple color emoji&amp;quot; , &amp;quot;segoe ui emoji&amp;quot;; font-size: 16px;&quot;&gt;참고:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://github.com/google/built_value.dart/blob/master/example/pubspec.yaml&quot;&gt;https://github.com/google/built_value.dart/blob/master/example/pubspec.yaml&lt;/a&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #24292e; font-family: , , &amp;quot;segoe ui&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif , &amp;quot;apple color emoji&amp;quot; , &amp;quot;segoe ui emoji&amp;quot;; font-size: 16px; font-weight: 600;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;name:&lt;/span&gt; flutterapp
&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;description:&lt;/span&gt; A &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Flutter application.
&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;publish_to:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;none&#39;&lt;/span&gt; &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;#&lt;/span&gt; Remove &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt; line &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; you wish to publish to pub.dev
&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;version:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;1.0&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;1&lt;/span&gt;

&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;environment:&lt;/span&gt;
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;sdk:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;&amp;gt;=2.7.0 &amp;lt;3.0.0&quot;&lt;/span&gt;

&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;dependencies:&lt;/span&gt;
&lt;span style=&quot;color: red;&quot;&gt; &lt;b&gt; built_collection: &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;4.3&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;2&lt;/span&gt;
  built_value: &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;7.0&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;9&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;

  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;flutter:&lt;/span&gt;
    &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;sdk:&lt;/span&gt; flutter


  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;#&lt;/span&gt; The following adds the Cupertino Icons font to your application.
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;#&lt;/span&gt; Use with the CupertinoIcons &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;for&lt;/span&gt; iOS style icons.
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;cupertino_icons:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;0.1&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;3&lt;/span&gt;
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;url_launcher:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;5.4&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;2&lt;/span&gt;

&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;dev_dependencies:&lt;/span&gt;
  &lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;build_runner:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;1.0&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;0&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;build_test:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;0.10&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;3&lt;/span&gt;
  &lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;built_value_generator:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;^&lt;/span&gt;&lt;span style=&quot;color: #40a070;&quot;&gt;7.0&lt;/span&gt;.&lt;span style=&quot;color: #40a070;&quot;&gt;9&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;flutter_test:&lt;/span&gt;
    &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;sdk:&lt;/span&gt; flutter

&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
4. Android &amp;gt; Preferences&amp;gt; Editor&amp;gt; Live Templates 로 이동하여 플러그인 설명에 따라&lt;br /&gt;
boilerplate for Value Types을 생성한다.&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKZjXY5It6ZHkZRIqFvOIWpqVxQDM92EaWIlJE-LlmCJIRvxjUJYDcOKx1CjoS9VFDmzrs9tImlz6BZn9acyG_OQgeKgZSQnbbDNbFUgQzWw_OryAciR0kqiv6r3zUa2M4tW46sXVAQwB9/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-25+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+7.03.21.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1126&quot; data-original-width=&quot;1600&quot; height=&quot;449&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKZjXY5It6ZHkZRIqFvOIWpqVxQDM92EaWIlJE-LlmCJIRvxjUJYDcOKx1CjoS9VFDmzrs9tImlz6BZn9acyG_OQgeKgZSQnbbDNbFUgQzWw_OryAciR0kqiv6r3zUa2M4tW46sXVAQwB9/s640/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-25+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+7.03.21.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white; box-sizing: border-box; color: #24292e; line-height: 1.25; margin-bottom: 16px; margin-top: 24px;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;아래 Template text는 다음과 같이 추가한다.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;abstract&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;$CLASS_NAME&lt;/span&gt;$ &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;implements&lt;/span&gt; Built&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;$CLASS_NAME$, $CLASS_NAME$Builder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  $CLASS_NAME$._();
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;factory&lt;/span&gt; $CLASS_NAME$([&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; Function($CLASS_NAME$Builder) updates]) &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$$$CLASS_NAME$;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
5. lib&amp;gt; json_parsing.dart를 생성한다.&lt;br /&gt;
&lt;a href=&quot;https://github.com/HackerNews/API&quot;&gt;https://github.com/HackerNews/API&lt;/a&gt;&amp;nbsp;를 참고로 Items에 있는 변수들을 지닌 클래스를 생성한다.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;src/articles.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dart:convert&#39;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;as&lt;/span&gt; json;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_value/built_value.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_collection/built_collection.dart&#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;part&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;json_parsing.g.dart&#39;&lt;/span&gt;;
&lt;/span&gt;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;abstract&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;Article&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;implements&lt;/span&gt; Built&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article, ArticleBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; id;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; by;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; descendants;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; score;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; text;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; type;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; title;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; dead;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; pool;
  BuiltList&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; kids;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; url;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; time;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; nickname;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; deleted;

  Article._();
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;factory&lt;/span&gt; Article([&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; Function(ArticleBuilder) updates]) &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$Article;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: red;&quot;&gt;//&lt;/span&gt;&lt;span style=&quot;background-color: white; letter-spacing: -0.084px; white-space: normal;&quot;&gt;&lt;span style=&quot;color: red; font-family: inherit;&quot;&gt;generated code starts with “_$”, to mark it as private and generated&lt;/span&gt;&lt;/span&gt;

}&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 16.25px;&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;part &#39;json_parsing.g.dart&#39;; 를 추가해놔야&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;flutter packages pub run build_runner build&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;color: red;&quot;&gt; &lt;/span&gt;실행&amp;nbsp; 시 json_parsing.g.dart가 자동으로 생성된다.&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 16.25px;&quot;&gt;
&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;한번 빌드 명령 후 그 이후는&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: red; font-family: inherit;&quot;&gt;&lt;b&gt;flutter packages pub run build_runner watch&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 16.25px;&quot;&gt;
&lt;span style=&quot;color: #24292e; font-family: , &amp;quot;consolas&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;menlo&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;실행시 built_value 플러그인과 관련된 작업은 변경된 내용을 계속 체크해서 반영해준다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #24292e; font-family: , &amp;quot;consolas&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;menlo&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;터미널에서 flutter packages pub run build_runner build를 실행한뒤&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;flutter_packages pub run build_runner watch를 실행한다.&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 16.25px;&quot;&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;line-height: 16.25px;&quot;&gt;
&lt;span style=&quot;color: #24292e; font-family: , &amp;quot;consolas&amp;quot; , &amp;quot;liberation mono&amp;quot; , &amp;quot;menlo&amp;quot; , monospace;&quot;&gt;&lt;span style=&quot;background-color: white; font-family: inherit;&quot;&gt;생성된 json_parsing.g.dart에는 toString()등 메소드 자동 생성된다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// GENERATED CODE - DO NOT MODIFY BY HAND&lt;/span&gt;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;part of&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;json_parsing.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;_&lt;/span&gt;$Article &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; Article {
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; id;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; by;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; descendants;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; score;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; text;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; type;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; title;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; dead;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; pool;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; BuiltList&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; kids;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; url;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; time;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; nickname;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; deleted;

  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;factory&lt;/span&gt; _$Article([&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; Function(ArticleBuilder) updates]) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt;
      (&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArticleBuilder()..update(updates)).build();

  _$Article._(
      {&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.id,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.by,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.descendants,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.score,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.text,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.type,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.title,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.dead,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.pool,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.kids,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.url,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.time,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.nickname,
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.deleted})
      &lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;super&lt;/span&gt;._() {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (id &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; BuiltValueNullFieldError(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;, &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;id&#39;&lt;/span&gt;);
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (by &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; BuiltValueNullFieldError(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;, &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;by&#39;&lt;/span&gt;);
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (descendants &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; BuiltValueNullFieldError(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;, &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;descendants&#39;&lt;/span&gt;);
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (kids &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; BuiltValueNullFieldError(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;, &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;kids&#39;&lt;/span&gt;);
    }
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Article rebuild(&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; Function(ArticleBuilder) updates) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt;
      (toBuilder()..update(updates)).build();

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  ArticleBuilder toBuilder() &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArticleBuilder()..replace(&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;);

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;operator&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt;(&lt;span style=&quot;color: #902000;&quot;&gt;Object&lt;/span&gt; other) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (identical(other, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;)) &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;true&lt;/span&gt;;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; other &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;is&lt;/span&gt; Article &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        id &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.id &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        by &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.by &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        descendants &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.descendants &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        score &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.score &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        text &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.text &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        type &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.type &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        title &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.title &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        dead &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.dead &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        pool &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.pool &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        kids &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.kids &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        url &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.url &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        time &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.time &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        nickname &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.nickname &lt;span style=&quot;color: #666666;&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt;
        deleted &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; other.deleted;
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; hashCode {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; $jf($jc(
        $jc(
            $jc(
                $jc(
                    $jc(
                        $jc(
                            $jc(
                                $jc(
                                    $jc(
                                        $jc(
                                            $jc(
                                                $jc(
                                                    $jc($jc(&lt;span style=&quot;color: #40a070;&quot;&gt;0&lt;/span&gt;, id.hashCode),
                                                        by.hashCode),
                                                    descendants.hashCode),
                                                score.hashCode),
                                            text.hashCode),
                                        type.hashCode),
                                    title.hashCode),
                                dead.hashCode),
                            pool.hashCode),
                        kids.hashCode),
                    url.hashCode),
                time.hashCode),
            nickname.hashCode),
        deleted.hashCode));
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; toString() {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; (newBuiltValueToStringHelper(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;id&#39;&lt;/span&gt;, id)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;by&#39;&lt;/span&gt;, by)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;descendants&#39;&lt;/span&gt;, descendants)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;score&#39;&lt;/span&gt;, score)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;text&#39;&lt;/span&gt;, text)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;type&#39;&lt;/span&gt;, type)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;title&#39;&lt;/span&gt;, title)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dead&#39;&lt;/span&gt;, dead)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;pool&#39;&lt;/span&gt;, pool)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;kids&#39;&lt;/span&gt;, kids)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;url&#39;&lt;/span&gt;, url)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;time&#39;&lt;/span&gt;, time)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;nickname&#39;&lt;/span&gt;, nickname)
          ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;deleted&#39;&lt;/span&gt;, deleted))
        .toString();
  }
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;ArticleBuilder&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;implements&lt;/span&gt; Builder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article, ArticleBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  _$Article _$v;

  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; _id;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; id &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._id;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; id(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; id) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._id &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; id;

  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _by;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; by &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._by;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; by(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; by) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._by &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; by;

  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; _descendants;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; descendants &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._descendants;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; descendants(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; descendants) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._descendants &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; descendants;

  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; _score;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; score &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._score;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; score(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; score) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._score &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; score;

  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _text;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; text &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._text;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; text(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; text) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._text &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; text;

  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _type;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; type &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._type;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; type(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; type) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._type &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; type;

  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _title;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; title &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._title;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; title(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; title) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._title &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; title;

  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; _dead;
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; dead &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._dead;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; dead(&lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; dead) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._dead &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; dead;

  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; _pool;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; pool &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._pool;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; pool(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; pool) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._pool &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; pool;

  ListBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; _kids;
  ListBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; kids &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._kids &lt;span style=&quot;color: #666666;&quot;&gt;??=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; ListBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;();
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; kids(ListBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; kids) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._kids &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; kids;

  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _url;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; url &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._url;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; url(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; url) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._url &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; url;

  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; _time;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; time &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._time;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; time(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; time) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._time &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; time;

  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _nickname;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; nickname &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._nickname;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; nickname(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; nickname) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._nickname &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; nickname;

  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; _deleted;
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; deleted &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._deleted;
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;set&lt;/span&gt; deleted(&lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; deleted) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$this._deleted &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; deleted;

  ArticleBuilder();

  ArticleBuilder &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; _$this {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (_$v &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      _id &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.id;
      _by &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.by;
      _descendants &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.descendants;
      _score &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.score;
      _text &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.text;
      _type &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.type;
      _title &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.title;
      _dead &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.dead;
      _pool &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.pool;
      _kids &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.kids&lt;span style=&quot;color: #666666;&quot;&gt;?&lt;/span&gt;.toBuilder();
      _url &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.url;
      _time &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.time;
      _nickname &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.nickname;
      _deleted &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v.deleted;
      _$v &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;;
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;;
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; replace(Article other) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (other &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArgumentError.notNull(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;other&#39;&lt;/span&gt;);
    }
    _$v &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; other &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; _$Article;
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; update(&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; Function(ArticleBuilder) updates) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (updates &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) updates(&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;);
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  _$Article build() {
    _$Article _$result;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;try&lt;/span&gt; {
      _$result &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$v &lt;span style=&quot;color: #666666;&quot;&gt;??&lt;/span&gt;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; _$Article._(
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;id:&lt;/span&gt; id,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;by:&lt;/span&gt; by,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;descendants:&lt;/span&gt; descendants,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;score:&lt;/span&gt; score,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;text:&lt;/span&gt; text,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;type:&lt;/span&gt; type,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; title,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;dead:&lt;/span&gt; dead,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;pool:&lt;/span&gt; pool,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;kids:&lt;/span&gt; kids.build(),
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;url:&lt;/span&gt; url,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;time:&lt;/span&gt; time,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;nickname:&lt;/span&gt; nickname,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;deleted:&lt;/span&gt; deleted);
    } &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;catch&lt;/span&gt; (_) {
      &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; _$failedField;
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;try&lt;/span&gt; {
        _$failedField &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;kids&#39;&lt;/span&gt;;
        kids.build();
      } &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;catch&lt;/span&gt; (e) {
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;throw&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; BuiltValueNestedFieldError(
            &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;, _$failedField, e.toString());
      }
      rethrow;
    }
    replace(_$result);
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; _$result;
  }
}

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
6. test/json_test.dart에서 테스트를 해본다.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter_test/flutter_test.dart&#39;&lt;/span&gt;;
&lt;b&gt;&lt;span style=&quot;color: #007020;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutterapp/json_parsing.dart&#39;&lt;/span&gt;;&lt;/b&gt;

&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main(){
  
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;var&lt;/span&gt; arc &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Article((b) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt;b
  ..score &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;10&lt;/span&gt;
  ..text &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;asefaefae&quot;&lt;/span&gt;
  ..by&lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;test1&quot;&lt;/span&gt;
  ..dead &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;false&lt;/span&gt;
      ..descendants &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;100&lt;/span&gt;
    ..id&lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;39280&lt;/span&gt;
  );

  print(arc.toString());&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;  Article arc2 &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; arc.&lt;b&gt;rebuild&lt;/b&gt;((b) &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; b // Immutable를 위해 rebuild메소드 사용.
  ..nickname &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;hihihi&quot;&lt;/span&gt;);

  print(arc2.toString());
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
테스트 결과는 다음과 같이 나온다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwnb_GF2WO6L4s5TjWq8qIJwYlnUf0VZ1q3Fl61ztesGV3s52aW0Arnc089rGvVoZlU8Ls_G0LR43wI_JP90L5Gf9W7IZes6U3Ua2usms70GrsY1yD6DLpKZntQlHFPMtYDIM4nZGGVs8M/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-25+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+10.40.38.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;583&quot; data-original-width=&quot;1600&quot; height=&quot;232&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjwnb_GF2WO6L4s5TjWq8qIJwYlnUf0VZ1q3Fl61ztesGV3s52aW0Arnc089rGvVoZlU8Ls_G0LR43wI_JP90L5Gf9W7IZes6U3Ua2usms70GrsY1yD6DLpKZntQlHFPMtYDIM4nZGGVs8M/s640/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-25+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+10.40.38.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
6. Serialization을 사용하기 위해서는&amp;nbsp; built_value gitHub에서&lt;br /&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;b&gt;&lt;span style=&quot;color: red; font-family: inherit;&quot;&gt;built_value.dart/example/lib/serializers.dart&lt;/span&gt;&lt;/b&gt; &lt;span style=&quot;font-family: inherit;&quot;&gt;해당 파일의 코드를 복사해온다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;- 참고:&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://medium.com/flutter-community/creating-custom-built-value-serializers-with-builtvalueserializer-46a52c75d4c5&quot;&gt;https://medium.com/flutter-community/creating-custom-built-value-serializers-with-builtvalueserializer-46a52c75d4c5&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&lt;b&gt;- built_value/standard_json_plugin을 사용한다.&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;&lt;span style=&quot;letter-spacing: -0.084px;&quot;&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//built_value.dart/example/lib/serializers.dart&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// Copyright (c) 2015, Google Inc. Please see the AUTHORS file for details.&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// All rights reserved. Use of this source code is governed by a BSD-style&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// license that can be found in the LICENSE file.&lt;/span&gt;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;library&lt;/span&gt; serializers;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_value/serializer.dart&#39;&lt;/span&gt;;
&lt;b&gt;&lt;span style=&quot;color: #007020;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_value/standard_json_plugin.dart&#39;&lt;/span&gt;;&lt;/b&gt;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_collection/built_collection.dart&#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;pre style=&quot;line-height: 16.25px;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;json_package.dart&#39;&lt;/span&gt;;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 16.25px;&quot;&gt;&lt;/pre&gt;
&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;part&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;serializers.g.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// Example of how to use built_value serialization.&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;///&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// Declare a top level [Serializers] field called serializers. Annotate it&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// with [SerializersFor] and provide a `const` `List` of types you want to&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// be serializable.&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;///&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// The built_value code generator will provide the implementation. It will&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// contain serializers for all the types asked for explicitly plus all the&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// types needed transitively via fields.&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;///&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;/// You usually only need to do this once per project.&lt;/span&gt;
&lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;SerializersFor([
 &lt;b&gt; Article //serialize할 대상 클래스 명을 작성.&lt;/b&gt;
])
Serializers serializers &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$serializers;

Serializers standardSerializers &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt;
(serializers.toBuilder()
  ..addPlugin(&lt;b&gt;StandardJsonPlugin()&lt;/b&gt;)
).build();
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
위에서&amp;nbsp; 터미널에서 watch 명령어로 변화를 체크하고 있기 때문에 자동적으로 &lt;b&gt;serializers.g.dart&lt;/b&gt;가 생성된다.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// GENERATED CODE - DO NOT MODIFY BY HAND&lt;/span&gt;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;part of&lt;/span&gt; serializers;

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// **************************************************************************&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// BuiltValueGenerator&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// **************************************************************************&lt;/span&gt;

Serializers _$serializers &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; (&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Serializers().toBuilder()
      ..add(Article.serializer)
      ..addBuilderFactory(
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(BuiltList, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; [&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)]),
          () &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; ListBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;()))
    .build();

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
앞에 글에서 작성했던 코드를 수정하여&lt;br /&gt;
&lt;b&gt;json_parsing.dart&lt;/b&gt;에 최종적으로 다음과 같이 코드를 작성한다.&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//import &#39;src/articles.dart&#39;;&lt;/span&gt;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dart:convert&#39;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;as&lt;/span&gt; json;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_value/built_value.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_collection/built_collection.dart&#39;&lt;/span&gt;;
&lt;b&gt;&lt;span style=&quot;color: #007020;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:built_value/serializer.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;serializers.dart&#39;&lt;/span&gt;;&lt;/b&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;part&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;json_parsing.g.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;abstract&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;Article&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;implements&lt;/span&gt; Built&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article, ArticleBuilder&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;static Serializer&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; get serializer &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _$articleSerializer;&lt;/b&gt;&lt;/span&gt;

  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; id;
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; by;
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; descendants;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; score;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; text;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; type;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; title;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; dead;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; pool;
  BuiltList&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; kids;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; url;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; time;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;BuiltValueField(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;wireName:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;nink_name&#39;&lt;/span&gt;)
  &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; nickname;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;nullable
  &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;get&lt;/span&gt; deleted;

  Article._();
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;factory&lt;/span&gt; Article([&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; Function(ArticleBuilder) updates]) &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; _$Article;
}

Article parseArticle(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; jsonStr){
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; parsed &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; json.jsonDecode(jsonStr);&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;  //serializers.dart에서 standard json plugin을 사용하는 serializer를 생성했기때문에&lt;/span&gt;&lt;/b&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;  //standardSerializers를 사용한다.&lt;/span&gt;&lt;/b&gt;
  Article article &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; standardSerializers.deserializeWith(Article.serializer, parsed);
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; article;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
serializer추가로 인하여 json_parsing.g.dart도 변화가 생긴다.&lt;br /&gt;
아래 부분이 추가되어 있음이 확인 가능하다.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// GENERATED CODE - DO NOT MODIFY BY HAND&lt;/span&gt;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;part of&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;json_parsing.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// **************************************************************************&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// BuiltValueGenerator&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// **************************************************************************&lt;/span&gt;

Serializer&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; &lt;b&gt;_$articleSerializer&lt;/b&gt; &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; _$ArticleSerializer();

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;_&lt;/span&gt;$ArticleSerializer &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;implements&lt;/span&gt; StructuredSerializer&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; Iterable&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Type&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; types &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; [Article, _$Article];
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; wireName &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Article&#39;&lt;/span&gt;;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Iterable&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; serialize(Serializers serializers, Article object,
      {FullType specifiedType &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; FullType.unspecified}) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; result &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;[
      &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;id&#39;&lt;/span&gt;,
      serializers.serialize(object.id, &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)),
      &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;by&#39;&lt;/span&gt;,
      serializers.serialize(object.by, &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)),
      &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;descendants&#39;&lt;/span&gt;,
      serializers.serialize(object.descendants,
          &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)),
      &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;kids&#39;&lt;/span&gt;,
      serializers.serialize(object.kids,
          &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt;
              &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(BuiltList, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; [&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)])),
    ];
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.score &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;score&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.score,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.text &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;text&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.text,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.type &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;type&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.type,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.title &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;title&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.title,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.dead &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dead&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.dead,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.pool &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;pool&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.pool,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.url &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;url&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.url,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.time &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;time&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.time,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.nickname &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;nink_name&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.nickname,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt; (object.deleted &lt;span style=&quot;color: #666666;&quot;&gt;!=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      result
        ..add(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;deleted&#39;&lt;/span&gt;)
        ..add(serializers.serialize(object.deleted,
            &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt;)));
    }
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; result;
  }

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Article deserialize(Serializers serializers, Iterable&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; serialized,
      {FullType specifiedType &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; FullType.unspecified}) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; result &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; ArticleBuilder();

    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; iterator &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serialized.iterator;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;while&lt;/span&gt; (iterator.moveNext()) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; key &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; iterator.current &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
      iterator.moveNext();
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; dynamic value &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; iterator.current;
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;switch&lt;/span&gt; (key) {
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;id&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.id &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;by&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.by &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;descendants&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.descendants &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;score&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.score &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;text&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.text &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;type&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.type &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;title&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.title &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dead&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.dead &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;pool&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.pool &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;kids&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.kids.replace(serializers.deserialize(value,
                  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt;
                      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(BuiltList, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; [&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)]))
              &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; BuiltList&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;Object&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;);
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;url&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.url &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;time&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.time &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;nink_name&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.nickname &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
        &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;deleted&#39;&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt;
          result.deleted &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; serializers.deserialize(value,
              &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;specifiedType:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; FullType(&lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt;)) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;bool&lt;/span&gt;;
          &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;break&lt;/span&gt;;
      }
    }

    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; result.build();
  }
}

    
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// ignore_for_file: always_put_control_body_on_new_line,always_specify_types,annotate_overrides,avoid_annotating_with_dynamic,avoid_as,avoid_catches_without_on_clauses,avoid_returning_this,lines_longer_than_80_chars,omit_local_variable_types,prefer_expression_function_bodies,sort_constructors_first,test_types_in_equals,unnecessary_const,unnecessary_new&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
serializer가 제대로 동작하는지 체크하기 위한 테스트를 실행한다.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter_test/flutter_test.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutterapp/json_parsing.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://github.com/HackerNews/API&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//New, top and best stories api와 id로 개정보를 가져오는 api를 사&lt;/span&gt;
&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main(){

  test(&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;parses item.json&quot;&lt;/span&gt;, (){
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://hacker-news.firebaseio.com/v0/item/8863.json?print=pretty&lt;/span&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; jsonString&lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;&quot;&quot;{&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;        &quot;by&quot; : &quot;dhouston&quot;,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;descendants&quot; : 71,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;id&quot; : 8863,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;kids&quot; : [ 9224, 8917, 8952, 8884, 8887, 8869, 8958, 8940, 8908, 9005, 8873, 9671, 9067, 9055, 8865, 8881, 8872, 8955, 10403, 8903, 8928, 9125, 8998, 8901, 8902, 8907, 8894, 8870, 8878, 8980, 8934, 8943, 8876 ],&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;score&quot; : 104,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;time&quot; : 1175714200,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;title&quot; : &quot;My YC app: Dropbox - Throw away your USB drive&quot;,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;type&quot; : &quot;story&quot;,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;url&quot; : &quot;http://www.getdropbox.com/u/2/screencast.html&quot;&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;  }&quot;&quot;&quot;&lt;/span&gt;;
    expect(parseArticle(jsonString).by, &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;dhouston&quot;&lt;/span&gt;);
  });

 

}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
실행시 테스트 성공임을 확인할 수 있다.&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/5225285243716446319/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-flutter-3-immutable-value.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/5225285243716446319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/5225285243716446319'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-flutter-3-immutable-value.html' title='[Flutter] Flutter 3. Immutable value&amp; serialization(from The Boring Flutter Development Show)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjKZjXY5It6ZHkZRIqFvOIWpqVxQDM92EaWIlJE-LlmCJIRvxjUJYDcOKx1CjoS9VFDmzrs9tImlz6BZn9acyG_OQgeKgZSQnbbDNbFUgQzWw_OryAciR0kqiv6r3zUa2M4tW46sXVAQwB9/s72-c/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-25+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+7.03.21.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-8777178129751011599</id><published>2020-04-21T21:20:00.000-07:00</published><updated>2020-04-25T07:32:31.631-07:00</updated><title type='text'>[Flutter] Flutter 2. Testing&amp;..(from The Boring Flutter Development Show)</title><content type='html'>&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;**Testing, JSON serialization, and immutables Part1 **&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;1. Testing&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;
flutter는 기본적으로 세가지 테스트를 제공하고있다.&lt;br /&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 9pt;&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&lt;i&gt;참고: &lt;/i&gt;&lt;/span&gt;&lt;a href=&quot;https://flutter.dev/docs/testing&quot; style=&quot;background-color: transparent;&quot;&gt;https://flutter.dev/docs/testing&lt;/a&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; font-family: Menlo; font-size: 9pt;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;ul style=&quot;font-family: Menlo; font-size: 9pt;&quot;&gt;
&lt;li&gt;A&amp;nbsp;&lt;a href=&quot;https://flutter.dev/docs/testing#unit-tests&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #1389fd; font-family: Roboto, sans-serif; font-size: 16px; text-decoration-line: none; white-space: normal;&quot;&gt;&lt;span style=&quot;box-sizing: border-box;&quot;&gt;unit test&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;tests a single function, method, or class.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;A&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://flutter.dev/docs/testing#widget-tests&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #1389fd; font-family: Roboto, sans-serif; font-size: 16px; text-decoration-line: none; white-space: normal;&quot;&gt;&lt;span style=&quot;box-sizing: border-box;&quot;&gt;widget test&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;(in other UI frameworks referred to as&lt;/span&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;component test&lt;/span&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;) tests a single widget.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;An&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://flutter.dev/docs/testing#integration-tests&quot; style=&quot;background-color: transparent; box-sizing: border-box; color: #1389fd; font-family: Roboto, sans-serif; font-size: 16px; text-decoration-line: none; white-space: normal;&quot;&gt;&lt;span style=&quot;box-sizing: border-box;&quot;&gt;integration test&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; white-space: normal;&quot;&gt;tests a complete app or a large part of an app.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 16px; white-space: normal;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&lt;span style=&quot;color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: 16px; white-space: normal;&quot;&gt;간단하게 widget test는 이미 프로젝트 생성시 test폴더 아래 widget_test.dart파일로 존재한다.&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAQ1XBoDif5TPC4DQt5MhJdN9jylnssm71jZPMRJhksOBOfZWQDPoDZYpNhpLraRN5BT-1pmtHFGm-sonm32jQVgiYNRC_-LaqzbE0daDA9UYMv_gn2SUuXDccg6FT06UWDa_TwE6U1Rz0/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-22+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.50.14.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1164&quot; data-original-width=&quot;564&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAQ1XBoDif5TPC4DQt5MhJdN9jylnssm71jZPMRJhksOBOfZWQDPoDZYpNhpLraRN5BT-1pmtHFGm-sonm32jQVgiYNRC_-LaqzbE0daDA9UYMv_gn2SUuXDccg6FT06UWDa_TwE6U1Rz0/s320/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-22+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.50.14.png&quot; width=&quot;155&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
에피소드1에서 생성한 코드기준으로 테스트 파일을 생성한다.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;/div&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// This is a basic Flutter widget test.&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// To perform an interaction with a widget in your test, use the WidgetTester&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// utility that Flutter provides. For example, you can send tap and scroll&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// gestures. You can also use WidgetTester to find child widgets in the widget&lt;/span&gt;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// tree, read text, and verify that the values of widget properties are correct.&lt;/span&gt;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter/material.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter_test/flutter_test.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutterapp/main.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//flutter.io/testing&lt;/span&gt;
&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main() {
  testWidgets(&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Clicking tile opens it&#39;&lt;/span&gt;, (WidgetTester tester) &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt;ync {
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// Build our app and trigger a frame.&lt;/span&gt;
    await tester.pumpWidget(MyApp());
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//expect(테스트하려는 값, 기대값)&lt;/span&gt;
    expect(find.byIcon(Icons.launch), findsNothing);

    await tester.tap(find.byType(ExpansionTile).first);
    await tester.pump(); &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//rebuild widget!&lt;/span&gt;

    expect(find.byIcon(Icons.launch), findsOneWidget);
  });
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;
Widget 테스트를 알리는 testWidgets를 사용해서 화면 테스트를 실행한다.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;화면에서와 같이 초록색 launch아이콘을 찾고 findNothing 리스트를 누르기 전에 상세정보가 나오기 전이므로 아무것도 안나옴을 테스트한다.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;해당 줄을 통과하면 ExpansionTile 첫번째 리스트를 클릭,&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;pump()를 통한 widget rebuild후 &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;다시 luanch아이콘을 찾는다.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;위에 테스트 결과는 성공.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;h3&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;span style=&quot;font-family: &amp;quot;apple sd gothic neo&amp;quot;; white-space: normal;&quot;&gt;2.JSON serialization, and immutables Part 1.&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;서버와의 통신 후 받아온 결과를 화면에 받아주기 위해서 필요한 작업을 위해 json serialization에 관련된 작업이 필요하다.&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;white-space: normal;&quot;&gt;&lt;span style=&quot;font-family: inherit;&quot;&gt;
&lt;/span&gt;&lt;/span&gt;
&lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: grey; font-style: italic;&quot;&gt;https://github.com/HackerNews/API 여기에서 정보를 받아다가 테스트를 한다.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;span style=&quot;color: grey;&quot;&gt;&lt;i&gt;
&lt;/i&gt;&lt;/span&gt;- test폴더 아래 json_test.dart파일을 생성한다.&lt;/span&gt;&lt;br /&gt;

&lt;!-- HTML generated using hilite.me --&gt;&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter_test/flutter_test.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutterapp/json_parsing.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main(){
  test(&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;parses top stories.json&quot;&lt;/span&gt;, (){
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty&lt;/span&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; jsonString&lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;[22934126, 22933697, 22933265, 22933810, 22934848, 22933479, 22934704, 22932134, 22924015, 22930965, 22931595, 22925091, 22925087, 22925050, 22928608, 22933182, 22931725, 22918980, 22928557, 22929871, 22924813, 22924839, 22930661, 22933359, 22928292, 22928178, 22934091, 22924929, 22931339, 22925511, 22928726, 22925142, 22927190, 22927221, 22929375, 22934941, 22934199, 22919046, 22930227, 22926238, 22924118, 22932393, 22911533, 22930820, 22923025, 22929287, 22933385, 22930643, 22922454, 22933201, 22933195, 22931570, 22928231, 22932794, 22924869, 22928923, 22924013, 22931690, 22933172, 22931166, 22925442, 22925378, 22922774, 22916281, 22924786, 22928226, 22926080, 22907254, 22925484, 22916782, 22927310, 22918467, 22925878, 22920437, 22921986, 22919072, 22927365, 22919808, 22922582, 22918437, 22918770, 22918208, 22927072, 22919843, 22919721, 22933408, 22915831, 22915837, 22933024, 22926764, 22923195, 22922475, 22923904, 22919845, 22921152, 22918112, 22922372, 22913871, 22920315, 22928571, 22922277, 22920143, 22920952, 22929268, 22929251, 22915200, 22926165, 22920810, 22931401, 22916156, 22921294, 22927309, 22914610, 22932800, 22908224, 22921127, 22909676, 22920267, 22931859, 22920764, 22914927, 22930868, 22908044, 22918603, 22916392, 22912378, 22917447, 22930070, 22926724, 22911379, 22916061, 22909984, 22921580, 22912226, 22920275, 22918563, 22921107, 22914173, 22929277, 22924981, 22915273, 22920181, 22907200, 22919697, 22919711, 22919259, 22928651, 22917944, 22918844, 22920680, 22916756, 22919213, 22927808, 22927723, 22915213, 22915469, 22920750, 22931460, 22922779, 22914089, 22909419, 22931825, 22915584, 22916158, 22907211, 22916979, 22915834, 22915427, 22932326, 22931179, 22915037, 22920083, 22912349, 22911579, 22910288, 22913900, 22911438, 22910702, 22933837, 22925368, 22911911, 22922476, 22908688, 22916869, 22915620, 22909998, 22911356, 22909085, 22910224, 22921263, 22925359, 22931009, 22915062, 22915055, 22928936, 22919500, 22914607, 22910269, 22908124, 22925725, 22914430, 22925573, 22922879, 22914789, 22919242, 22931290, 22910281, 22926884, 22913373, 22922390, 22907306, 22917150, 22914197, 22928870, 22910685, 22914124, 22910701, 22926270, 22911370, 22916127, 22926581, 22917281, 22923383, 22917420, 22907465, 22910254, 22909229, 22915025, 22920520, 22926392, 22915716, 22915660, 22911691, 22907539, 22926950, 22928996, 22928983, 22930622, 22912179, 22928906, 22920983, 22922491, 22927083, 22913519, 22914560, 22930177, 22911522, 22918795, 22923125, 22915517, 22909513, 22908194, 22913750, 22917941, 22910394, 22916787, 22910903, 22919044, 22909570, 22909198, 22918668, 22908734, 22922761, 22914431, 22912431, 22907337, 22915696, 22909290, 22907367, 22912861, 22928717, 22913939, 22918749, 22925600, 22909366, 22920202, 22909134, 22912256, 22923265, 22931151, 22930565, 22930496, 22931230, 22919122, 22919001, 22916908, 22920309, 22912108, 22931739, 22919074, 22923797, 22919329, 22913158, 22914297, 22918958, 22909953, 22919181, 22914373, 22931406, 22909450, 22911000, 22912162, 22930377, 22911750, 22919465, 22908451, 22926256, 22928889, 22916245, 22915411, 22913632, 22907472, 22931153, 22912325, 22910866, 22915330, 22926839, 22912445, 22914987, 22912372, 22908516, 22910532, 22910946, 22924455, 22925973, 22916278, 22907644, 22914595, 22911319, 22917678, 22908639, 22920110, 22916556, 22910616, 22909601, 22918647, 22917029, 22930279, 22916806, 22915874, 22907499, 22917396, 22915460, 22920953, 22921665, 22908457, 22908129, 22907547, 22927146, 22922777, 22917921, 22908908, 22917824, 22912879, 22912252, 22916506, 22922472, 22911894, 22928809, 22926226, 22918988, 22912719, 22915334, 22910237, 22922799, 22910650, 22915679, 22918140, 22918127, 22915596, 22918836, 22917958, 22908480, 22919595, 22919538, 22914467, 22918518, 22920259, 22908781, 22918168, 22913885, 22913818, 22926019, 22910859, 22910721, 22923174, 22921635, 22926480, 22922773, 22919629, 22914437, 22913015, 22921571, 22918771, 22918585, 22911664, 22913140, 22917968, 22917587, 22912684, 22910065, 22913704, 22916139, 22914737, 22913018, 22911178, 22912862, 22909921, 22920494, 22910243, 22916643, 22914633, 22911671, 22911470, 22914427, 22907699, 22911024, 22914145, 22910371, 22929316, 22911725, 22913599, 22909095, 22911437, 22920965, 22923670, 22908063, 22913031, 22912936, 22917984, 22915301, 22920061, 22914483, 22920509, 22916111, 22919227, 22909167, 22918808, 22918404, 22908016, 22907975, 22914375, 22913318, 22920687, 22915227, 22908481, 22910561, 22909786, 22923374, 22914615, 22912353, 22911816, 22919627, 22908380, 22907246, 22933381, 22908489, 22910568, 22909804, 22926234, 22926664, 22927373, 22923647, 22928769, 22927802, 22923232, 22914828, 22926902, 22909524, 22920644, 22918286 ]&quot;&lt;/span&gt;;

    expect(parseTopStories(jsonString).first, &lt;span style=&quot;color: #40a070;&quot;&gt;22934126&lt;/span&gt;);
  });

  test(&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;parses item.json&quot;&lt;/span&gt;, (){
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//https://hacker-news.firebaseio.com/v0/item/8863.json?print=pretty&lt;/span&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; jsonString&lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;&quot;&quot;{ &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;// &#39;사용시오류가 발생함. &quot;&quot;&quot;로 표현해야함.&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;        &quot;by&quot; : &quot;dhouston&quot;,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;descendants&quot; : 71,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;id&quot; : 8863,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;kids&quot; : [ 9224, 8917, 8952, 8884, 8887, 8869, 8958, 8940, 8908, 9005, 8873, 9671, 9067, 9055, 8865, 8881, 8872, 8955, 10403, 8903, 8928, 9125, 8998, 8901, 8902, 8907, 8894, 8870, 8878, 8980, 8934, 8943, 8876 ],&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;score&quot; : 104,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;time&quot; : 1175714200,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;title&quot; : &quot;My YC app: Dropbox - Throw away your USB drive&quot;,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;type&quot; : &quot;story&quot;,&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;    &quot;url&quot; : &quot;http://www.getdropbox.com/u/2/screencast.html&quot;&lt;/span&gt;
&lt;span style=&quot;color: #4070a0;&quot;&gt;  }&quot;&quot;&quot;&lt;/span&gt;;
    expect(parseArticle(jsonString).by, &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;dhouston&quot;&lt;/span&gt;);
  });
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;/pre&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;- parseTopStories와 parseArticle은 json_parsing.dart에 구현.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;src/articles.dart&#39;&lt;/span&gt;;
&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;import &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;dart:convert&#39;&lt;/span&gt; as json; //&lt;/span&gt;&lt;/b&gt;using dart:convert! : parsing json and dart&lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;
&lt;/span&gt;&lt;/b&gt;

List&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; parseTopStories(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; jsonStr){
  &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//take string and generate the map&lt;/span&gt;
  f&lt;span style=&quot;font-style: italic;&quot;&gt;inal parsed = json.jsonDecode(jsonStr);&lt;/span&gt;
  &lt;span style=&quot;font-style: italic;&quot;&gt;inal listOfIds = List&amp;lt;int&amp;gt;.from(parsed);&lt;/span&gt;
  &lt;span style=&quot;font-style: italic;&quot;&gt;return listOfIds;&lt;/span&gt;
}

Article parseArticle(&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; jsonStr){
  &lt;span style=&quot;font-style: italic;&quot;&gt;final parsed = json.jsonDecode(jsonStr);&lt;/span&gt;
  &lt;span style=&quot;font-style: italic;&quot;&gt;Article article = &lt;span style=&quot;color: red;&quot;&gt;Article.fromJson(parsed);&lt;/span&gt;&lt;/span&gt;
  &lt;span style=&quot;font-style: italic;&quot;&gt;return article;&lt;/span&gt;
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;/pre&gt;
&lt;div style=&quot;background-color: white;&quot;&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;parseArticle에서 받은 string을 Article객체로 만들기위해서 에피소드1 &lt;/span&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;article.dart에 fromJson()을 생성한다.&lt;/span&gt;&lt;/div&gt;
&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white;&quot;&gt;&lt;div&gt;

&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;factory&lt;/span&gt; Article.fromJson(Map&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt;, dynamic&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; json){
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//Dart에 factory참고&lt;/span&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt;(json &lt;span style=&quot;color: #666666;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;) {
      &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;null&lt;/span&gt;;
    }
      
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; Article(
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;text:&lt;/span&gt; json[&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;text&#39;&lt;/span&gt;] &lt;span style=&quot;color: #666666;&quot;&gt;??&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;[null]&#39;&lt;/span&gt;,
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;url:&lt;/span&gt; json[&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;url&#39;&lt;/span&gt;],
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;by:&lt;/span&gt; json[&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;by&#39;&lt;/span&gt;],
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;time:&lt;/span&gt; json[&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;time&#39;&lt;/span&gt;],
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;score:&lt;/span&gt; json[&lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;score&#39;&lt;/span&gt;] &lt;span style=&quot;color: #666666;&quot;&gt;??&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;0&lt;/span&gt;,
    );
  }
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;json_test.dart를 테스트한 결과 성공이 떨어진다.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;dart:convert를 통해 serialization이 가능하지만 좀 더 간편하고 효율적으로 직접 코딩하는 대신&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;flutter에서는 plugin을 제공한다.&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/8777178129751011599/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-flutter-2from-boring-flutter.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/8777178129751011599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/8777178129751011599'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-flutter-2from-boring-flutter.html' title='[Flutter] Flutter 2. Testing&amp;..(from The Boring Flutter Development Show)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAQ1XBoDif5TPC4DQt5MhJdN9jylnssm71jZPMRJhksOBOfZWQDPoDZYpNhpLraRN5BT-1pmtHFGm-sonm32jQVgiYNRC_-LaqzbE0daDA9UYMv_gn2SUuXDccg6FT06UWDa_TwE6U1Rz0/s72-c/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-22+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+12.50.14.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-8705380787057439952</id><published>2020-04-20T07:11:00.001-07:00</published><updated>2020-04-25T07:29:56.177-07:00</updated><title type='text'>[Flutter] Flutter1 시작(The Boring Flutter Development Show)</title><content type='html'>&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif; font-size: large;&quot;&gt;Flutter?&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;font-size: x-small;&quot;&gt;-&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;Flutter is &lt;b&gt;Google’s UI toolkit &lt;/b&gt;for building beautiful, natively compiled applications for&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://flutter.dev/docs&quot; style=&quot;background-color: white; box-sizing: border-box; text-align: center; text-decoration-line: none;&quot;&gt;mobile&lt;/a&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://flutter.dev/web&quot; style=&quot;background-color: white; box-sizing: border-box; text-align: center; text-decoration-line: none;&quot;&gt;web&lt;/a&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;, and&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;https://flutter.dev/desktop&quot; style=&quot;background-color: white; box-sizing: border-box; text-align: center; text-decoration-line: none;&quot;&gt;desktop&lt;/a&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&amp;nbsp;from a single codebase.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;1. Android studio로 시작하기&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&amp;nbsp; &amp;nbsp;- 플러그인 부터 업데이트 하기.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; font-weight: bolder;&quot;&gt;Android Studio &amp;gt; Check for Updates&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp;on macOS&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; box-sizing: border-box; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px; font-weight: bolder;&quot;&gt;Help &amp;gt; Check for Updates&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&amp;nbsp;on Linux&lt;/span&gt;&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMaL9c37J9E8SAhM8xJO6j-GjYXc0vX2ayToAKc0Y_B3bqEA999NLL69mYXX5fQFddxgXNi9SUKgt-XoEr4WBke5BA8X2mdG3T-aMb-kv6yes82dcDVI-UfkbJvTiEOOWjvTetbEWtkpVD/s1600/%25ED%2594%258C%25EB%259F%25AC%25EA%25B7%25B8%25EC%259D%25B8%25EC%25A0%2580%25EC%259E%25A5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;527&quot; data-original-width=&quot;635&quot; height=&quot;265&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMaL9c37J9E8SAhM8xJO6j-GjYXc0vX2ayToAKc0Y_B3bqEA999NLL69mYXX5fQFddxgXNi9SUKgt-XoEr4WBke5BA8X2mdG3T-aMb-kv6yes82dcDVI-UfkbJvTiEOOWjvTetbEWtkpVD/s320/%25ED%2594%258C%25EB%259F%25AC%25EA%25B7%25B8%25EC%259D%25B8%25EC%25A0%2580%25EC%259E%25A5.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
위에 Dart, Flutter를 선택하여 Update and Restart 버튼 클릭.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;- 안드로이드 스튜디오 재시작&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp;- 프로젝트 생성하기&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw6M1WU-zLpuHl6zfeMG1pG6UspQCuQ-Dq4v_qodvjBF0tZQ-VZibhbjs68tX-tiake15sNz4xW2ojUNQ1SbnOJGGfi6gfgVAcawqq1MTjatKmCsRiTo0lOYXor8dlMIZa5kMlD1VXPHQp/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-19+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+6.11.20.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;966&quot; data-original-width=&quot;1336&quot; height=&quot;231&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw6M1WU-zLpuHl6zfeMG1pG6UspQCuQ-Dq4v_qodvjBF0tZQ-VZibhbjs68tX-tiake15sNz4xW2ojUNQ1SbnOJGGfi6gfgVAcawqq1MTjatKmCsRiTo0lOYXor8dlMIZa5kMlD1VXPHQp/s320/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-19+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+6.11.20.png&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;2. 간단한 리스트만들기(like todoapp)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #4a4a4a; font-family: &amp;quot;roboto&amp;quot; , sans-serif; font-size: 16px;&quot;&gt;- lib/src/article.dart 파일 생성&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;Article&lt;/span&gt;{
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; text;
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; domain;
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; by;
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; age;
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; score;
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;int&lt;/span&gt; commentsCount;

 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; Article({&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.text, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.domain, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.by,&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.age, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.score, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.commentsCount});
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; articles &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt;  [
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Article(
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;text:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;Circular Shock Acoustic Waves&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;domain:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;wiley.com&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;by:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;zdw&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;age:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;3 hours&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;score:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;177&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;commentsCount:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;62&lt;/span&gt;,
 ),
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Article(
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;text:&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;BMW says electric car mass&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;domain:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;reuters.com&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;by:&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;Mononokay&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;age:&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;2 hours&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;score:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;81&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;commentsCount:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;128&lt;/span&gt;
 ),
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Article(
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;text:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;Evloution Is the New Deep Learning&quot;,&lt;/span&gt;
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;domain:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;sentient.ai&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;by:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;jonbaer&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;age:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;4 hours&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;score:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;200&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;commentsCount:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;248&lt;/span&gt; 
 ),
 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;new&lt;/span&gt; Article(
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;text:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;Animal Medical Learning&quot;,&lt;/span&gt;
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;domain:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;anmei.ai&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;by:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;jonbaer&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;age:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;8 hours&quot;&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;score:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;150&lt;/span&gt;,
  &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;commentsCount:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;22&lt;/span&gt;
 )
]
&lt;/pre&gt;
&lt;/div&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: &amp;quot;arial&amp;quot; , &amp;quot;helvetica&amp;quot; , sans-serif;&quot;&gt;&lt;span style=&quot;background-color: white; text-align: center;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;
&lt;br /&gt;
A. ListTile를 이용한 todolist&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;package:flutter/material.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;package:url_launcher/url_launcher.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;src/articles.dart&#39;&lt;/span&gt;;

void main() {
  runApp(MyApp());
}

&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #bb0066; font-weight: bold;&quot;&gt;MyApp&lt;/span&gt; extends StatelessWidget {
  &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; This widget &lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;is&lt;/span&gt; the root of your application&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;
  &lt;span style=&quot;color: #555555; font-weight: bold;&quot;&gt;@override&lt;/span&gt;
  Widget build(BuildContext context) {
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; MaterialApp(
      title: &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;Flutter Demo&#39;&lt;/span&gt;,
      theme: ThemeData(
        primarySwatch: Colors&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;blue,
        visualDensity: VisualDensity&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;adaptivePlatformDensity,
      ),
      home: MyHomePage(title: &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;Flutter Demo Home Page&#39;&lt;/span&gt;),
    );
  }
}

&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #bb0066; font-weight: bold;&quot;&gt;MyHomePage&lt;/span&gt; extends StatefulWidget {
  MyHomePage({Key key, this&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;title}) : &lt;span style=&quot;color: #007020;&quot;&gt;super&lt;/span&gt;(key: key);

  final String title;

  &lt;span style=&quot;color: #555555; font-weight: bold;&quot;&gt;@override&lt;/span&gt;
  _MyHomePageState createState() &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; _MyHomePageState();
}

&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #bb0066; font-weight: bold;&quot;&gt;_MyHomePageState&lt;/span&gt; extends State&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;MyHomePage&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt; {
  List&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;Article&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt; articleList &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; articles;


  &lt;span style=&quot;color: #555555; font-weight: bold;&quot;&gt;@override&lt;/span&gt;
  Widget build(BuildContext context) {
    &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; This method &lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;is&lt;/span&gt; rerun every time setState &lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;is&lt;/span&gt; called, &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; instance &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;as&lt;/span&gt; done
    &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; by the _incrementCounter method above&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;
    &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt;
    &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; The Flutter framework has been optimized to make rerunning build methods
    &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; fast, so that you can just rebuild anything that needs updating rather
    &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; than having to individually change instances of widgets&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; Scaffold(
      appBar: AppBar(
        &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; Here we take the value &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;from&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;the&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;MyHomePage&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;object&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;that&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;was&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;created&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;by&lt;/span&gt;
        &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; the App&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;build method, &lt;span style=&quot;color: black; font-weight: bold;&quot;&gt;and&lt;/span&gt; use it to &lt;span style=&quot;color: #007020;&quot;&gt;set&lt;/span&gt; our appbar title&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;
        title: Text(widget&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;title),
      ),
      body: ListView( &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt;Listview&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;는&lt;/span&gt; &lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;스크롤을&lt;/span&gt; &lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;가짐&lt;/span&gt;
        children: articleList&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;map(_buildItem)&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;toList(),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: (){},
        tooltip: &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;Increment&#39;&lt;/span&gt;,
        child: Icon(Icons&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;add),
      ), &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt; This trailing comma makes auto&lt;span style=&quot;color: #333333;&quot;&gt;-&lt;/span&gt;formatting nicer &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;for&lt;/span&gt; build methods&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;
    );
  }

  Widget _buildItem(Article arc){
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; Padding(padding: EdgeInsets&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;all(&lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;16.0&lt;/span&gt;),
    child: ListTile(
      title: Text(arc&lt;span style=&quot;color: #333333;&quot;&gt;.&lt;/span&gt;text, style: TextStyle(fontSize: &lt;span style=&quot;color: #6600ee; font-weight: bold;&quot;&gt;24.0&lt;/span&gt;)),
      subtitle: Text(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;${arc.commentsCount} comments&quot;&lt;/span&gt;),
      onTap: () async{
        &lt;span style=&quot;color: #333333;&quot;&gt;//&lt;/span&gt;TODO: URL Launcher&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;을&lt;/span&gt; &lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;사용&lt;/span&gt;
        String url &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;http://${arc.domain}&quot;&lt;/span&gt;;
        &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;(await canLaunch(url)){
          await launch(url);
        }
      },
      )
    );
  }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE0tsmXWi8UFNCOy7wv_h88QpY4hc_1nZxeqponhdnwhGuIUCuf3-DgNj2io1h2aKgctwJdREmIjhyiytARNfMZFflTemTWxjS9i31iv7bGFdk2wT-a4jQzBzhMHxqRLa1hVV19PNNv3eh/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-20+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+5.51.48.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1110&quot; data-original-width=&quot;578&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhE0tsmXWi8UFNCOy7wv_h88QpY4hc_1nZxeqponhdnwhGuIUCuf3-DgNj2io1h2aKgctwJdREmIjhyiytARNfMZFflTemTWxjS9i31iv7bGFdk2wT-a4jQzBzhMHxqRLa1hVV19PNNv3eh/s320/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-20+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+5.51.48.png&quot; width=&quot;166&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
B. ExpansionTile을 이용한 todolist&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #f0f0f0; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:flutter/material.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;package:url_launcher/url_launcher.dart&#39;&lt;/span&gt;;
&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;src/articles.dart&#39;&lt;/span&gt;;

&lt;span style=&quot;color: #902000;&quot;&gt;void&lt;/span&gt; main() {
  runApp(MyApp());
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;MyApp&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; StatelessWidget {
  &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// This widget is the root of your application.&lt;/span&gt;
  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Widget build(BuildContext context) {
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; MaterialApp(
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Flutter Demo&#39;&lt;/span&gt;,
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;theme:&lt;/span&gt; ThemeData(
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;primarySwatch:&lt;/span&gt; Colors.blue,
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;visualDensity:&lt;/span&gt; VisualDensity.adaptivePlatformDensity,
      ),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;home:&lt;/span&gt; MyHomePage(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Flutter Demo Home Page&#39;&lt;/span&gt;),
    );
  }
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;MyHomePage&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; StatefulWidget {
  MyHomePage({Key key, &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;this&lt;/span&gt;.title}) &lt;span style=&quot;color: #666666;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;super&lt;/span&gt;(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;key:&lt;/span&gt; key);

  &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; &lt;span style=&quot;color: #902000;&quot;&gt;String&lt;/span&gt; title;

  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  _MyHomePageState createState() &lt;span style=&quot;color: #666666;&quot;&gt;=&amp;gt;&lt;/span&gt; _MyHomePageState();
}

&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;class&lt;/span&gt; &lt;span style=&quot;color: #0e84b5; font-weight: bold;&quot;&gt;_MyHomePageState&lt;/span&gt; &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;extends&lt;/span&gt; State&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;MyHomePage&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; {
  List&lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Article&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt; articleList &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; articles;


  &lt;span style=&quot;border: 1px solid #FF0000;&quot;&gt;@&lt;/span&gt;override
  Widget build(BuildContext context) {
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// This method is rerun every time setState is called, for instance as done&lt;/span&gt;
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// by the _incrementCounter method above.&lt;/span&gt;
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//&lt;/span&gt;
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// The Flutter framework has been optimized to make rerunning build methods&lt;/span&gt;
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// fast, so that you can just rebuild anything that needs updating rather&lt;/span&gt;
    &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// than having to individually change instances of widgets.&lt;/span&gt;
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; Scaffold(
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;appBar:&lt;/span&gt; AppBar(
        &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// Here we take the value from the MyHomePage object that was created by&lt;/span&gt;
        &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// the App.build method, and use it to set our appbar title.&lt;/span&gt;
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; Text(widget.title),
      ),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;body:&lt;/span&gt; &lt;b&gt;&lt;span style=&quot;color: red;&quot;&gt;RefreshIndicator&lt;/span&gt;&lt;/b&gt;(
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;onRefresh:&lt;/span&gt; () &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt;ync{ &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//a[Future] must complete when the refresh operation is finished.&lt;/span&gt;
          await Future.delayed(&lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;const&lt;/span&gt; Duration(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;seconds:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;1&lt;/span&gt;));
          setState((){ 
            &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//새로고침이 끝나면 맨 첫번째 목록이 사라짐.&lt;/span&gt;
            &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//setState()안에 구현하지 않으면 아무 변화가 없음.&lt;/span&gt;
            articleList.removeAt(&lt;span style=&quot;color: #40a070;&quot;&gt;0&lt;/span&gt;);
          });
        },
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;child:&lt;/span&gt; ListView( &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//Listview는 스크롤을 가짐&lt;/span&gt;
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;children:&lt;/span&gt; articleList.map(_buildItem).toList(),
         ),
      ),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;floatingActionButton:&lt;/span&gt; FloatingActionButton(
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;onPressed:&lt;/span&gt; (){},
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;tooltip:&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&#39;Increment&#39;&lt;/span&gt;,
        &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;child:&lt;/span&gt; Icon(Icons.add),
      ), &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// This trailing comma makes auto-formatting nicer for build methods.&lt;/span&gt;
    );
  }

  Widget _buildItem(Article arc){
    &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;return&lt;/span&gt; Padding(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;padding:&lt;/span&gt; EdgeInsets.all(&lt;span style=&quot;color: #40a070;&quot;&gt;16.0&lt;/span&gt;),
    &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;child:&lt;/span&gt; &lt;span style=&quot;color: red;&quot;&gt;&lt;b&gt;ExpansionTile&lt;/b&gt;&lt;/span&gt;(
      &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//ExpansionTile안에 자식은 무조건 column 형식.&lt;/span&gt;
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;title:&lt;/span&gt; Text(arc.text, &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;style:&lt;/span&gt; TextStyle(&lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;fontSize:&lt;/span&gt; &lt;span style=&quot;color: #40a070;&quot;&gt;24.0&lt;/span&gt;)),
      &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;children:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;[
         Row(
           &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;mainAxisAlignment:&lt;/span&gt; MainAxisAlignment.spaceEvenly,
           &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;//start: start on the left&lt;/span&gt;
           &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// end: start on the right&lt;/span&gt;
           &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// spaceEvenly&lt;/span&gt;
           &lt;span style=&quot;color: #60a0b0; font-style: italic;&quot;&gt;// spacebetween:&lt;/span&gt;
           &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;children:&lt;/span&gt; &lt;span style=&quot;color: #666666;&quot;&gt;&amp;lt;&lt;/span&gt;Widget&lt;span style=&quot;color: #666666;&quot;&gt;&amp;gt;&lt;/span&gt;[
             Text(&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;${&lt;/span&gt;arc.commentsCount&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt; comment&quot;&lt;/span&gt;),
             IconButton(
               &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;icon:&lt;/span&gt; Icon(Icons.launch),
               &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;color:&lt;/span&gt; Colors.green,
               &lt;span style=&quot;color: #002070; font-weight: bold;&quot;&gt;onPressed:&lt;/span&gt; () &lt;span style=&quot;color: #666666;&quot;&gt;as&lt;/span&gt;ync {
                 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;final&lt;/span&gt; url &lt;span style=&quot;color: #666666;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;http://&lt;/span&gt;&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;${&lt;/span&gt;arc.domain&lt;span style=&quot;color: #70a0d0; font-style: italic;&quot;&gt;}&lt;/span&gt;&lt;span style=&quot;color: #4070a0;&quot;&gt;&quot;&lt;/span&gt;;
                 &lt;span style=&quot;color: #007020; font-weight: bold;&quot;&gt;if&lt;/span&gt;(await canLaunch(url)){
                   await launch(url);
                 }
               },
             )
           ],
         )
        ]
      )
    );
  }
}
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieOt0dqF4SY0kHY-AIhk8iUkMIjOf-Of_4tKUKgtXELUIO0UWRW7lPkY6piOWqiJYpzbLgFQXT90qnsh1F-dQc47Cx0MgQQC70GsdzeoUHNHLqZAyF0Lza7MzsjsAuDKipxTVze1eVmSEF/s1600/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-20+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+11.08.43.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;1128&quot; data-original-width=&quot;560&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieOt0dqF4SY0kHY-AIhk8iUkMIjOf-Of_4tKUKgtXELUIO0UWRW7lPkY6piOWqiJYpzbLgFQXT90qnsh1F-dQc47Cx0MgQQC70GsdzeoUHNHLqZAyF0Lza7MzsjsAuDKipxTVze1eVmSEF/s320/%25E1%2584%2589%25E1%2585%25B3%25E1%2584%258F%25E1%2585%25B3%25E1%2584%2585%25E1%2585%25B5%25E1%2586%25AB%25E1%2584%2589%25E1%2585%25A3%25E1%2586%25BA+2020-04-20+%25E1%2584%258B%25E1%2585%25A9%25E1%2584%2592%25E1%2585%25AE+11.08.43.png&quot; width=&quot;158&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/8705380787057439952/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-day-1-flutter-boring-flutter.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/8705380787057439952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/8705380787057439952'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2020/04/flutter-day-1-flutter-boring-flutter.html' title='[Flutter] Flutter1 시작(The Boring Flutter Development Show)'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMaL9c37J9E8SAhM8xJO6j-GjYXc0vX2ayToAKc0Y_B3bqEA999NLL69mYXX5fQFddxgXNi9SUKgt-XoEr4WBke5BA8X2mdG3T-aMb-kv6yes82dcDVI-UfkbJvTiEOOWjvTetbEWtkpVD/s72-c/%25ED%2594%258C%25EB%259F%25AC%25EA%25B7%25B8%25EC%259D%25B8%25EC%25A0%2580%25EC%259E%25A5.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-1281696028832217471</id><published>2019-11-10T00:15:00.000-08:00</published><updated>2019-11-10T00:15:22.218-08:00</updated><title type='text'>[Flutter] Flutter layout Row,Column,Wrap</title><content type='html'>&lt;br /&gt;
- 자주쓰는 Flutter Layout은 Container, Row, Column, Wrap이 있다.&lt;br /&gt;
&lt;br /&gt;
- Flutter layout의 속성들을 보면 CSS에서 div { display:flex; }일때의 효과와 비슷하다.&lt;br /&gt;
&lt;br /&gt;
- css에서&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&amp;nbsp;**align-items(y축)&lt;br /&gt;
&lt;span style=&quot;color: #2e2f3e;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #2e2f3e;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; color: #2e2f3e; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;flex-start&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;: cross-start margin edge of the items is placed on the cross-start line&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #2e2f3e;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; color: #2e2f3e; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;flex-end&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;: cross-end margin edge of the items is placed on the cross-end line&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #2e2f3e;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; color: #2e2f3e; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;center&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;: items are centered in the cross-axis&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #2e2f3e;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; color: #2e2f3e; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;baseline&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;: items are aligned such as their baselines align&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #2e2f3e;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; color: #2e2f3e; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;stretch&lt;/code&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: white; box-sizing: border-box; color: #2e2f3e; font-weight: 700;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #2e2f3e; text-indent: -1.5rem;&quot;&gt;): stretch to fill the container (still respect min-width/max-width&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&amp;nbsp; &amp;nbsp;** justify-content(x축)&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;flex-start&lt;/code&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;box-sizing: border-box;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;): items are packed toward the start line&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;flex-end&lt;/code&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;: items are packed toward to end line&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;center&lt;/code&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;: items are centered along the line&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;space-between&lt;/code&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;: items are evenly distributed in the line; first item is on the start line, last item on the end line&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;space-around&lt;/code&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;: items are evenly distributed in the line with equal space around them&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;code style=&quot;-webkit-box-decoration-break: clone; background-attachment: initial; background-clip: initial; background-image: linear-gradient(to right, rgb(252, 227, 236), rgb(255, 232, 204)); background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border-radius: 0.2rem; box-sizing: border-box; overflow-wrap: break-word; padding: 0.1rem 0.3rem 0.2rem;&quot;&gt;space-evenly&lt;/code&gt;&lt;span style=&quot;background-color: white; text-indent: -1.5rem;&quot;&gt;: items are distributed so that the spacing between any two adjacent alignment subjects, before the first alignment subject, and after the last alignment subject is the same&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAYhPwWX1cAGArIhllEVm6Xy-tIWxQPqgXI_704UebTbGKEddB5aJIyl0pugc2QuZ_bIPSnlwI1zl2unor5VEw9vJRuA7EEbdIsOmhwtthnRVAZH3GgeLqCDkd1NFA-_3yCoB4TI1fykLc/s1600/20191110_163819.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;423&quot; data-original-width=&quot;757&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAYhPwWX1cAGArIhllEVm6Xy-tIWxQPqgXI_704UebTbGKEddB5aJIyl0pugc2QuZ_bIPSnlwI1zl2unor5VEw9vJRuA7EEbdIsOmhwtthnRVAZH3GgeLqCDkd1NFA-_3yCoB4TI1fykLc/s640/20191110_163819.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;-&amp;nbsp; flutter에서&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;mainAxisAlignment =&amp;gt; align-items&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp;crossAxisAlignment =&amp;gt; justify-content&lt;/b&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2fT_Rap2RW9xHA5yeSMPdM4feJgr6yfBbo5XVxPohxdnzNYJbJtPFdx6JMOsMCqm8qeQ7GjCwQMEka_eqD61jo8BtqjA3qs3Y3nHC_e-lJjdIuekpL3VT0NmY-heGpmhRCPzlf7RwLgNl/s1600/layout2.png&quot; imageanchor=&quot;1&quot; style=&quot;font-family: ratio, sans-serif; font-size: 20px; margin-left: 1em; margin-right: 1em; text-align: center;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;514&quot; data-original-width=&quot;882&quot; height=&quot;372&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2fT_Rap2RW9xHA5yeSMPdM4feJgr6yfBbo5XVxPohxdnzNYJbJtPFdx6JMOsMCqm8qeQ7GjCwQMEka_eqD61jo8BtqjA3qs3Y3nHC_e-lJjdIuekpL3VT0NmY-heGpmhRCPzlf7RwLgNl/s640/layout2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-dart prettyprinted&quot; style=&quot;background-color: #f8f9fa; border: none; box-sizing: border-box; color: #212529; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 14px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;span class=&quot;highlight&quot; style=&quot;background: rgb(255, 253, 231); box-sizing: border-box; padding: 2px;&quot;&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Column&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  mainAxisAlignment&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;spaceEvenly&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  children&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;images/pic1.jpg&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;images/pic2.jpg&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;images/pic3.jpg&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;pre class=&quot;prettyprint lang-dart prettyprinted&quot; style=&quot;background-color: #f8f9fa; border: none; box-sizing: border-box; color: #212529; font-family: &amp;quot;Roboto Mono&amp;quot;, monospace; font-size: 14px; overflow: auto; padding: 0.75rem 1rem;&quot;&gt;&lt;span class=&quot;highlight&quot; style=&quot;background: rgb(255, 253, 231); box-sizing: border-box; padding: 2px;&quot;&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Row&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  mainAxisAlignment&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;MainAxisAlignment&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;spaceEvenly&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;,&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  children&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt; &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;images/pic1.jpg&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;images/pic2.jpg&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
    &lt;/span&gt;&lt;span class=&quot;typ&quot; style=&quot;box-sizing: border-box; color: #660066;&quot;&gt;Image&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;asset&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;str&quot; style=&quot;box-sizing: border-box; color: #1b87c9;&quot;&gt;&#39;images/pic3.jpg&#39;&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;),&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
  &lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;pln&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;pun&quot; style=&quot;box-sizing: border-box; color: #222222;&quot;&gt;);&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
*Row/Column만으로 Layout을 만드는 경우 발생할수 있는 문제점들.&lt;br /&gt;
&lt;br /&gt;
- Row/Column 의 경우 children에서 플랫폼 사이즈를 넘게 되면 overflow가 발생한다.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;=&amp;gt; 이때는 Expanded를 사용한다.&lt;br /&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;
&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Demo&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;extends&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;StatelessWidget&lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;@override&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Widget&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;build&lt;/span&gt;(&lt;span style=&quot;color: #4ec9b0;&quot;&gt;BuildContext&lt;/span&gt;&amp;nbsp;context){&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Row&lt;/span&gt;(&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mainAxisAlignment:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;MainAxisAlignment&lt;/span&gt;.spaceAround,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crossAxisAlignment:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;CrossAxisAlignment&lt;/span&gt;.start,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;children:&amp;nbsp;&amp;lt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Widget&lt;/span&gt;&amp;gt;[&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.blueGrey,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.blue,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;150.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.pink,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.purple,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.black,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.brown,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;80.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.teal,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR45kXh-xvt_n1N4CGr8znr7YF42o9YSY8fkRiHPovl9KfMQrbY7JQWkNOI41DOZWHfDhR3Io9LihDvS0DEanqUSwI9RRd4oTRclQmP_Pwgvfsvou8zPT0ZmUcQnx5lc3eX1NwDPWyCUv_/s1600/20191110_170830.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;467&quot; data-original-width=&quot;266&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR45kXh-xvt_n1N4CGr8znr7YF42o9YSY8fkRiHPovl9KfMQrbY7JQWkNOI41DOZWHfDhR3Io9LihDvS0DEanqUSwI9RRd4oTRclQmP_Pwgvfsvou8zPT0ZmUcQnx5lc3eX1NwDPWyCUv_/s320/20191110_170830.png&quot; width=&quot;182&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;
&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Demo&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;extends&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;StatelessWidget&lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;@override&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Widget&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;build&lt;/span&gt;(&lt;span style=&quot;color: #4ec9b0;&quot;&gt;BuildContext&lt;/span&gt;&amp;nbsp;context){&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Row&lt;/span&gt;(&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mainAxisAlignment:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;MainAxisAlignment&lt;/span&gt;.spaceAround,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crossAxisAlignment:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;CrossAxisAlignment&lt;/span&gt;.start,&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;children:&amp;nbsp;&amp;lt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Widget&lt;/span&gt;&amp;gt;[&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.blueGrey,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.blue,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;150.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.pink,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.purple,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.black,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.brown,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;80.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Expanded&lt;/span&gt;(child:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.teal,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;)),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-GQobrwSm9PHphGat7RBSde2NX92vRdZBgEYBec8hn1fG_mJXlhkwK5-PUi8aS432Dlh5Y-kghgGCZumE8EtdY1fqtCsBWnCv_PY7alugEFjFFZ7tve_TcHdVJlwtaMPlqGBnTy9PXe6N/s1600/20191110_171227.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;487&quot; data-original-width=&quot;271&quot; height=&quot;320&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-GQobrwSm9PHphGat7RBSde2NX92vRdZBgEYBec8hn1fG_mJXlhkwK5-PUi8aS432Dlh5Y-kghgGCZumE8EtdY1fqtCsBWnCv_PY7alugEFjFFZ7tve_TcHdVJlwtaMPlqGBnTy9PXe6N/s320/20191110_171227.png&quot; width=&quot;178&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- 자동으로 Line이 바뀌지 않는다.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;=&amp;gt; 이때는 Wrap을 사용한다.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;=&amp;gt; Wrap의 Children은 Expanded가 아니어야 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;background-color: #1e1e1e; color: #d4d4d4; font-family: Consolas, &amp;quot;Courier New&amp;quot;, monospace; font-size: 14px; line-height: 19px; white-space: pre;&quot;&gt;
&lt;div&gt;
&lt;span style=&quot;color: #569cd6;&quot;&gt;class&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Demo&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;extends&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;StatelessWidget&lt;/span&gt;{&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #569cd6;&quot;&gt;@override&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Widget&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #dcdcaa;&quot;&gt;build&lt;/span&gt;(&lt;span style=&quot;color: #4ec9b0;&quot;&gt;BuildContext&lt;/span&gt;&amp;nbsp;context){&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #c586c0;&quot;&gt;return&lt;/span&gt;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Wrap&lt;/span&gt;(&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;runSpacing:&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;5.0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//between&amp;nbsp;line&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;spacing:&amp;nbsp;&lt;span style=&quot;color: #b5cea8;&quot;&gt;5.0&lt;/span&gt;,&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//between&amp;nbsp;chldren&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #6a9955;&quot;&gt;//&amp;nbsp;direction:&amp;nbsp;Axis.vertical, 기본은 horizontal&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;alignment:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;WrapAlignment&lt;/span&gt;.spaceBetween, // mainAxisAlignment와 같음.&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;crossAxisAlignment:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;WrapCrossAlignment&lt;/span&gt;.start, &lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;children:&amp;nbsp;&amp;lt;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Widget&lt;/span&gt;&amp;gt;[&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.blueGrey,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.blue,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;150.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.pink,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.purple,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.red,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.black,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;50.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.brown,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;80.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Square&lt;/span&gt;(color:&amp;nbsp;&lt;span style=&quot;color: #4ec9b0;&quot;&gt;Colors&lt;/span&gt;.teal,&amp;nbsp;size:&lt;span style=&quot;color: #b5cea8;&quot;&gt;100.0&lt;/span&gt;),&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;],&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;);&lt;/div&gt;
&lt;div&gt;
&amp;nbsp;&amp;nbsp;}&lt;/div&gt;
&lt;div&gt;
}&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOlyGV8uuj0xlfJYTgWhsbYr-rGMGVCKXpvJ_Uv42MitJbT4cY6mkPCGr1mNYBTuAaa4axKQeahadU_rU3ak8zYSCudl0fcWuamjbhZF_B18IoyC-V2XdMe2HwFKkkyqgu1p7bpVqGGh5l/s1600/20191110_165440.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;514&quot; data-original-width=&quot;271&quot; height=&quot;400&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjOlyGV8uuj0xlfJYTgWhsbYr-rGMGVCKXpvJ_Uv42MitJbT4cY6mkPCGr1mNYBTuAaa4axKQeahadU_rU3ak8zYSCudl0fcWuamjbhZF_B18IoyC-V2XdMe2HwFKkkyqgu1p7bpVqGGh5l/s400/20191110_165440.png&quot; width=&quot;210&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/1281696028832217471/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2019/11/flutter-flutter-layout-rowcolumnwrap.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/1281696028832217471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/1281696028832217471'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2019/11/flutter-flutter-layout-rowcolumnwrap.html' title='[Flutter] Flutter layout Row,Column,Wrap'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhAYhPwWX1cAGArIhllEVm6Xy-tIWxQPqgXI_704UebTbGKEddB5aJIyl0pugc2QuZ_bIPSnlwI1zl2unor5VEw9vJRuA7EEbdIsOmhwtthnRVAZH3GgeLqCDkd1NFA-_3yCoB4TI1fykLc/s72-c/20191110_163819.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-5736068442253302567</id><published>2019-02-10T06:01:00.001-08:00</published><updated>2019-02-10T06:01:32.371-08:00</updated><title type='text'>[mysql] local 설치하기 X64</title><content type='html'>&lt;div style=&quot;text-align: center;&quot;&gt;
1. Mysql 사이트에서 자신의 컴퓨터 OS에 맞는 버전을 다운로드한다.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;a href=&quot;https://dev.mysql.com/downloads/mysql/&quot; target=&quot;_blank&quot;&gt;https://dev.mysql.com/downloads/mysql/&lt;/a&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt6j5cBfB0-mbAyvT-IXeMIKMHrkxNTfPH0A11HePF7Hgaz7jmc-UvCYQOXUEBUpaqsGHZXaEVk_QJlrCTDO5v2pyZacKSsG4qvyHrjjphtZx2wE6Mt7S7JiWXevaBI_jPBKsliKIAFaGN/s1600/1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1368&quot; height=&quot;356&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt6j5cBfB0-mbAyvT-IXeMIKMHrkxNTfPH0A11HePF7Hgaz7jmc-UvCYQOXUEBUpaqsGHZXaEVk_QJlrCTDO5v2pyZacKSsG4qvyHrjjphtZx2wE6Mt7S7JiWXevaBI_jPBKsliKIAFaGN/s640/1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg40odpm42iolmwxJnabOYaDUqq5R2hZpNkrBQe5zBwibEwMVIWZfY_l75E3Yp91URWJ7yVwQ_mfOu_y0h3PS_UkubK2vqXz54CugH0Assw6CSqVKNBzFzSCLlRunbyRb4Bs1Pk-Pqa0FjD/s1600/2.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;866&quot; data-original-width=&quot;1600&quot; height=&quot;346&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg40odpm42iolmwxJnabOYaDUqq5R2hZpNkrBQe5zBwibEwMVIWZfY_l75E3Yp91URWJ7yVwQ_mfOu_y0h3PS_UkubK2vqXz54CugH0Assw6CSqVKNBzFzSCLlRunbyRb4Bs1Pk-Pqa0FjD/s640/2.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
64bit이므로 해당하는 버전 다운로드 클릭.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBpHPSvdbYSAaUCWV6E7X67j-inNZGgm1XXxdWuElV08jrlr8gIVJ6VqowHH4HXQKGwNcm76DXpw9QaZ-zgzn9Fm-MZFibRFG1JV4xb-0o_wGAcuJBPjBF3x9f0xgM_X8rkvXeDshUz6kd/s1600/3.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;858&quot; data-original-width=&quot;1600&quot; height=&quot;342&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBpHPSvdbYSAaUCWV6E7X67j-inNZGgm1XXxdWuElV08jrlr8gIVJ6VqowHH4HXQKGwNcm76DXpw9QaZ-zgzn9Fm-MZFibRFG1JV4xb-0o_wGAcuJBPjBF3x9f0xgM_X8rkvXeDshUz6kd/s640/3.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&amp;nbsp;회원가입또는 로그인 없이 아래 No thanks, 부분을 클릭하면 다운로드 시작.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
2. 다운로드 된 zip을 C:/{..놔두고싶은 경로..}/mysql로 압축 풀기.&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
3. 컴퓨터 아이콘 오른쪽 클릭 -&amp;gt; 속성 -&amp;gt; 고급 시스템 설정 클릭&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
고급 탭에서 환경변수를 클릭.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs0gOamDbk4gMQArsJXt1_hNtm00gti7V7krBCD2DVUYNVwZddQnPe0VrQzSz7c7CsrOVcll4dvfrJh7y2OITkU6yf5ugLIR-5v7-s94ObqzH91KCCQr7Eo12ARW3XAuzpZobgCaUYP_1N/s1600/4.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;932&quot; data-original-width=&quot;1325&quot; height=&quot;450&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhs0gOamDbk4gMQArsJXt1_hNtm00gti7V7krBCD2DVUYNVwZddQnPe0VrQzSz7c7CsrOVcll4dvfrJh7y2OITkU6yf5ugLIR-5v7-s94ObqzH91KCCQr7Eo12ARW3XAuzpZobgCaUYP_1N/s640/4.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
4. mysql 설치경로를 Path부분에 추가해서 확인버튼 클릭.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAFojbYmwCzf24lcj8FGuUGGRNDEbfZ5rL8-xulrSKEJ_bzbP3pK_P7vEUZ-6_ZkWXjjDYnaRVPnJh2eT_0EvRCBoIN7ChzrnQJCTX10VQsTa2qcBiL_irfm1XoFDMkH3uexZf0NdKGPCy/s1600/5.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;729&quot; data-original-width=&quot;764&quot; height=&quot;610&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjAFojbYmwCzf24lcj8FGuUGGRNDEbfZ5rL8-xulrSKEJ_bzbP3pK_P7vEUZ-6_ZkWXjjDYnaRVPnJh2eT_0EvRCBoIN7ChzrnQJCTX10VQsTa2qcBiL_irfm1XoFDMkH3uexZf0NdKGPCy/s640/5.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
6. 명령창(cmd)를 마우스 오른쪽 클릭 후 관리자로 열기 클릭.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
7. mysql를 설치한 경로로 이동.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
-&amp;gt; bin으로 이동후&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&#39;mysqld --install&#39; 실행.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
실행 후 Service successfully installed가 뜨면 성공.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG3iFBjJvH9M3kWqMYrmogehLr8WF5ZUvev0HjYwRigJv475hLP4dwmYyYn-jR_ApapH6-ULFQ10Bf48CgDAwd31o0_ClsCJZNqFAiiHet42tuuAMCIUBScQ9mATEGopMyyZMbHTVjYmUK/s1600/6.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;636&quot; data-original-width=&quot;1034&quot; height=&quot;392&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjG3iFBjJvH9M3kWqMYrmogehLr8WF5ZUvev0HjYwRigJv475hLP4dwmYyYn-jR_ApapH6-ULFQ10Bf48CgDAwd31o0_ClsCJZNqFAiiHet42tuuAMCIUBScQ9mATEGopMyyZMbHTVjYmUK/s640/6.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
8. &lt;b&gt;mysqld --initialize 를 실행.&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
9. mysql 폴더를 보면 &lt;b&gt;data&lt;/b&gt;라는 폴더가 새로 생성됨.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
10. data 폴더로 이동 후 &lt;b&gt;계정명.err&lt;/b&gt; 라는 파일을 열기.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5R2QcOXxTD4bPlDD8PepiyC2W2FxG6Gl3zIhoV5THIWZ8rjLbtL1heMY7Cl91dFrwhM4FNHiBLsYLaqNV9FDDBTjlyRONOvgsLNGxFmpUn2FVekugoQVkEGZFy28D1FwfLomK2CI9ldtr/s1600/7.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;765&quot; data-original-width=&quot;1367&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg5R2QcOXxTD4bPlDD8PepiyC2W2FxG6Gl3zIhoV5THIWZ8rjLbtL1heMY7Cl91dFrwhM4FNHiBLsYLaqNV9FDDBTjlyRONOvgsLNGxFmpUn2FVekugoQVkEGZFy28D1FwfLomK2CI9ldtr/s640/7.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
10. 마지막 줄에 root@localhost: #j6..... 이라는 부분이 있는데 맨끝에 #j6...가&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
mysql 접속 패스워드임.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
11. 명령창(cmd)로 돌아와서&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&#39;&lt;b&gt;mysqld&lt;/b&gt;&#39;&amp;nbsp; 실행.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7f9YjvjN5686eXzTJj2akgLoeLWn5w0k_I4xc5izxjc9VBdnjmbeLMMuDPKwRq-7wFOwdZdkG89CIe6P5POt2WqYH6WBNWXSZBx5ibfF5fVZ6WmIbZHf8XOdEXgtgmWc5bqtmMnmyZJ7/s1600/9.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;215&quot; data-original-width=&quot;978&quot; height=&quot;140&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEie7f9YjvjN5686eXzTJj2akgLoeLWn5w0k_I4xc5izxjc9VBdnjmbeLMMuDPKwRq-7wFOwdZdkG89CIe6P5POt2WqYH6WBNWXSZBx5ibfF5fVZ6WmIbZHf8XOdEXgtgmWc5bqtmMnmyZJ7/s640/9.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
12. mysql -u root -p 실행 시 ERROR2003과 같은 메시지가 노출됨. -&amp;gt; Mysql server를 start 해줘야함.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
13. mysql server start 방법은 두가지&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
- mysql workbench를 통해서 startup!&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://dev.mysql.com/downloads/workbench/&quot; target=&quot;_blank&quot;&gt;https://dev.mysql.com/downloads/workbench/&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
- 컴퓨터 관리에서 서비스 및 응용프로그램 -&amp;gt; 서비스 -&amp;gt;MySQL을&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
마우스 오른쪽클릭 -&amp;gt; 시작.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvXJ8aRSGBrH7_BtrHvHm5SRtRupi1z8ev_kKLQQBgfuytuQt_-vfMRxBbT9yjdMa-aHUvjigIbw5b5nOUcfASx-643zfLkZ_7fSrIRtcQiJHNivUt9cC5bUYSyFyVuO5j_R1lQIaJN3IO/s1600/10.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;768&quot; data-original-width=&quot;1366&quot; height=&quot;358&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvXJ8aRSGBrH7_BtrHvHm5SRtRupi1z8ev_kKLQQBgfuytuQt_-vfMRxBbT9yjdMa-aHUvjigIbw5b5nOUcfASx-643zfLkZ_7fSrIRtcQiJHNivUt9cC5bUYSyFyVuO5j_R1lQIaJN3IO/s640/10.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
14. mysql -u root -p를 재 실행 하면 접속됨.&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_7Wk2LCcEg8z9VA2NGe2lrM82GwOwMtjDCUYwX1ChODuqQEj-xudvGGJQjOwk64KVeNGQo9g6OfaW4_58H9JDWc-4ya01V7Y44ijlNKbguzETCLMzuo9pKmgPksUbTzlJd160eyzP02gZ/s1600/12.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: right; float: right; margin-bottom: 1em; margin-left: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;348&quot; data-original-width=&quot;1003&quot; height=&quot;222&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_7Wk2LCcEg8z9VA2NGe2lrM82GwOwMtjDCUYwX1ChODuqQEj-xudvGGJQjOwk64KVeNGQo9g6OfaW4_58H9JDWc-4ya01V7Y44ijlNKbguzETCLMzuo9pKmgPksUbTzlJd160eyzP02gZ/s640/12.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
15. 패스워드를 바꿔주기 위해서는 아래와 같이 실행.&lt;/div&gt;
&lt;div class=&quot;&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
ALTER USER &#39;root&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;패스워드&#39;;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/5736068442253302567/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2019/02/mysql-local-x64.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/5736068442253302567'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/5736068442253302567'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2019/02/mysql-local-x64.html' title='[mysql] local 설치하기 X64'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgt6j5cBfB0-mbAyvT-IXeMIKMHrkxNTfPH0A11HePF7Hgaz7jmc-UvCYQOXUEBUpaqsGHZXaEVk_QJlrCTDO5v2pyZacKSsG4qvyHrjjphtZx2wE6Mt7S7JiWXevaBI_jPBKsliKIAFaGN/s72-c/1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7198615048806483544</id><published>2018-09-26T20:46:00.005-07:00</published><updated>2018-09-26T20:46:57.659-07:00</updated><title type='text'>[REACTJS]8일차 Dynamic Form With React</title><content type='html'>1. 입력받는 input 글자에 따라서 오류메시지를 보여주는 코드

&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
  
   &lt;span style=&quot;color: #888888;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;   &lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;   Then this ref prop is definitely just a React thing. It makes things a little bit more direct, because here, we see we&#39;re assigning the inputNode, and then we&#39;re referencing that inputNode to get the value.&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;   &lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;   */&lt;/span&gt;
   
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; App &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;extends&lt;/span&gt; React.Component {
   state &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; {
    error &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;
   }
  
   handleSubmit &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; event &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; {
    event.preventDefault();
    console.log(event.target.elements.username.value);
    console.log(&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.inputNode.value);
    
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; error &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.getErrorMessage(event.target.elements.username.value);
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;(error){
     alert(&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;error &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; ${error}&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;);
    }&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;else&lt;/span&gt;{
     alert(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;success&#39;&lt;/span&gt;);
    }
   }
   
   handleChange &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; event &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; {
    console.log(&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.inputNode.value);
       &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.setState({
     error&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.getErrorMessage(&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.inputNode.value),
    })
   }
   
   getErrorMessage &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; (msg) &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; {
   
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;(msg &lt;span style=&quot;color: #333333;&quot;&gt;==&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;||&lt;/span&gt; msg.length &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;3&lt;/span&gt;){
     &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt; ${msg} &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;글자&lt;/span&gt; &lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;이상이여야&lt;/span&gt; &lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;합니다&lt;/span&gt;.&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;
    }
    
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;null&lt;/span&gt;;
   }
   
   render(){
       &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; {error} &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.state
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; (
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;form onSubmit&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.handleSubmit}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;
      &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;label&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;
       Name&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;input type&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text&quot;&lt;/span&gt; name&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;username&quot;&lt;/span&gt; 
       onChange&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.handleChange} ref&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{ node &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.inputNode &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; node }
       &lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;
      &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/label&amp;gt;&lt;/span&gt;
      {error &lt;span style=&quot;color: #333333;&quot;&gt;?&lt;/span&gt; 
       (
        &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;{error}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;&lt;/span&gt;
       )&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;null&lt;/span&gt;
      
      }
      &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;button type&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;submit&quot;&lt;/span&gt; disabled&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{&lt;span style=&quot;color: #007020;&quot;&gt;Boolean&lt;/span&gt;(error)}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;submit&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/button&amp;gt;&lt;/span&gt;
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/form&amp;gt;&lt;/span&gt;
    
    )
   }
  }
 
 
  ReactDOM.render(
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;App &lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;,
    &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;root&#39;&lt;/span&gt;)
  );
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
2. input, select, textarea 사용&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;background-color: white; line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
  
  
   
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; App &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;extends&lt;/span&gt; React.Component {
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;static&lt;/span&gt; availableOptions &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; [
    &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;apple&#39;&lt;/span&gt;,
    &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;grape&#39;&lt;/span&gt;,
    &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;cherry&#39;&lt;/span&gt;,
    &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;orange&#39;&lt;/span&gt;,
    &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;pear&#39;&lt;/span&gt;,
    &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;peach&#39;&lt;/span&gt;,
   ]  
   
   state &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; {
    multiline &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;,
    comma &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;,
    multiSelect &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt;  []
   }
   changeMultiline &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; (event) &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; {
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; value &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; event.target.value;
    console.log(value);
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; allVals &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; value
        .split(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;\n&#39;&lt;/span&gt;)
        .map(v &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; v.trim())
    console.log(allVals)
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.setState({
     multiline &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; value
     ,comma&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; allVals.join(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;,&#39;&lt;/span&gt;)
     ,multiSelect &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; allVals.filter((val) &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; (
      &lt;span style=&quot;color: #444444;&quot;&gt;&lt;b&gt;App.availableOptions.includes(val)&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;                                                 //Array.prototype.includes는 true,false로 반환.
     ))
    });
   }
   
   changeMultiSelect &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (event) &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; value &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; event.target.value;
    console.log(value);
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;Array&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.from(
      event.target.selectedOptions
    ).map(o &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; o.value)
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.setState({
      multiSelect&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals,
      multiline&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals.join(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;\n&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;),
      comma&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals.join(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;,&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;),
    })
   }
   
   changeCommna &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (event) &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; value &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; event.target.value;
    console.log(value);
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; value
        .split(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;,&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;)
        .map(v &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; v.trim())
    console.log(allVals)
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.setState({
     comma &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; value
     ,multiline&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals.join(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;\n&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;)
     ,multiSelect &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; allVals.filter((val) &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
      App.availableOptions.includes(val)
     ))
    });
   }
   
   render(){
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {comma, multiline, multiSelect } &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.state
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
      &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
       Comma seperated values:&amp;lt;br/&amp;gt;
       &amp;lt;input type=&quot;text&quot; name=&quot;comma&quot; value={comma} onChange={&lt;span style=&quot;font-weight: bold;&quot;&gt;this&lt;/span&gt;.changeCommna}/&amp;gt; 
       &amp;lt;br/&amp;gt;
       &lt;b&gt;You provided a `value` prop to a form field without an `onChange` handler. &lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;                                                       This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.
       input일때 value를 사용하는 경우 readonly를 함께 사용하거나
       defaultValue를 사용하여야 한다. 이를 명시하여 REACT에 변경이 안되는 값임을 알린다. 
       React는 컴포넌트 객체의 상태를 props와 state, 2가지로 구분해서 관리하기 때문에 변경되는 값인 경우에는
       value와 onchange를 함께 사용.&lt;/b&gt;
      &amp;lt;/p&amp;gt;
      &amp;lt;p&amp;gt;
       multiline values;&amp;lt;br/&amp;gt;
       &amp;lt;textarea name=&quot;multi&quot; value={multiline} onChange={&lt;span style=&quot;font-weight: bold;&quot;&gt;this&lt;/span&gt;.changeMultiline} rows={
                      App.availableOptions.length
                    }&amp;gt;&amp;lt;/textarea&amp;gt;
      &amp;lt;/p&amp;gt;
      &amp;lt;p&amp;gt;
       multiSelect values:&amp;lt;br/&amp;gt;
       &amp;lt;select name=&quot;select&quot; multiple onChange={&lt;span style=&quot;font-weight: bold;&quot;&gt;this&lt;/span&gt;.changeMultiSelect} value={multiSelect} size={
                      App.availableOptions.length
                    }&amp;gt;
        {App.availableOptions.map((val) =&amp;gt; (
         &amp;lt;option key={val} value={val}&amp;gt;{val}&amp;lt;/option&amp;gt;
        ))}
       &amp;lt;/select&amp;gt;
       &amp;lt;br /&amp;gt; Each child &lt;span style=&quot;font-weight: bold;&quot;&gt;in&lt;/span&gt; an array or iterator should have a unique &quot;key&quot; prop.
      &amp;lt;/p&amp;gt;
     &amp;lt;/div&amp;gt;
    
    )
   }
  }
 
 
  ReactDOM.render(
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;App &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;,
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;root&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;)
  );
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7198615048806483544/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs8-dynamic-form-with-react.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7198615048806483544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7198615048806483544'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs8-dynamic-form-with-react.html' title='[REACTJS]8일차 Dynamic Form With React'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-9172977716193610418</id><published>2018-09-25T23:55:00.004-07:00</published><updated>2018-09-25T23:55:51.729-07:00</updated><title type='text'>[REACTJS]7일차 state와 componentWillUnmount</title><content type='html'>1. function 함수를 통해서 React DOM 구현 코드
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; rootElement &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; state &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; { eventCount&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, usename &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;};
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; App(){
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
   
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;There have benn {state.eventCount} events&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/p&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     
     &amp;lt;p&amp;gt;&amp;lt;button onClick={
      () =&amp;gt; setState({
       eventCount : state.eventCount + &lt;span style=&quot;font-weight: bold;&quot;&gt;1&lt;/span&gt;
      })
     }&amp;gt;abc&amp;lt;/button&amp;gt;&amp;lt;/p&amp;gt;
     
     &amp;lt;p&amp;gt;{state.username} click&amp;lt;/p&amp;gt;
     &amp;lt;p&amp;gt;&amp;lt;input onKeyUp={focusme}/&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt;
   
   )
  }
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; focusme(event){
   console.log(event.nativeEvent);
   setState({
    username &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; event.target.value
   });
  }
  
  &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: white; color: #008800;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; setState(newState){
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;Object&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&lt;b&gt;.assign(state, newState)
   renderApp()
  }&lt;/b&gt;
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; renderApp(){
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; element &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;App &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   ReactDOM.render(element, rootElement);
  }
  
  renderApp();
  &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
function을 통한 ReactDom.render의 경우 setState()라는 함수 생성이 필요하다.&lt;br /&gt;
&lt;br /&gt;
2. JSX를 통한 React 구현 코드&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;background-color: white; line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
  
  
  
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt; ShowDiv &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;extends&lt;/span&gt; React.Component {
   constructor(props){
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;super&lt;/span&gt;(props);
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.state &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; {
     eventCount &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;,
     username &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;,
     time &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;0&lt;/span&gt;,
     running &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;false&lt;/span&gt;
    }
    
    &lt;b&gt;&lt;span style=&quot;color: #008800;&quot;&gt;this&lt;/span&gt;.focusme &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800;&quot;&gt;this&lt;/span&gt;.focusme.bind(&lt;span style=&quot;color: #008800;&quot;&gt;this&lt;/span&gt;);&lt;/b&gt;
   
   }
   
   &lt;span style=&quot;color: #888888;&quot;&gt;/*&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;   count(){&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;    this.setState((state)=&amp;gt;({&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;     eventCount : state.eventCount + 1,&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;    }));&lt;/span&gt;
&lt;span style=&quot;color: #888888;&quot;&gt;   }&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;background-color: white; line-height: 125%; margin: 0px;&quot;&gt;                              //위에 ES6는 아래와 같이 구현 가능하다. &lt;/pre&gt;
&lt;pre style=&quot;background-color: white; line-height: 125%; margin: 0px;&quot;&gt;                              //이렇게 구현한 경우에도 this와 bind 시켜줘야한다.&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;    this.setState(function(state){&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;     return {&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;      eventCount : state.eventCount + 1&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;     &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;     }&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;    });&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;   */&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
   componentWillUnmount(){
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;/*&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;    It’s called before the component is removed from the page. It should be used &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;    when your component has things running which need to be cleaned up, &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;    especially asynchronous tasks like setTimeout, setInterval, or ajax requests.&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #888888;&quot;&gt;   */&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    console.log(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;hide div&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
   }
 
   countA &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.setState( ({eventCount}) &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; ({
     eventCount &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; eventCount &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000dd; font-weight: bold;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    }))
   }
   &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;                        //ES6의 arrow function을 사용하는 경우 에는 this와 bind시켜줄 필요가 없다.&lt;span style=&quot;background-color: white;&quot;&gt;
   count &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.setState(state &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
     {eventCount &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; state.eventCount &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;+&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000dd; font-weight: bold;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}
    ))
   }
  &lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;                       //function 형식으로 구현한 경우 constructor에서 this와 bind 처리를 해줘야한다.&lt;span style=&quot;background-color: white;&quot;&gt;
   focusme(event){
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.setState({
     username &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; event.target.value
    });
   }
  
   render(){
   &lt;/span&gt;        &lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; { eventCount, username, time} &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.state;
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;p&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;There have benn {eventCount}&lt;/span&gt;&lt;span style=&quot;background-color: #f3f3f3;&quot;&gt; events&amp;lt;/p&amp;gt;
     &amp;lt;p&amp;gt;&amp;lt;button onClick={&lt;span style=&quot;font-weight: bold;&quot;&gt;this&lt;/span&gt;.countA}&amp;gt;add&amp;lt;/button&amp;gt;&amp;lt;/p&amp;gt;
     &amp;lt;p&amp;gt;&amp;lt;button onClick={&lt;span style=&quot;font-weight: bold;&quot;&gt;this&lt;/span&gt;.count}
     &amp;gt;click count&amp;lt;/button&amp;gt;&amp;lt;/p&amp;gt;
     
     &amp;lt;p&amp;gt;{username} click&amp;lt;/p&amp;gt;
     &amp;lt;p&amp;gt;&amp;lt;input onKeyUp={&lt;span style=&quot;font-weight: bold;&quot;&gt;this&lt;/span&gt;.focusme}/&amp;gt;&amp;lt;/p&amp;gt;
     
     &amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    
    )
   }
  }
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;class&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; App &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;extends&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; React.Component {
   state &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {showStopWatch&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}
   changeValue &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; () &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.setState((st) &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; ({
    
     showStopWatch&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;st.showStopWatch,
    
    }));
   
   }
   
   render() {
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {showStopWatch} &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.state
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
      &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;label&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     Show Stop Watch{&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39; &#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;input
       type&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;checkbox&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
       checked&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{showStopWatch}
       onChange&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.changeValue}
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
      &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa;&quot;&gt;/label&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
      &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;hr &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
      {showStopWatch &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;ShowDiv &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; font-weight: bold;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}
    &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa;&quot;&gt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     )
   }
  }
  
  ReactDOM.render(
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;App &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;,
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;root&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;)
  );
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/9172977716193610418/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs7-state-componentwillunmount.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/9172977716193610418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/9172977716193610418'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs7-state-componentwillunmount.html' title='[REACTJS]7일차 state와 componentWillUnmount'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7628135800644140557</id><published>2018-09-25T21:31:00.000-07:00</published><updated>2018-09-25T21:31:07.711-07:00</updated><title type='text'>[REACTJS]6일차 style 적용</title><content type='html'>1. style을 적용하기 위한 코드&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;style&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #bb0066; font-weight: bold;&quot;&gt;.box--small&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #6600ee; font-weight: bold;&quot;&gt;60px&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #6600ee; font-weight: bold;&quot;&gt;60px&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
   }
   
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #bb0066; font-weight: bold;&quot;&gt;.box--medium&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #6600ee; font-weight: bold;&quot;&gt;80px&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #6600ee; font-weight: bold;&quot;&gt;80px&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
   }
   
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #bb0066; font-weight: bold;&quot;&gt;.box--large&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;width&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #6600ee; font-weight: bold;&quot;&gt;100px&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;height&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #6600ee; font-weight: bold;&quot;&gt;100px&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
   
   }
   
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; rootElement &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; Box({style, size, className &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, ...rest}){
   &lt;/span&gt;&lt;b style=&quot;background-color: white;&quot;&gt;console.log({...rest});&lt;/b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; sizeClass &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; size &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;span style=&quot;color: red;&quot;&gt;`&lt;/span&gt;box&lt;span style=&quot;color: #333333;&quot;&gt;--&lt;/span&gt;${size}&lt;span style=&quot;color: red;&quot;&gt;`&lt;/span&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; ;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div className&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{&lt;span style=&quot;color: red;&quot;&gt;`&lt;/span&gt;box ${className} ${sizeClass}&lt;span style=&quot;color: red;&quot;&gt;`&lt;/span&gt;}
     style&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{{paddingLeft&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000dd; font-weight: bold;&quot;&gt;20&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;, ...style}}
     {...rest} &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
   )
  }

  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; element &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; ( 
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Box size&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;small&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; pid&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;go1&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{{backgroundColor&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;lightblue&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}}&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Hi Box&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/Box&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Box size&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;medium&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; style&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{{backgroundColor&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;pink&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;}}&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Hi Second Box&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/Box&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;Box size&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&quot;large&quot; style&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{{backgroundColor&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &#39;orange&#39;}}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Hi Third Box&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/Box&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt;
   )
  
  ReactDOM.render(element, rootElement);
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
{...rest}를 찍어보면 {children : &quot;Hi Box&quot; , pid : &quot;go1&quot;}이 전달됨을 확인할수있다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhII4dy1LpoJVL3Rf-mUcxroLGjtdVJKWcuE4EIl84uih-0U20SyXEzJVNXrlAkG8_vnL_Ivn3Wti6U_D2sNBgNL0FA1U6VQwDHQGY5fxZ3MJKGgYyEZI0oJSCeaS5_BNzivBduL3rxdpLk/s1600/%25EA%25B7%25B8%25EB%25A6%25BC1.png&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; data-original-height=&quot;448&quot; data-original-width=&quot;776&quot; height=&quot;368&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhII4dy1LpoJVL3Rf-mUcxroLGjtdVJKWcuE4EIl84uih-0U20SyXEzJVNXrlAkG8_vnL_Ivn3Wti6U_D2sNBgNL0FA1U6VQwDHQGY5fxZ3MJKGgYyEZI0oJSCeaS5_BNzivBduL3rxdpLk/s640/%25EA%25B7%25B8%25EB%25A6%25BC1.png&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7628135800644140557/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs6-style.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7628135800644140557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7628135800644140557'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs6-style.html' title='[REACTJS]6일차 style 적용'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhII4dy1LpoJVL3Rf-mUcxroLGjtdVJKWcuE4EIl84uih-0U20SyXEzJVNXrlAkG8_vnL_Ivn3Wti6U_D2sNBgNL0FA1U6VQwDHQGY5fxZ3MJKGgYyEZI0oJSCeaS5_BNzivBduL3rxdpLk/s72-c/%25EA%25B7%25B8%25EB%25A6%25BC1.png" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-9093277998755663460</id><published>2018-09-25T07:46:00.001-07:00</published><updated>2018-09-25T07:46:25.416-07:00</updated><title type='text'>[REACTJS]5일차 rendering element</title><content type='html'>1.&amp;nbsp;&lt;span style=&quot;font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;oxygen&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;cantarell&amp;quot; , &amp;quot;fira sans&amp;quot; , &amp;quot;droid sans&amp;quot; , &amp;quot;helvetica neue&amp;quot; , sans-serif;&quot;&gt;React Only Updates What’s Necessary!!&lt;/span&gt;&lt;br /&gt;
&lt;div style=&quot;box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif; font-size: 17px; line-height: 1.7; margin-top: 30px; max-width: 42em; padding: 0px;&quot;&gt;
&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif;&quot;&gt;React elements 은 불변이다. element는 한번 생성된 이후로는&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, &amp;quot;Segoe UI&amp;quot;, Roboto, Oxygen, Ubuntu, Cantarell, &amp;quot;Fira Sans&amp;quot;, &amp;quot;Droid Sans&amp;quot;, &amp;quot;Helvetica Neue&amp;quot;, sans-serif;&quot;&gt;, you can’t change its children or attributes.&lt;/span&gt;&lt;br /&gt;
React DOM은 element요소와 그 children들을 이전의 값들과 비교하여&amp;nbsp; only applies the DOM updates necessary to bring the DOM to the desired state!&lt;br /&gt;
{time}부분의 string만 계속 업데이트됨을 확인할수있다.&lt;/div&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
 
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt; tick(){
   
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; time &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;Date&lt;/span&gt;().toLocaleTimeString()
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; element &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;It is {time}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;&lt;/span&gt;
   ReactDOM.render(element, rootElement);
   
  }
  
  setInterval(tick, &lt;span style=&quot;color: #0000dd; font-weight: bold;&quot;&gt;1000&lt;/span&gt;);
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/9093277998755663460/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs5-rendering-element.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/9093277998755663460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/9093277998755663460'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs5-rendering-element.html' title='[REACTJS]5일차 rendering element'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-2267721777900131635</id><published>2018-09-25T07:23:00.004-07:00</published><updated>2018-09-25T07:30:31.673-07:00</updated><title type='text'>[REACTJS]4일차 조건에 따른 render page</title><content type='html'>1. 조건문에 따라서 render page를 다르게 할수있다.&lt;br /&gt;
- tag의 argument를 string 형태로 받지 않고 아래와 같이 {message}로 바로 전달받을수 있다.&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; Message({message}){
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;(
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    {message &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{message}&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt; : &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;No message&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt;}&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   )
   
  }
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; rootElement &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; element &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Message message&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;hi&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
  ReactDOM.render(element, rootElement);
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
- 기존대로 argument인&amp;nbsp;&lt;span style=&quot;background-color: white;&quot;&gt;props&lt;/span&gt;를 사용하여 부르는 경우.&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; Message(props){
   console.log(props);
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;(
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    {props.message &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;?&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;{props.message}&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt; : &lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;No message&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt;}&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   )
   
  }
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; rootElement &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; element &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Message message&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;hi&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;;
  ReactDOM.render(element, rootElement);
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/2267721777900131635/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs4-render-page.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2267721777900131635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/2267721777900131635'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs4-render-page.html' title='[REACTJS]4일차 조건에 따른 render page'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-307678868286643916</id><published>2018-09-25T06:57:00.000-07:00</published><updated>2018-09-25T07:10:37.755-07:00</updated><title type='text'>[REACTJS]3일차 prop types</title><content type='html'>1. Proptype을 명시해주자!&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #141618; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;avenir next&amp;quot; , &amp;quot;avenir&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: white; color: #141618; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;avenir next&amp;quot; , &amp;quot;avenir&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;You can use the prop-types module to validate a custom React component&#39;s props.&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;background-color: white; color: #141618; font-family: , &amp;quot;blinkmacsystemfont&amp;quot; , &amp;quot;avenir next&amp;quot; , &amp;quot;avenir&amp;quot; , &amp;quot;helvetica neue&amp;quot; , &amp;quot;helvetica&amp;quot; , &amp;quot;ubuntu&amp;quot; , &amp;quot;roboto&amp;quot; , &amp;quot;noto&amp;quot; , &amp;quot;segoe ui&amp;quot; , &amp;quot;arial&amp;quot; , sans-serif; font-size: 17px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;

&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt; SayHello(props){
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; (
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;
     Hello {props.firstName} {props.secondName} {props.FinalName}
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;&lt;/span&gt;
   )
  }
  
  SayHello.propTypes &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; {
   firstName(props, propName, ComponentName) {
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;(&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;typeof&lt;/span&gt; props[propName] &lt;span style=&quot;color: #333333;&quot;&gt;!==&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;string&#39;&lt;/span&gt;){
     &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;Error&lt;/span&gt;(&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;Hey, only string ${&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;typeof&lt;/span&gt; props[propName]}&lt;span style=&quot;color: #333333;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;);
    }
   },
   secondName &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; PropTypes.string,
   finalName &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; PropTypes.string.isRequired
  }
  
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
   
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; element &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;SayHello firstName&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;true&lt;/span&gt;} secondName&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;secondName&quot;&lt;/span&gt; finalName&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;{&lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;true&lt;/span&gt;}&lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;
  ReactDOM.render(element, rootElement);
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
PropType을 명시하기 위해서는&lt;br /&gt;
&lt;pre style=&quot;line-height: 16.25px;&quot;&gt; &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt; 를 추가시켜야한다.&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 16.25px;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;br /&gt;
secondName과 값이 표기하면 string값만 받는다는 뜻이며&lt;br /&gt;
따로 new Error와 같이 Exception message를 지정해주지 않으면 default message로&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: red;&quot;&gt;Warning: Failed prop type: Invalid prop `finalName` of type `boolean` supplied to `SayHello`, expected `string`.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; in SayHello&lt;/span&gt;
&lt;br /&gt;
과 같이 console창에 표시된다.&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0px;&quot;&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  SayHello.propTypes &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; {
   firstName(props, propName, ComponentName) {
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; props[propName] &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;!==&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;string&#39;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;){
     &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;Error&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;Hey, only string ${&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;typeof&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; props[propName]}&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;!&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
    }
   },
   secondName &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; PropTypes.string,
   finalName &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;:&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; PropTypes.string.isRequired
  }
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;function&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; SayHello(props){
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: red;&quot;&gt;&lt;b&gt;const {firstName, secondName, finalName} &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; props;&lt;/b&gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; (
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;div&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
     Hello {firstName} {secondName} {finalName}
    &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;/div&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
   )
  }
  
  
  
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; rootElement &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007020;&quot;&gt;document&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;.getElementById(&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;);
  &lt;/span&gt;&lt;b&gt;&lt;span style=&quot;background-color: white; color: #008800;&quot;&gt;const&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; element &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;SayHello firstName&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;amy&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; secondName&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;runa&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; finalName&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;tuna&quot;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
  ReactDOM.render(element, rootElement);
  &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
 &lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;span style=&quot;background-color: white; color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;span style=&quot;background-color: white;&quot;&gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
- React.Component 를 사용한 코드
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/prop-types@15.6.1/prop-types.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
   
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
  &lt;b&gt;&lt;span style=&quot;color: #008800;&quot;&gt;class&lt;/span&gt; SayHello &lt;span style=&quot;color: #008800;&quot;&gt;extends&lt;/span&gt; React.Component{&lt;/b&gt;
  
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;static&lt;/span&gt; propTypes &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; {
    firstName &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; PropTypes.string,
    secondName &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; PropTypes.string,
    finalName &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; PropTypes.string
   }
   
   render(){
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; {firstName, secondName, finalName} &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;this&lt;/span&gt;.props;
    
    &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; (
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;
      Hello {firstName} {secondName} {finalName}
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;&lt;/span&gt;
    
    )
   }
  }
  
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
  &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; element &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;SayHello firstName&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;amy&quot;&lt;/span&gt; secondName&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;runa&quot;&lt;/span&gt; finalName&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;tuna&quot;&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;
  ReactDOM.render(element, rootElement);
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/307678868286643916/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs3-prop-types.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/307678868286643916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/307678868286643916'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs3-prop-types.html' title='[REACTJS]3일차 prop types'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-7207639632488802604</id><published>2018-09-25T02:18:00.003-07:00</published><updated>2018-09-25T02:19:49.852-07:00</updated><title type='text'>[REACTJS]2일차 재사용성을 위한 HTML tag화 시키기.</title><content type='html'>1. Reusable Component React JS&lt;br /&gt;
&lt;br /&gt;
- 재사용성을 위하여 HTML tag를 새롭게 생성하여 사용할수 있다.&lt;br /&gt;
&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; Message &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; props &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt; { &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;return&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;{props.msg}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;}&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; element &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; (
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div className&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;container&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;
     {Message({msg&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;goodbye&#39;&lt;/span&gt;})}
     {React.createElement(Message, {msg&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;hello&#39;&lt;/span&gt;})}
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;Message msg&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;wow&quot;&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;&lt;/span&gt;
   )
   ReactDOM.render(element, rootElement);
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
const Message = props =&amp;gt; &amp;lt;div&amp;gt;{props.msg}&amp;lt;div&amp;gt;로 표기해도 똑같은 결과가 나온다.&lt;br /&gt;
차례대로&lt;br /&gt;
goodbye&lt;br /&gt;
hello&lt;br /&gt;
wow&lt;br /&gt;
가 화면에 찍힌다.&lt;br /&gt;
&lt;br /&gt;
element 이름을 소문자로 시작하는 message로 변경하면 HTML tag로 사용이 불가능하여 &amp;lt;Message /&amp;gt;이 부분에서 오류가 발생한다.&lt;br /&gt;
HTML tag롤 사용하기 위해서는 첫글자를 대문자로 사용해야 한다.&lt;br /&gt;
&lt;br /&gt;
2. 재사용성을 더 높이기 위하여 children 속성을 사용해본다.&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; Message &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; props &lt;span style=&quot;color: #333333;&quot;&gt;=&amp;gt;&lt;/span&gt;  &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;{props.children}&lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/div&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; element &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; (
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div className&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;container&quot;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;
     {Message({children&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;goodbye&#39;&lt;/span&gt;})}
     {React.createElement(Message, {children&lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;hello&#39;&lt;/span&gt;})}
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;Message children&lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;wow&quot;&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;
     &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;Message&lt;span style=&quot;color: #333333;&quot;&gt;&amp;gt;&lt;/span&gt;You can show Me Now&lt;span style=&quot;color: #333333;&quot;&gt;!&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa; color: red;&quot;&gt;/Message&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;     &amp;lt;Message&amp;gt;Hi 1&amp;lt;Message&amp;gt;Hello 2&amp;lt;/Message&amp;gt;&amp;lt;/Message&amp;gt;
    &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffaaaa;&quot;&gt;/div&amp;gt;&lt;/span&gt;
   )
   ReactDOM.render(element, rootElement);
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
태그 attribute 를 children으로 바꾸면 마지막 MESSAGE안에 태그를 자동 파싱하여 화면에 보여준다.</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/7207639632488802604/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs2-html-tag.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7207639632488802604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/7207639632488802604'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs2-html-tag.html' title='[REACTJS]2일차 재사용성을 위한 HTML tag화 시키기.'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8260673545987087429.post-1505348431205212656</id><published>2018-09-25T01:54:00.001-07:00</published><updated>2018-09-25T02:24:15.831-07:00</updated><title type='text'>[REACTJS]1일차 REACTJS</title><content type='html'>1. REACTJS&lt;br /&gt;
-&amp;nbsp;https://reactjs.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. 일반 HTML과 REACTJS.&lt;br /&gt;
&lt;br /&gt;
- 일반 HTML에서 HELLO WORLD 코드&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
&lt;span style=&quot;color: #333333;&quot;&gt;   const element= document.createElement(&quot;div&quot;);&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;   element.textContent = &quot;hello world&quot;;&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;   element.className = &quot;container&quot;;&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;   rootElement.appendChild(element);&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
- REACTJS를 사용하여 HELLO WORLD 코드&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/javascript&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
   
&lt;span style=&quot;color: #333333;&quot;&gt;    const element = React.createElement(&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;    &#39;div&#39;,&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;    {className: &#39;container&#39;},&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;    &#39;Hello World&#39;&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;     )&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;   ReactDOM.render(element, rootElement);&lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;      &lt;/span&gt;
&lt;span style=&quot;color: #333333;&quot;&gt;   console.log(element);&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
REACTJS를 사용하기 위해서는 REACT 라이브러리 JS를 추가시켜줘야한다.

&lt;br /&gt;
좀더 간단하게 표현하기 위해서 JSX를 사용한다.&lt;br /&gt;
&lt;br /&gt;
BABEL를 사용하게 되면 JSX를 브라우저에서 파싱이 가능한 javascript 상태로 만들어줌으로 다음과 같이 사용하게 된다.&lt;br /&gt;
&lt;br /&gt;
- Babel를 사용한 JSX로 표현한 REACTJS&lt;br /&gt;
&lt;!-- HTML generated using hilite.me --&gt;&lt;br /&gt;
&lt;div style=&quot;background: #ffffff; border-width: 0.1em 0.1em 0.1em 0.8em; border: solid gray; overflow: auto; padding: 0.2em 0.6em; width: auto;&quot;&gt;
&lt;pre style=&quot;line-height: 125%; margin: 0;&quot;&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;div&lt;/span&gt; &lt;span style=&quot;color: #0000cc;&quot;&gt;id=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react/umd/react.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/react-dom/umd/react-dom.development.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;src=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;https://unpkg.com/babel-standalone@6.26.0/babel.js&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
  
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;script &lt;/span&gt;&lt;span style=&quot;color: #0000cc;&quot;&gt;type=&lt;/span&gt;&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;text/babel&quot;&lt;/span&gt;&lt;span style=&quot;color: #007700;&quot;&gt;&amp;gt;&lt;/span&gt;
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; rootElement &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #007020;&quot;&gt;document&lt;/span&gt;.getElementById(&lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&quot;root&quot;&lt;/span&gt;);
   
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; props &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; {
    className &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;container&#39;&lt;/span&gt;,
    children &lt;span style=&quot;color: #333333;&quot;&gt;:&lt;/span&gt; &lt;span style=&quot;background-color: #fff0f0;&quot;&gt;&#39;Hello World&#39;&lt;/span&gt;
   }
   &lt;span style=&quot;color: #008800; font-weight: bold;&quot;&gt;const&lt;/span&gt; element &lt;span style=&quot;color: #333333;&quot;&gt;=&lt;/span&gt; &lt;span style=&quot;color: #333333;&quot;&gt;&amp;lt;&lt;/span&gt;div {...props} &lt;span style=&quot;color: #333333;&quot;&gt;/&amp;gt;&lt;/span&gt;;
   ReactDOM.render(element, rootElement);
  &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
 &lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span style=&quot;color: #007700;&quot;&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
script type을 text/babel로 변경해줘야 한다.&lt;br /&gt;
&lt;br /&gt;
const element = &amp;lt;div className=&quot;container&quot;&amp;gt;Hello World&amp;lt;/div&amp;gt;&lt;br /&gt;
와 같이 표현해도 화면에 Hello World가 찍힌다.&lt;br /&gt;
&lt;br /&gt;
{}를 사용하면 자바스크립트를 사용할수 있으므로&lt;br /&gt;
const myClassName = &quot;container&quot;;&lt;br /&gt;
const content = &quot;Hello World&quot;;&lt;br /&gt;
&lt;br /&gt;
const element = &amp;lt;div className={myClassName}&amp;gt;{content}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
와 같이 표현이 가능하다.&lt;br /&gt;
&lt;br /&gt;
const element = &quot;&amp;lt;div classNAme=&#39;container&#39;&amp;gt;hello world&amp;lt;/div&amp;gt;&quot;; 이렇게&lt;br /&gt;
쌍따옴표로 쓰게되면 해당 부분이 string으로 그대로 출력된다.&lt;br /&gt;
&lt;br /&gt;
const element = &amp;lt;div {...props} /&amp;gt;를 사용하면&lt;br /&gt;
위에서 명시한 json정보 그대로 매핑이 되며 만약 className을 override를 하고 싶은경우&lt;br /&gt;
&lt;br /&gt;
const elenet = &amp;lt;div {...props} className=&quot;my_class&quot;&amp;gt;&lt;br /&gt;
와 같이 뒤쪽에 override해줘야 한다.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://hellowk1.blogspot.com/feeds/1505348431205212656/comments/default' title='댓글'/><link rel='replies' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs1.html#comment-form' title='0개의 덧글'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/1505348431205212656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8260673545987087429/posts/default/1505348431205212656'/><link rel='alternate' type='text/html' href='http://hellowk1.blogspot.com/2018/09/reactjs1.html' title='[REACTJS]1일차 REACTJS'/><author><name>jamong</name><uri>http://www.blogger.com/profile/10908342885209580122</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>