<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>주니어 개발자 모몽'-'</title>
    <link>https://codingmomong.tistory.com/</link>
    <description>차근차근 개발 일기</description>
    <language>ko</language>
    <pubDate>Wed, 13 May 2026 11:08:10 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>momong'-'</managingEditor>
    <image>
      <title>주니어 개발자 모몽'-'</title>
      <url>https://tistory1.daumcdn.net/tistory/3665928/attach/86e6182d63124998805abc153a12baae</url>
      <link>https://codingmomong.tistory.com</link>
    </image>
    <item>
      <title>CSS란?</title>
      <link>https://codingmomong.tistory.com/648</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;CSS 의미, 정의&lt;/h2&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS(Cascading Style Sheet)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cascading: 위에서 아래로 흐르는 느낌.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7FPGU/btsGnF9PcAq/c6t1yh55n4s960id6MkWo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7FPGU/btsGnF9PcAq/c6t1yh55n4s960id6MkWo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7FPGU/btsGnF9PcAq/c6t1yh55n4s960id6MkWo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7FPGU%2FbtsGnF9PcAq%2Fc6t1yh55n4s960id6MkWo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;370&quot; height=&quot;170&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Style&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Author Style
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;우리가 사용하는 CSS 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;User Style
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용자의 취향에 맞게 브라우저에서 변환한 Style&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Browser
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Browser에서 정의한 Style&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우선순위: Author &amp;gt; User Style &amp;gt; Browser&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;!important 가장 최우선으로 적용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Selectors(선택자)&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 122px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;Universal&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 20px;&quot;&gt;* (all)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;type&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;Tag&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;ID&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;#id&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;Class&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;.class&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;state&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;:&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;Attribute&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;[]&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-default-tab=&quot;html,result&quot; data-slug-hash=&quot;qBwxPpm&quot; data-user=&quot;YoonJung-Lee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/YoonJung-Lee/pen/qBwxPpm&quot;&gt; Untitled&lt;/a&gt; by YoonJung Lee (&lt;a href=&quot;https://codepen.io/YoonJung-Lee&quot;&gt;@YoonJung-Lee&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://cpwebassets.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSS 게임으로 알아보기&lt;/p&gt;
&lt;figure id=&quot;og_1712303673356&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;CSS Diner&quot; data-og-description=&quot;A fun game to help you learn and practice CSS selectors.&quot; data-og-host=&quot;flukeout.github.io&quot; data-og-source-url=&quot;https://flukeout.github.io/&quot; data-og-url=&quot;http://cssdiner.com&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/lISAN/hyVJ1PDNK9/aEKvlRTRCKJt1XUU1aHuXK/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;https://flukeout.github.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://flukeout.github.io/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/lISAN/hyVJ1PDNK9/aEKvlRTRCKJt1XUU1aHuXK/img.jpg?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;CSS Diner&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;A fun game to help you learn and practice CSS selectors.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;flukeout.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스타일링&lt;/h3&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-default-tab=&quot;html,result&quot; data-slug-hash=&quot;qBwxPpm&quot; data-user=&quot;YoonJung-Lee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/YoonJung-Lee/pen/qBwxPpm&quot;&gt; Untitled&lt;/a&gt; by YoonJung Lee (&lt;a href=&quot;https://codepen.io/YoonJung-Lee&quot;&gt;@YoonJung-Lee&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://cpwebassets.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;display&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inline: 물건 자체만을 꾸며줌. 물건의 크기에 맞춰 변경.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;inline-block: 한줄에 여러개 넣는데 상자로 변환되어서 지정한 width, height에 맞춰 표기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;block: 한줄에 하나씩 표기되는 상자&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-default-tab=&quot;html,result&quot; data-slug-hash=&quot;qBwxPpm&quot; data-user=&quot;YoonJung-Lee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/YoonJung-Lee/pen/qBwxPpm&quot;&gt; Untitled&lt;/a&gt; by YoonJung Lee (&lt;a href=&quot;https://codepen.io/YoonJung-Lee&quot;&gt;@YoonJung-Lee&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://cpwebassets.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;position&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;relative: 원래 있어야 하는 아이템에서 옮겨간 것(default)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;absolute: 내가 담겨 있는 상자 안에서 옮겨간 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fixed: 상자를 벗어나서 페이지 상에서 옮겨간 것&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;sticky: 원래 있어야 하는 아이템 자리 그대로. 스크롤 영향을 받지 않음.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;헷갈리는 컨셉&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;CSS 꽃: FlexBox&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;float&lt;/h4&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;이미지와 텍스트를 어떻게 배치하는 용도&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;left,&amp;nbsp;center,&amp;nbsp;right&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;container-item&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;371&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dLbUIo/btsGrULkbSE/Xr0bQ95uvh0ylKzDkQInJK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dLbUIo/btsGrULkbSE/Xr0bQ95uvh0ylKzDkQInJK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dLbUIo/btsGrULkbSE/Xr0bQ95uvh0ylKzDkQInJK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdLbUIo%2FbtsGrULkbSE%2FXr0bQ95uvh0ylKzDkQInJK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;793&quot; height=&quot;371&quot; data-origin-width=&quot;793&quot; data-origin-height=&quot;371&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;container&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;item&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;&lt;span&gt;display&lt;/span&gt;&lt;br /&gt;&lt;span&gt;flex-direction&lt;/span&gt;&lt;br /&gt;&lt;span&gt;flex-wrap&lt;/span&gt;&lt;br /&gt;&lt;span&gt;flex-flow&lt;/span&gt;&lt;br /&gt;&lt;span&gt;justify-content&lt;/span&gt;&lt;br /&gt;&lt;span&gt;align-items&lt;/span&gt;&lt;br /&gt;&lt;span&gt;align-content&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;order&lt;br /&gt;flex-grow&lt;br /&gt;flex-shrink&lt;br /&gt;flex&lt;br /&gt;align-self&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kOj9E/btsGqMm0QJw/CVYG62hYInMiGKYfEN26aK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kOj9E/btsGqMm0QJw/CVYG62hYInMiGKYfEN26aK/img.png&quot; data-origin-width=&quot;859&quot; data-origin-height=&quot;437&quot; data-is-animation=&quot;false&quot; style=&quot;width: 67.556%; margin-right: 10px;&quot; data-widthpercent=&quot;68.35&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kOj9E/btsGqMm0QJw/CVYG62hYInMiGKYfEN26aK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkOj9E%2FbtsGqMm0QJw%2FCVYG62hYInMiGKYfEN26aK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;859&quot; height=&quot;437&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3RfD3/btsGrVwJw2l/9ODcqIwE9DsTxE84MvK5fK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3RfD3/btsGrVwJw2l/9ODcqIwE9DsTxE84MvK5fK/img.png&quot; data-origin-width=&quot;527&quot; data-origin-height=&quot;579&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.2812%;&quot; data-widthpercent=&quot;31.65&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3RfD3/btsGrVwJw2l/9ODcqIwE9DsTxE84MvK5fK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3RfD3%2FbtsGrVwJw2l%2F9ODcqIwE9DsTxE84MvK5fK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;527&quot; height=&quot;579&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중심축을 어디에 두냐에 따라 달라짐.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-default-tab=&quot;html,result&quot; data-slug-hash=&quot;qBwxPpm&quot; data-user=&quot;YoonJung-Lee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/YoonJung-Lee/pen/qBwxPpm&quot;&gt; Untitled&lt;/a&gt; by YoonJung Lee (&lt;a href=&quot;https://codepen.io/YoonJung-Lee&quot;&gt;@YoonJung-Lee&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://cpwebassets.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100%: 부모 높이의 100%&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;100vh: 부모에 상관없이 보이는 화면의 100%를 사용.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;display&lt;/b&gt;: flex&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;flex-direction&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;row(기본값) 왼쪽 -&amp;gt; 오른쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;row-rverse: 오른쪽 -&amp;gt; 왼쪽&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;column: 위 -&amp;gt;&amp;nbsp; 아래&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt; column -rverse:&lt;span&gt; 아래 -&amp;gt; 위&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;flex-wrap&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;nowrap(기본값): 무조건 한줄에 item이 나열됨.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;wrap: 화면에 맞게 item들이 나열됨.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;wrap-reverse: 아래서부터 화면에 맞게 item들이 나열됨.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;felx-flow(flex-direction + flex-wrap)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;row nowrap&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;jusify-content&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flex-end: item 순서는 유지한채 아래에 배치.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;space-around&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;space-evenly&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;spave-between: 중간에만 공백&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;align-items&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;baseline&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;align-content&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;codepen&quot; style=&quot;height: 300px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; border: 2px solid; margin: 1em 0; padding: 1em;&quot; data-height=&quot;300&quot; data-default-tab=&quot;html,result&quot; data-slug-hash=&quot;qBwxPpm&quot; data-user=&quot;YoonJung-Lee&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;See the Pen &lt;a href=&quot;https://codepen.io/YoonJung-Lee/pen/qBwxPpm&quot;&gt; Untitled&lt;/a&gt; by YoonJung Lee (&lt;a href=&quot;https://codepen.io/YoonJung-Lee&quot;&gt;@YoonJung-Lee&lt;/a&gt;) on &lt;a href=&quot;https://codepen.io&quot;&gt;CodePen&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;script src=&quot;https://cpwebassets.codepen.io/assets/embed/ei.js&quot;&gt;&lt;/script&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flex-grow:items이 늘어날때 비율 설정 가능, 0(기본값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flex-shrink: items이 줄어드는 비율 설정 가능 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;0(기본값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flex-basis: items 커질때도, 작아질때도, 퍼센트로 설정가능, auto(기본값)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;align-self: item중 item 개별로 수정하고 싶을때 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=gGebK7lWnCk&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/bVUK1x/hyVJ1hPuTP/HgAtKlBhEsOw24aZUiszx0/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/gGebK7lWnCk&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=jWh3IbgMUPI&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/duOeXn/hyVJYFnJuP/8yjysvR38jYIPLcaARafnk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/jWh3IbgMUPI&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=7neASrWEFEM&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/ZuWZY/hyVJTkrgDM/XZKb3vkPtul07tnydjsTIk/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-original-url=&quot;&quot; data-video-title=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/7neASrWEFEM&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;youtube&quot; data-video-url=&quot;https://www.youtube.com/watch?v=7neASrWEFEM&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/xMmGY/hyVMLrw7z2/KK4KF9Df1Qvx74JW18kt2K/img.jpg?width=1280&amp;amp;height=720&amp;amp;face=0_0_1280_720&quot; data-video-width=&quot;860&quot; data-video-height=&quot;484&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;484&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;CSS Flexbox 완전 정리. 포트폴리오 만드는 날까지! | 프론트엔드 개발자 입문편: HTML, CSS, Javascript&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/7neASrWEFEM&quot; width=&quot;860&quot; height=&quot;484&quot; frameborder=&quot;&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption style=&quot;display: none;&quot;&gt;&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/모몽이 공부중</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/648</guid>
      <comments>https://codingmomong.tistory.com/648#entry648comment</comments>
      <pubDate>Mon, 8 Apr 2024 11:09:26 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 인스타그램 클론 생성하기 - 3 Home Page 화면 만들기, Flutter Inspector 사용법</title>
      <link>https://codingmomong.tistory.com/647</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;화면설계 - Home Page UI&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ceeaIf/btsgcqjtHe2/Coe9wMfDO3dJzO1KEsuIm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ceeaIf/btsgcqjtHe2/Coe9wMfDO3dJzO1KEsuIm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ceeaIf/btsgcqjtHe2/Coe9wMfDO3dJzO1KEsuIm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FceeaIf%2FbtsgcqjtHe2%2FCoe9wMfDO3dJzO1KEsuIm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;354&quot; height=&quot;767&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Home Page는 Column을 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Column안에 Text, Card를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Card안에 또 Column을 생성한 후 Image, Text, Row를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Row안에 Image List를 넣는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Flutter Inspector&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;: Flutter 위젯 트리를 시각화하고 탐색하기 위한 도구.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위젯 컨트롤부터 레이아웃까지 모든 항목을 블록으로 사용해 유용하게 사용되는 도구이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/tools/devtools/inspector&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://docs.flutter.dev/tools/devtools/inspector&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684301650502&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Using the Flutter inspector&quot; data-og-description=&quot;Learn how to use the Flutter inspector to explore a Flutter app's widget tree.&quot; data-og-host=&quot;docs.flutter.dev&quot; data-og-source-url=&quot;https://docs.flutter.dev/tools/devtools/inspector&quot; data-og-url=&quot;https://docs.flutter.dev/tools/devtools/inspector&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dZ53g2/hySE7SzWDQ/zNXjA10VpjIylXCkH9KoZk/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/CH0s7/hySE5UNaCe/pNAY6z4eUa0kKjT05lPYA0/img.png?width=1474&amp;amp;height=940&amp;amp;face=0_0_1474_940&quot;&gt;&lt;a href=&quot;https://docs.flutter.dev/tools/devtools/inspector&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://docs.flutter.dev/tools/devtools/inspector&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dZ53g2/hySE7SzWDQ/zNXjA10VpjIylXCkH9KoZk/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/CH0s7/hySE5UNaCe/pNAY6z4eUa0kKjT05lPYA0/img.png?width=1474&amp;amp;height=940&amp;amp;face=0_0_1474_940');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Using the Flutter inspector&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Learn how to use the Flutter inspector to explore a Flutter app's widget tree.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;docs.flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock floatLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;28&quot; data-origin-height=&quot;147&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bb3sO3/btsgezz5B37/pMmLeUFNz36XLnKIIqgWs0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bb3sO3/btsgezz5B37/pMmLeUFNz36XLnKIIqgWs0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bb3sO3/btsgezz5B37/pMmLeUFNz36XLnKIIqgWs0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbb3sO3%2Fbtsgezz5B37%2FpMmLeUFNz36XLnKIIqgWs0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;28&quot; height=&quot;147&quot; data-origin-width=&quot;28&quot; data-origin-height=&quot;147&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Android Studio 프로그램 오른쪽을 보면 Flutter Inspector 탭이 보인다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기를 클릭하여 좀 더 편하게 디자인을 할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Yb0AV/btsgjmmK5F1/q5QWpz1cZX8Me6fW1OjSs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Yb0AV/btsgjmmK5F1/q5QWpz1cZX8Me6fW1OjSs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Yb0AV/btsgjmmK5F1/q5QWpz1cZX8Me6fW1OjSs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYb0AV%2FbtsgjmmK5F1%2Fq5QWpz1cZX8Me6fW1OjSs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;show-guidelines&quot; style=&quot;background-color: #ffffff; color: #4a4a4a; text-align: left;&quot; data-ke-size=&quot;size23&quot;&gt;Show guidelines&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;386&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dDNRfd/btsggMML2MH/f10EHkbhBXa36zDcuS2AQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dDNRfd/btsggMML2MH/f10EHkbhBXa36zDcuS2AQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dDNRfd/btsggMML2MH/f10EHkbhBXa36zDcuS2AQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdDNRfd%2FbtsggMML2MH%2Ff10EHkbhBXa36zDcuS2AQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;817&quot; height=&quot;386&quot; data-origin-width=&quot;817&quot; data-origin-height=&quot;386&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 버튼을 클릭 시 위젯 레이아웃을 잘 볼 수 있도록 도와준다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddORq1/btsgiCXqnbP/L2qBWsIDzhKDitMtX6U25K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddORq1/btsgiCXqnbP/L2qBWsIDzhKDitMtX6U25K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddORq1/btsgiCXqnbP/L2qBWsIDzhKDitMtX6U25K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddORq1%2FbtsgiCXqnbP%2FL2qBWsIDzhKDitMtX6U25K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 코드로 활성화 가능하다.&lt;/p&gt;
&lt;pre id=&quot;code_1684301927693&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/rendering.dart';

void showLayoutGuidelines() {
  debugPaintSizeEnabled = true;
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Home Page 구현&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bx9qnn/btsge6Y2Zkf/srp4N0pnFZXfCZUeX6v891/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bx9qnn/btsge6Y2Zkf/srp4N0pnFZXfCZUeX6v891/img.png&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;360&quot; data-is-animation=&quot;false&quot; style=&quot;width: 26.7919%; margin-right: 10px;&quot; data-widthpercent=&quot;27.11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bx9qnn/btsge6Y2Zkf/srp4N0pnFZXfCZUeX6v891/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbx9qnn%2Fbtsge6Y2Zkf%2Fsrp4N0pnFZXfCZUeX6v891%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;238&quot; height=&quot;360&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blkshe/btsgfraPBqC/qMkYhnfpMAXYpmAFJZ0RsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blkshe/btsgfraPBqC/qMkYhnfpMAXYpmAFJZ0RsK/img.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot; data-is-animation=&quot;false&quot; style=&quot;width: 72.0453%;&quot; data-widthpercent=&quot;72.89&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blkshe/btsgfraPBqC/qMkYhnfpMAXYpmAFJZ0RsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fblkshe%2FbtsgfraPBqC%2FqMkYhnfpMAXYpmAFJZ0RsK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI 설계한대로 Column 안에 Text, Card를 만들고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Card 안에 Column과 Text, Row 등을 만든다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 중간중간 SizedBox를 이용해 공백 공간을 만들어 자연스럽게 만들어준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 하드코딩으로 글 모두 생성 후 나중에 데이터 불러오도록 변경할 예정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XXBeJ/btsgkZEcPB5/gULQAvaey6hzz2ssmYXzP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XXBeJ/btsgkZEcPB5/gULQAvaey6hzz2ssmYXzP1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XXBeJ/btsgkZEcPB5/gULQAvaey6hzz2ssmYXzP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXXBeJ%2FbtsgkZEcPB5%2FgULQAvaey6hzz2ssmYXzP1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;626&quot; height=&quot;1356&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;home_page.dart&lt;/p&gt;
&lt;pre id=&quot;code_1684301091241&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: const Text('Instagram Clone'),
        ),
        body: Center(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              const SizedBox(height: 20),
              const Text('Instagram에 오신 것을 환영합니다.', style: TextStyle(fontSize: 24)),
              const SizedBox(height: 20),
              const Text('사진과 동영상을 보려면 팔로우하세요'),
              const SizedBox(height: 20),
              Card(
                elevation: 4.0,
                child: Padding(
                  padding: const EdgeInsets.all(16.0),
                  child: Column(
                    children: [
                      const SizedBox(
                        width: 80,
                        height: 80,
                        child: CircleAvatar(
                          backgroundImage: NetworkImage('https://cdnimg.melon.co.kr/cm2/artistcrop/images/002/61/143/261143_20210325180240_500.jpg?61e575e8653e5920470a38d1482d7312/melon/resize/416/quality/80/optimize'),
                        ),
                      ),
                      const SizedBox(height: 8),
                      const Text('momong@instagram.com',
                        style: TextStyle(
                          fontWeight: FontWeight.bold
                        ),
                      ),
                      const Text('모몽'),
                      const SizedBox(height: 8),
                      Row(
                        mainAxisSize: MainAxisSize.min,
                        mainAxisAlignment: MainAxisAlignment.center,
                        children: [
                          Image.network('https://cdnimg.melon.co.kr/cm2/artistcrop/images/002/61/143/261143_20210325180240_500.jpg?61e575e8653e5920470a38d1482d7312/melon/resize/416/quality/80/optimize',
                            width: 70,
                            height: 70,
                            fit: BoxFit.cover
                          ),
                          const SizedBox(width: 4),
                          Image.network('https://pbs.twimg.com/media/Fo0CQVeacAAuLmz?format=jpg&amp;amp;name=4096x4096',
                            width: 70,
                            height: 70,
                              fit: BoxFit.cover
                          ),
                          const SizedBox(width: 4),
                          Image.network('https://img.hankyung.com/photo/202209/01.31260157.1.jpg',
                            width: 70,
                            height: 70,
                              fit: BoxFit.cover
                          ),
                        ],
                      ),
                      const SizedBox(height: 8),
                      const Text('Facebook 친구'),
                      const SizedBox(height: 8),
                      ElevatedButton(
                        onPressed: () {},
                        child: const Text('팔로우'),
                      ),
                    ],
                  ),
                ),
              ),
            ],
          ),
        ));
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/LeeYoonJung/InstagramClone&quot;&gt;https://github.com/LeeYoonJung/InstagramClone&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684302550427&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - LeeYoonJung/InstagramClone: Instagram Clone (인프런 Flutter 강의)&quot; data-og-description=&quot;Instagram Clone (인프런 Flutter 강의). Contribute to LeeYoonJung/InstagramClone development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; data-og-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/diErH9/hySE6zpMvZ/fT6L81BT9zANpS4ypA2pn0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/diErH9/hySE6zpMvZ/fT6L81BT9zANpS4ypA2pn0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - LeeYoonJung/InstagramClone: Instagram Clone (인프런 Flutter 강의)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Instagram Clone (인프런 Flutter 강의). Contribute to LeeYoonJung/InstagramClone development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의 기록/Flutter 인스타그램 클론 생성(오준석)</category>
      <category>flutter</category>
      <category>Flutter Inspector</category>
      <category>Instagram</category>
      <category>안드로이드스튜디오</category>
      <category>인스타그램클론</category>
      <category>플러터</category>
      <category>플러터 기초</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/647</guid>
      <comments>https://codingmomong.tistory.com/647#entry647comment</comments>
      <pubDate>Wed, 17 May 2023 14:51:14 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 인스타그램 클론 생성하기 -2 네비바 클릭 시 화면 전환 기능 구현</title>
      <link>https://codingmomong.tistory.com/646</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;화면설계&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b52DDX/btsf2G0UKUV/Errvt3itkeKYTDV4iT7iq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b52DDX/btsf2G0UKUV/Errvt3itkeKYTDV4iT7iq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b52DDX/btsf2G0UKUV/Errvt3itkeKYTDV4iT7iq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb52DDX%2Fbtsf2G0UKUV%2FErrvt3itkeKYTDV4iT7iq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tab Page에 네비바가 존재하고, Home Page, SearchPage, Account Page가 있다. 각 메뉴를 클릭하였을 경우 각 페이지로 이동되도록 구현한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단 화면이 이동되는 것만 구현해두고, 각 페이지는 다음에 차근차근 변경할 예정이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;bottomNavigationBar&lt;/b&gt;: 하단에 있는 네비게이션 바&lt;/p&gt;
&lt;pre id=&quot;code_1684213011113&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bottomNavigationBar: BottomNavigationBar(
        currentIndex: _currentIndex, // 선택된 네비게이션바 아이템 Index
        onTap: (index) { // 클릭이벤트
          setState(() {
            _currentIndex = index; // 클릭한 네비게이션바 아이템을 현재 Index로 지정.
          });
        },
        items: const [ // 네비게이션 바 리스트
          BottomNavigationBarItem(
            icon: {아이콘},
            label: {라벨명},
          ),
        ],
      )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;TabPage에서 클릭이벤트를 줘 클릭시 선택된 네비아이템이 표시되게 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure data-ke-type=&quot;video&quot; data-ke-style=&quot;alignCenter&quot; data-video-host=&quot;kakaotv&quot; data-video-url=&quot;https://tv.kakao.com/v/438063772&quot; data-video-thumbnail=&quot;https://scrap.kakaocdn.net/dn/dS41O7/hySE3u33bv/uJ9XYxkrPErkIHYsFhpKl1/img.jpg?width=886&amp;amp;height=1920&amp;amp;face=0_0_886_1920,https://scrap.kakaocdn.net/dn/mIz4Y/hySEVRkZv9/zSrKkyw1mBtsmkDRYWk8Z1/img.jpg?width=886&amp;amp;height=1920&amp;amp;face=0_0_886_1920&quot; data-video-width=&quot;400&quot; data-video-height=&quot;867&quot; data-video-origin-width=&quot;860&quot; data-video-origin-height=&quot;1864&quot; data-ke-mobilestyle=&quot;widthContent&quot; data-video-title=&quot;'주니어 개발자 모몽..'에서 업로드한 동영상&quot; data-video-play-service=&quot;daum_tistory&quot; data-original-url=&quot;&quot;&gt;&lt;iframe src=&quot;https://play-tv.kakao.com/embed/player/cliplink/438063772?service=daum_tistory&quot; width=&quot;400&quot; height=&quot;867&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;true&quot;&gt;&lt;/iframe&gt;
&lt;figcaption&gt;인스타그램 클론 네비게이션바기능구현&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;소스코드&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tab_page.dart&lt;/p&gt;
&lt;pre id=&quot;code_1684212800936&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:instagram_clone/tab/account/account_page.dart';
import 'package:instagram_clone/tab/home/home_page.dart';
import 'package:instagram_clone/tab/search/search_page.dart';

class TabPage extends StatefulWidget {
  const TabPage({Key? key}) : super(key: key);

  @override
  State&amp;lt;TabPage&amp;gt; createState() =&amp;gt; _TabPageState();
}

class _TabPageState extends State&amp;lt;TabPage&amp;gt; {
  int _currentIndex = 0;

  final _pages = const [
    HomePage(),
    SearchPage(),
    AccountPage(),
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: _pages[_currentIndex],
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: _currentIndex,
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        items: const [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'home',
          ),BottomNavigationBarItem(
            icon: Icon(Icons.search),
            label: 'search',
          ),BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: 'account',
          ),
        ],
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네비게이션바 아이템을 클릭시 body 내용이 변할 수 있도록, 네비바 아이템과 body안 페이지 리스트 갯수를 맞춰 코드를 설계한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;home_page.dart&lt;/p&gt;
&lt;pre id=&quot;code_1684213139223&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class HomePage extends StatelessWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar:  AppBar(
        title: const Text('Instagram Clone'),
      ),
      body: Column(
        children: [
          Text('Instagram에 오신 것을 환영합니다.')
        ],
      )
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;search_page.dart&lt;/p&gt;
&lt;pre id=&quot;code_1684213153711&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class SearchPage extends StatelessWidget {
  const SearchPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;account_page.dart&lt;/p&gt;
&lt;pre id=&quot;code_1684213164448&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class AccountPage extends StatelessWidget {
  const AccountPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/LeeYoonJung/InstagramClone&quot;&gt;https://github.com/LeeYoonJung/InstagramClone&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1684213931697&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - LeeYoonJung/InstagramClone: Instagram Clone (인프런 Flutter 강의)&quot; data-og-description=&quot;Instagram Clone (인프런 Flutter 강의). Contribute to LeeYoonJung/InstagramClone development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; data-og-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bsWdWz/hySC3cooTu/kKX2T8qCPRhUtD89r69iH0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bsWdWz/hySC3cooTu/kKX2T8qCPRhUtD89r69iH0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - LeeYoonJung/InstagramClone: Instagram Clone (인프런 Flutter 강의)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Instagram Clone (인프런 Flutter 강의). Contribute to LeeYoonJung/InstagramClone development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의 기록/Flutter 인스타그램 클론 생성(오준석)</category>
      <category>bottomnavigationbar</category>
      <category>bottomNavigationBar body 변경</category>
      <category>bottomNavigationBar 페이지 이동</category>
      <category>flutter</category>
      <category>Instagram</category>
      <category>네비게이션 바</category>
      <category>안드로이드스튜디오</category>
      <category>인스타그램클론</category>
      <category>플러터</category>
      <category>플러터 기초</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/646</guid>
      <comments>https://codingmomong.tistory.com/646#entry646comment</comments>
      <pubDate>Tue, 16 May 2023 14:01:22 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] StatelessWidget 자동완성시 import 넣기(stless), 자동완성 코드 구현하기(Live Template)</title>
      <link>https://codingmomong.tistory.com/645</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;StatelessWidget 생성 시 자동 import가 안되어 직접 import 기능을 넣어야 하는 번거로움이 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동 완성 코드를 수정하는 방법이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Android Studio 왼쪽 상단 탭에서&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;File &amp;gt; Settings를 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Editor &amp;gt; &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&amp;gt; Live Template에 들어간 뒤&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Flutter 아래 stless가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FQSYL/btsfWVpDaa3/GxqlQCHebwpg29QsQ4csWk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FQSYL/btsfWVpDaa3/GxqlQCHebwpg29QsQ4csWk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FQSYL/btsfWVpDaa3/GxqlQCHebwpg29QsQ4csWk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFQSYL%2FbtsfWVpDaa3%2FGxqlQCHebwpg29QsQ4csWk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;983&quot; height=&quot;714&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Template text를 보면 import가 없는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맨 위에 아래 코드를 삽입한다.&lt;/p&gt;
&lt;pre id=&quot;code_1684130637175&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stless 입력 시 자동완성 코드&lt;/p&gt;
&lt;pre id=&quot;code_1684130656967&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class $NAME$ extends StatelessWidget {
  const $NAME$({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const Placeholder($END$);
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;$NAME$은 변수이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자동완성 된 코드를 보면 처음에 네모박스로 커서가 깜빡이는데 원하는 코드를 입력하고 엔터를 치면 $NAME$ 들어간 부분에 동일하게 작성된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정 후 OK를 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 다음 자동완성할 경우 import가 같이 자동완성되는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/소소한 팁</category>
      <category>Android Studio</category>
      <category>flutter</category>
      <category>Import</category>
      <category>import 자동완성</category>
      <category>live template</category>
      <category>StatelessWidget</category>
      <category>stless</category>
      <category>안드로이드스튜디오</category>
      <category>플러터</category>
      <category>플러터 자동완성</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/645</guid>
      <comments>https://codingmomong.tistory.com/645#entry645comment</comments>
      <pubDate>Mon, 15 May 2023 15:07:51 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 인스타그램 클론 생성하기 - 1 화면 설계 및 프로젝트 생성</title>
      <link>https://codingmomong.tistory.com/644</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;화면설계&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eynAUf/btsfaNkKlJy/sZzV5MaltkVe5x07VGw5Lk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eynAUf/btsfaNkKlJy/sZzV5MaltkVe5x07VGw5Lk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eynAUf/btsfaNkKlJy/sZzV5MaltkVe5x07VGw5Lk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeynAUf%2FbtsfaNkKlJy%2FsZzV5MaltkVe5x07VGw5Lk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1920&quot; height=&quot;1080&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로그인 했을 경우와 안했을 경우 다른 화면이 뜰 수 있도록&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;RootPage를 최초페이지로 두고 경우에 따라 Login Page 또는 Tab Page가 나오도록 설정&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로젝트 생성&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;왼쪽 상단 탭 File &amp;gt; New &amp;gt; New Flutter Project...를 선택하여 프로젝트를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IsEhL/btsfbjqgdSB/uQC2aXY8TeNUvAemIf7NO0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IsEhL/btsfbjqgdSB/uQC2aXY8TeNUvAemIf7NO0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IsEhL/btsfbjqgdSB/uQC2aXY8TeNUvAemIf7NO0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIsEhL%2FbtsfbjqgdSB%2FuQC2aXY8TeNUvAemIf7NO0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;610&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SDK 위치 확인하기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SDK 설치방법&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://codingmomong.tistory.com/639&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;2023.04.26 - [Study/소소한 팁] - [Flutter] 플러터 설치 및 환경설정(Windows)&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1683875718962&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[Flutter] 플러터 설치 및 환경설정(Windows)&quot; data-og-description=&quot;Flutter 설치방법 플러 설치 링크 https://flutter.dev/ Flutter - Build apps for any screen Flutter transforms the entire app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase. flut&quot; data-og-host=&quot;codingmomong.tistory.com&quot; data-og-source-url=&quot;https://codingmomong.tistory.com/639&quot; data-og-url=&quot;https://codingmomong.tistory.com/639&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dmlAHa/hySAlYAzJh/WXm3OkKZ3Iyo1itf1t8sOk/img.png?width=800&amp;amp;height=379&amp;amp;face=0_0_800_379,https://scrap.kakaocdn.net/dn/8UNkF/hySAbIpmV3/KxZPGUFaffAl1vZvBWLzC0/img.png?width=800&amp;amp;height=379&amp;amp;face=0_0_800_379,https://scrap.kakaocdn.net/dn/QSrLf/hySz5VMTMz/Fv05kNaizkU3LPNz4491o0/img.png?width=1921&amp;amp;height=1032&amp;amp;face=0_0_1921_1032&quot;&gt;&lt;a href=&quot;https://codingmomong.tistory.com/639&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://codingmomong.tistory.com/639&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dmlAHa/hySAlYAzJh/WXm3OkKZ3Iyo1itf1t8sOk/img.png?width=800&amp;amp;height=379&amp;amp;face=0_0_800_379,https://scrap.kakaocdn.net/dn/8UNkF/hySAbIpmV3/KxZPGUFaffAl1vZvBWLzC0/img.png?width=800&amp;amp;height=379&amp;amp;face=0_0_800_379,https://scrap.kakaocdn.net/dn/QSrLf/hySz5VMTMz/Fv05kNaizkU3LPNz4491o0/img.png?width=1921&amp;amp;height=1032&amp;amp;face=0_0_1921_1032');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[Flutter] 플러터 설치 및 환경설정(Windows)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Flutter 설치방법 플러 설치 링크 https://flutter.dev/ Flutter - Build apps for any screen Flutter transforms the entire app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase. flut&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;codingmomong.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/K8smj/btsfaKO63a6/GA1wk8KpQz9cjcfQKWpPpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/K8smj/btsfaKO63a6/GA1wk8KpQz9cjcfQKWpPpk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/K8smj/btsfaKO63a6/GA1wk8KpQz9cjcfQKWpPpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK8smj%2FbtsfaKO63a6%2FGA1wk8KpQz9cjcfQKWpPpk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;610&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 이름 설정 후 Create를 눌러 프로젝트를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 생성 후 lib 디렉토리 아래 화면별로 Directory를 생성한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Direcotory는 원하는 위치에서 마우스 우클릭 &amp;gt; New &amp;gt; Directory를 클릭하여 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNZdQK/btsfbygAM3a/LA2iY3C08HxZkJoHwTtKKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNZdQK/btsfbygAM3a/LA2iY3C08HxZkJoHwTtKKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNZdQK/btsfbygAM3a/LA2iY3C08HxZkJoHwTtKKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNZdQK%2FbtsfbygAM3a%2FLA2iY3C08HxZkJoHwTtKKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;281&quot; height=&quot;307&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;281&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사진과 같이 Directory와 dart파일을 생성해둔다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Tab Page 생성하기&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main.dart&lt;/p&gt;
&lt;pre id=&quot;code_1683876258966&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

import 'tab/tab_page.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const TabPage(),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tab_page.dart&lt;/p&gt;
&lt;pre id=&quot;code_1683876230388&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class TabPage extends StatefulWidget {
  const TabPage({Key? key}) : super(key: key);

  @override
  State&amp;lt;TabPage&amp;gt; createState() =&amp;gt; _TabPageState();
}

class _TabPageState extends State&amp;lt;TabPage&amp;gt; {
  int _currentIndex = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      bottomNavigationBar: BottomNavigationBar(
        currentIndex: _currentIndex,
        onTap: (index) {
          setState(() {
            _currentIndex = index;
          });
        },
        items: const [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            label: 'home',
          ),BottomNavigationBarItem(
            icon: Icon(Icons.search),
            label: 'search',
          ),BottomNavigationBarItem(
            icon: Icon(Icons.person),
            label: 'account',
          ),
        ],
      ),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;main에서 Tab Page로 연결되게 만들었다. 로그인 기능은 나중에!!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tab Page 하단에는 home, search, account 세개 네비바가 존재하도록 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;결과&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4vxoY/btse93Iq0wk/mGIyOzybenBnHzHQbUsy3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4vxoY/btse93Iq0wk/mGIyOzybenBnHzHQbUsy3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4vxoY/btse93Iq0wk/mGIyOzybenBnHzHQbUsy3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4vxoY%2Fbtse93Iq0wk%2FmGIyOzybenBnHzHQbUsy3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;351&quot; height=&quot;721&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;2220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/LeeYoonJung/InstagramClone&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1683877653255&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - LeeYoonJung/InstagramClone: Instagram Clone (인프런 Flutter 강의)&quot; data-og-description=&quot;Instagram Clone (인프런 Flutter 강의). Contribute to LeeYoonJung/InstagramClone development by creating an account on GitHub.&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; data-og-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/nnoLz/hySBC5uwt3/m8xfFlTMGPxl1UN9ccEUH0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/LeeYoonJung/InstagramClone&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/LeeYoonJung/InstagramClone&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/nnoLz/hySBC5uwt3/m8xfFlTMGPxl1UN9ccEUH0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - LeeYoonJung/InstagramClone: Instagram Clone (인프런 Flutter 강의)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Instagram Clone (인프런 Flutter 강의). Contribute to LeeYoonJung/InstagramClone development by creating an account on GitHub.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의 기록/Flutter 인스타그램 클론 생성(오준석)</category>
      <category>flutter</category>
      <category>플러터</category>
      <category>플러터 강의</category>
      <category>플러터 기초</category>
      <category>플러터 인스타그램</category>
      <category>플러터 인스타그램 클론</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/644</guid>
      <comments>https://codingmomong.tistory.com/644#entry644comment</comments>
      <pubDate>Fri, 12 May 2023 16:48:16 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Unhandled Exception: Connection refused 오류 해결 방안</title>
      <link>https://codingmomong.tistory.com/643</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;에러메세지&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unhandled&amp;nbsp;Exception:&amp;nbsp;Connection&amp;nbsp;refused&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;오류 원인&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;API 도메인 주소를 localhost로 사용으로 발생한 오류이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 애뮬레이터 사용 시 컴퓨터 환경이 아닌 모바일 환경에서 작동중인 것이므로 localhost를 사용하면 접근이 거부되어 오류가 발생한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;수정방안&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ip 주소로 변환해야 한다.&lt;/p&gt;
&lt;pre id=&quot;code_1683078456439&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 기존
http://localhost:8080/

// 변경
http://192.168.0.1:8080/&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;자신의 ip주소(IPv4&amp;nbsp;주소)는 cmd에 들어가서 ipconfig (iOS일 경우 ifconfig)명령어를 사용해서 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/소소한 팁</category>
      <category>Connection refused</category>
      <category>error</category>
      <category>flutter</category>
      <category>Unhandled Exception: Connection refused</category>
      <category>서버 연결</category>
      <category>에러</category>
      <category>플러터</category>
      <category>플러터 오류</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/643</guid>
      <comments>https://codingmomong.tistory.com/643#entry643comment</comments>
      <pubDate>Wed, 3 May 2023 10:50:11 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] Flutter 시작하기 및 기본 샘플 앱 설명</title>
      <link>https://codingmomong.tistory.com/642</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Flutter Project 시작하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Scaffold, AppBar&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bh3qXr/btsdGo1nYsF/tYzB03QiP2DdQNx7mdlKFK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bh3qXr/btsdGo1nYsF/tYzB03QiP2DdQNx7mdlKFK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bh3qXr/btsdGo1nYsF/tYzB03QiP2DdQNx7mdlKFK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbh3qXr%2FbtsdGo1nYsF%2FtYzB03QiP2DdQNx7mdlKFK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1032&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;flutter Project를 생성하면 최초로 main.dart 코드가 실행된다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Scaffold안에 appBar와 body가 존재한다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;appBar는 화면 상단에 있는 파란색 Bar이고, body는 나머지 하얀 화면이다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;appBar와 body에 hello world를 입력해서 출력해봤다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1683010519918&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        // This is the theme of your application.
        //
        // Try running your application with &quot;flutter run&quot;. You'll see the
        // application has a blue toolbar. Then, without quitting the app, try
        // changing the primarySwatch below to Colors.green and then invoke
        // &quot;hot reload&quot; (press &quot;r&quot; in the console where you ran &quot;flutter run&quot;,
        // or simply save your changes to &quot;hot reload&quot; in a Flutter IDE).
        // Notice that the counter didn't reset back to zero; the application
        // is not restarted.
        primarySwatch: Colors.blue,
      ),
      home: Scaffold(
          appBar: AppBar(
            title: Text('HelloWorld'),
          ),
          body: Text(
              'Hello World',
              style: TextStyle(fontSize: 30),
          )),
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;StatelessWidget&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상태가 없는 위젯. 화면이 변경될 소지가 없은 위젯&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;StatefulWidget&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9P4h7/btsdzf5oJjp/rMNP7P6Ktwkvp9pQ5E8St0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9P4h7/btsdzf5oJjp/rMNP7P6Ktwkvp9pQ5E8St0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9P4h7/btsdzf5oJjp/rMNP7P6Ktwkvp9pQ5E8St0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9P4h7%2Fbtsdzf5oJjp%2FrMNP7P6Ktwkvp9pQ5E8St0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;532&quot; height=&quot;100&quot; data-origin-width=&quot;532&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;stful 입력 시 자동완성 된다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJqYyG/btsdGGHuy9H/R0CyAXTtizP3lNaDrtRKH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJqYyG/btsdGGHuy9H/R0CyAXTtizP3lNaDrtRKH1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJqYyG/btsdGGHuy9H/R0CyAXTtizP3lNaDrtRKH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJqYyG%2FbtsdGGHuy9H%2FR0CyAXTtizP3lNaDrtRKH1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;356&quot; height=&quot;332&quot; data-origin-width=&quot;356&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사진과 같은 상태로 class 명 입력하는 부분에 파란 네모에 커서가 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기에서 class 명을 입력하고 Enter를 치면 아래 코드와 같이 자동완성된다.&lt;/p&gt;
&lt;pre id=&quot;code_1683010889886&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

class TestClass extends StatefulWidget {
  const TestClass({Key? key}) : super(key: key);

  @override
  State&amp;lt;TestClass&amp;gt; createState() =&amp;gt; _TestClassState();
}

class _TestClassState extends State&amp;lt;TestClass&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return const Placeholder();
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 최초 main.dart화면도 StaefulWidget으로 코딩되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 클릭 시 출력 이벤트 주기&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JbhUG/btsdwvtXCFU/NK6vC63IPouZpS0roK5X3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JbhUG/btsdwvtXCFU/NK6vC63IPouZpS0roK5X3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JbhUG/btsdwvtXCFU/NK6vC63IPouZpS0roK5X3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJbhUG%2FbtsdwvtXCFU%2FNK6vC63IPouZpS0roK5X3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 클릭시 console창에 '버튼'이 출력되도록 구현한 것이다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1683011204437&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HelloPage('Hello World')
    );
  }
}
class HelloPage extends StatefulWidget {
  final String title;

  // 마우스 우클릭 &amp;gt; Generate &amp;gt; Constructor
  HelloPage(this.title);

  @override
  State&amp;lt;HelloPage&amp;gt; createState() =&amp;gt; _HelloPageState();
}

class _HelloPageState extends State&amp;lt;HelloPage&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add), // 버튼 이미지
        onPressed: () =&amp;gt; print('버튼') // 버튼 클릭 이벤트,),
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Text(widget.title, style: TextStyle(fontSize: 30)));
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;floatingActionButton: 하단 action event를 수행하는 버튼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onPressed(): 버튼 클릭시 이벤트&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;버튼 클릭 시 상태 변경하기&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ql0pP/btsdtFKePul/znAboK7kkRAHA3PnrYEXkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ql0pP/btsdtFKePul/znAboK7kkRAHA3PnrYEXkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ql0pP/btsdtFKePul/znAboK7kkRAHA3PnrYEXkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fql0pP%2FbtsdtFKePul%2FznAboK7kkRAHA3PnrYEXkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;버튼 클릭시 body 영역 문구가 '헬로월드'로 변경된 것을 확인할 수 있다.&lt;/p&gt;
&lt;pre id=&quot;code_1683011452601&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HelloPage('Hello World')
    );
  }
}
class HelloPage extends StatefulWidget {
  final String title;

  // 마우스 우클릭 &amp;gt; Generate &amp;gt; Constructor
  HelloPage(this.title);

  @override
  State&amp;lt;HelloPage&amp;gt; createState() =&amp;gt; _HelloPageState();
}

class _HelloPageState extends State&amp;lt;HelloPage&amp;gt; {
  String _message = 'Hello World!';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: _changeMessage),
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Text(_message, style: TextStyle(fontSize: 30)));
  }


  void _changeMessage() {
    setState(() {
      _message = '헬로월드';
    });
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;기본 샘플 앱 해설&lt;/h2&gt;
&lt;pre id=&quot;code_1683011504070&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import 'package:flutter/material.dart';

void main() =&amp;gt; runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HelloPage('Hello World')
    );
  }
}
class HelloPage extends StatefulWidget {
  final String title;

  // 마우스 우클릭 &amp;gt; Generate &amp;gt; Constructor
  HelloPage(this.title);

  @override
  State&amp;lt;HelloPage&amp;gt; createState() =&amp;gt; _HelloPageState();
}

class _HelloPageState extends State&amp;lt;HelloPage&amp;gt; {
  String _message = 'Hello World!';
  int _counter = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: _changeMessage),
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: &amp;lt;Widget&amp;gt;[
              Text(_message, style: TextStyle(fontSize: 30)),
              Text('$_counter', style: TextStyle(fontSize: 30)),
            ],
          )
      ));
  }


  void _changeMessage() {
    setState(() {
      _message = '헬로월드';
      _counter++;
    });
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;순서대로 보면&lt;/p&gt;
&lt;pre id=&quot;code_1683011573926&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void main() =&amp;gt; runApp(const MyApp());&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;runApp으로 MyApp을 실행한다.&lt;/p&gt;
&lt;pre id=&quot;code_1683011626012&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HelloPage('Hello World')
    );
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;MyApp에서 build를 하는데 home에서 HelloPage를 호출한다.&lt;/p&gt;
&lt;pre id=&quot;code_1683011670682&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;class HelloPage extends StatefulWidget {
  final String title;

  // 마우스 우클릭 &amp;gt; Generate &amp;gt; Constructor
  HelloPage(this.title);

  @override
  State&amp;lt;HelloPage&amp;gt; createState() =&amp;gt; _HelloPageState();
}

class _HelloPageState extends State&amp;lt;HelloPage&amp;gt; {
  String _message = 'Hello World!';
  int _counter = 0;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: _changeMessage),
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: &amp;lt;Widget&amp;gt;[
              Text(_message, style: TextStyle(fontSize: 30)),
              Text('$_counter', style: TextStyle(fontSize: 30)),
            ],
          )
      ));
  }


  void _changeMessage() {
    setState(() {
      _message = '헬로월드';
      _counter++;
    });
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HelloPage에는 Scaffold로 화면을 구성했는데 appBar, body, floatingActionButton로 구성되어 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;appBar는 상단 파란색 Bar를 의미하고, body는 나머지 하얀 부분, floatingActionButton는 하단 오른쪽 버튼을 의미한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;appBar는 widget.title로 Hompage를 호출 시 Hompage 괄호 안에 있던 문구를 가지고 온다.&lt;/p&gt;
&lt;pre id=&quot;code_1683011819639&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;appBar: AppBar(
        title: Text(widget.title),
      ),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Body는 변수로 지정해둔 _message와 _counter를 출력한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;두가지 값을 Column으로 묶어 MainAxisAlignment.center를 사용해 가운데 위치하게 하고(가로 위치 가운데)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 Column을 Center로 묶어서 가운데 위치하게 만들었다.(세로 위치 가운데)&lt;/p&gt;
&lt;pre id=&quot;code_1683011869219&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: &amp;lt;Widget&amp;gt;[
              Text(_message, style: TextStyle(fontSize: 30)),
              Text('$_counter', style: TextStyle(fontSize: 30)),
            ],
          )&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;마지막으로 floatingActionButton로 버튼 이벤트를 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;child에 버튼 Icon을 지정해주었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;onPressed에 _changeMessage함수를 호출하도록 만들었다.&lt;/p&gt;
&lt;pre id=&quot;code_1683012010061&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;floatingActionButton: FloatingActionButton(
        child: Icon(Icons.add),
        onPressed: _changeMessage),&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1683012075009&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;void _changeMessage() {
    setState(() {
      _message = '헬로월드';
      _counter++;
    });
  }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;_changeMessage 함수를 호출할 경우 _message는 헬로월드, _count는 1씩 증가하도록 만들었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;setState()는 StatefulWidget에서 특정 오브젝트의 값을 변경하기 위해 사용하는 메소드이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/소소한 팁</category>
      <category>flutter</category>
      <category>플러터</category>
      <category>플러터 기본 샘플 앱</category>
      <category>플러터 기초</category>
      <category>플러터 시작하기</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/642</guid>
      <comments>https://codingmomong.tistory.com/642#entry642comment</comments>
      <pubDate>Tue, 2 May 2023 16:24:28 +0900</pubDate>
    </item>
    <item>
      <title>[Android Studio] 안드로이드 스튜디오 에뮬레이터 설치 및 데모 앱 실행하기</title>
      <link>https://codingmomong.tistory.com/641</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;에뮬레이터 실행&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;141&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6ARmF/btsc0qziU3T/cBySDNqw6K0T8xRD6hcq61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6ARmF/btsc0qziU3T/cBySDNqw6K0T8xRD6hcq61/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6ARmF/btsc0qziU3T/cBySDNqw6K0T8xRD6hcq61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6ARmF%2Fbtsc0qziU3T%2FcBySDNqw6K0T8xRD6hcq61%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;192&quot; height=&quot;141&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;192&quot; data-origin-height=&quot;141&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;안드로이드 스튜디오에서 우측 상단에 있는 Device Manager 아이콘을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cFDMhK/btscYNWomM6/kvBDl5TrCe5LHZUg6i06QK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cFDMhK/btscYNWomM6/kvBDl5TrCe5LHZUg6i06QK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cFDMhK/btscYNWomM6/kvBDl5TrCe5LHZUg6i06QK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcFDMhK%2FbtscYNWomM6%2FkvBDl5TrCe5LHZUg6i06QK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;640&quot; height=&quot;467&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;640&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상단에 install이 있을 경우는 설치 후 진행한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Create device 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6yTSC/btscZbv9BPw/jmd3rQep4p83ooXKL406s1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6yTSC/btscZbv9BPw/jmd3rQep4p83ooXKL406s1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6yTSC/btscZbv9BPw/jmd3rQep4p83ooXKL406s1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6yTSC%2FbtscZbv9BPw%2Fjmd3rQep4p83ooXKL406s1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 하드웨어를 선택한 뒤 Next를 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dezMds/btsc1Mhqj2a/ramIu6eBC1oZ2kFNK0qk8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dezMds/btsc1Mhqj2a/ramIu6eBC1oZ2kFNK0qk8k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dezMds/btsc1Mhqj2a/ramIu6eBC1oZ2kFNK0qk8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdezMds%2Fbtsc1Mhqj2a%2FramIu6eBC1oZ2kFNK0qk8k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S 다운로드 로고를 클릭하여 다운로드 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wJ78d/btsc2WD0H7H/AeiCqwqJ5IVWMB0EJ7N8S0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wJ78d/btsc2WD0H7H/AeiCqwqJ5IVWMB0EJ7N8S0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wJ78d/btsc2WD0H7H/AeiCqwqJ5IVWMB0EJ7N8S0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwJ78d%2Fbtsc2WD0H7H%2FAeiCqwqJ5IVWMB0EJ7N8S0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Accept를 체크한 후 Next를 클릭하고 설치한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lZgnP/btsc2qyuN4N/j9LcMOk9Kk134GHLSLjOOK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lZgnP/btsc2qyuN4N/j9LcMOk9Kk134GHLSLjOOK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lZgnP/btsc2qyuN4N/j9LcMOk9Kk134GHLSLjOOK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlZgnP%2Fbtsc2qyuN4N%2Fj9LcMOk9Kk134GHLSLjOOK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 Finish 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cSJUC6/btsc1vGQxnO/86q6H3vY53qLV0t4eCMsaK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cSJUC6/btsc1vGQxnO/86q6H3vY53qLV0t4eCMsaK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cSJUC6/btsc1vGQxnO/86q6H3vY53qLV0t4eCMsaK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcSJUC6%2Fbtsc1vGQxnO%2F86q6H3vY53qLV0t4eCMsaK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;S옆에 다운로드 아이콘이 사라진 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Next 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXb80U/btsc2ognQ6I/O39akcjqCEKmIhkUyNBvoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXb80U/btsc2ognQ6I/O39akcjqCEKmIhkUyNBvoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXb80U/btsc2ognQ6I/O39akcjqCEKmIhkUyNBvoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXb80U%2Fbtsc2ognQ6I%2FO39akcjqCEKmIhkUyNBvoK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1001&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1001&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Finish 버튼을 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다시 안드로이드 스튜디오 화면의 Device Manager를 보면 하드웨어가 추가된 것을 확인할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sub5S/btsc1M9uWby/tq78CxX0k1qcT0fPmaWKt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sub5S/btsc1M9uWby/tq78CxX0k1qcT0fPmaWKt1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sub5S/btsc1M9uWby/tq78CxX0k1qcT0fPmaWKt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fsub5S%2Fbtsc1M9uWby%2Ftq78CxX0k1qcT0fPmaWKt1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재생버튼을 클릭하여 Running Devices에 화면이 뜬 것을 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;662&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBaEzp/btsc0qe1kZD/z3TpgTXFda42gq9NQzpcS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBaEzp/btsc0qe1kZD/z3TpgTXFda42gq9NQzpcS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBaEzp/btsc0qe1kZD/z3TpgTXFda42gq9NQzpcS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBaEzp%2Fbtsc0qe1kZD%2Fz3TpgTXFda42gq9NQzpcS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;662&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;607&quot; data-origin-height=&quot;662&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter Project를 생성하면 main.dart에 등록되어 있는 화면을 볼 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;+ 모양 버튼을 클릭하면 화면에 있는 숫자가 증가한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bn2h6A/btscY4cuAIG/CEZPzg0hAe4pgQsKVipLv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bn2h6A/btscY4cuAIG/CEZPzg0hAe4pgQsKVipLv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bn2h6A/btscY4cuAIG/CEZPzg0hAe4pgQsKVipLv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbn2h6A%2FbtscY4cuAIG%2FCEZPzg0hAe4pgQsKVipLv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Project에서 lib &amp;gt; main.dart 파일을 열고 코드를 수정해본다.&lt;/p&gt;
&lt;pre id=&quot;code_1682646314485&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;MyHomePage(title: 'Flutter 모몽 홈페이지')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라고 코드를 변경 후 Ctrl + S로 저장하면 오른쪽 화면에 바로 적용되는 것을 확인할 수 있다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오른쪽 상단에 번개모양 아이콘(Flutter hot Reload)이 있다. 체크되어 있으면 바로 적용된다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이제 프로젝트 개발을 실행하면 된다.&lt;/p&gt;</description>
      <category>Study/소소한 팁</category>
      <category>Android Studio</category>
      <category>데모 앱 실행</category>
      <category>안드로이드 스튜디오</category>
      <category>안드로이드 스튜디오 데모앱 실행</category>
      <category>안드로이드 스튜디오 시작하기</category>
      <category>안드로이드 스튜디오 에뮬레이터 설치</category>
      <category>에뮬레이터 설치 방법</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/641</guid>
      <comments>https://codingmomong.tistory.com/641#entry641comment</comments>
      <pubDate>Fri, 28 Apr 2023 10:48:07 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 안드로이드 스튜디오에 Flutter 개발환경 구축하기</title>
      <link>https://codingmomong.tistory.com/640</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Flutter Plugin 설치&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Android Studio Plugins에서 flutter 설치&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD2aeZ/btscTjmOq9F/sTNaEXyh4K2CLKoiWag0K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD2aeZ/btscTjmOq9F/sTNaEXyh4K2CLKoiWag0K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD2aeZ/btscTjmOq9F/sTNaEXyh4K2CLKoiWag0K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD2aeZ%2FbtscTjmOq9F%2FsTNaEXyh4K2CLKoiWag0K1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;642&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter Install 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;300&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dglDWv/btscRrMET15/LweivQUUbCDoKwkox68k50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dglDWv/btscRrMET15/LweivQUUbCDoKwkox68k50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dglDWv/btscRrMET15/LweivQUUbCDoKwkox68k50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdglDWv%2FbtscRrMET15%2FLweivQUUbCDoKwkox68k50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;440&quot; height=&quot;300&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;300&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Accept 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FSxNz/btscXW5PWx9/oPXMDK5efHpt6Mrn5uDC71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FSxNz/btscXW5PWx9/oPXMDK5efHpt6Mrn5uDC71/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FSxNz/btscXW5PWx9/oPXMDK5efHpt6Mrn5uDC71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFSxNz%2FbtscXW5PWx9%2FoPXMDK5efHpt6Mrn5uDC71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;370&quot; height=&quot;130&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Install 버튼을 클릭하여 설치한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;642&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uGmJA/btscR02iZDA/rQ48YUPahkuGFcUYTTcPK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uGmJA/btscR02iZDA/rQ48YUPahkuGFcUYTTcPK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uGmJA/btscR02iZDA/rQ48YUPahkuGFcUYTTcPK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuGmJA%2FbtscR02iZDA%2FrQ48YUPahkuGFcUYTTcPK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;642&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;642&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Rstart IDE 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UW56R/btscXXwWV6G/kELFJO7wjvG9pHiQYhVbW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UW56R/btscXXwWV6G/kELFJO7wjvG9pHiQYhVbW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UW56R/btscXXwWV6G/kELFJO7wjvG9pHiQYhVbW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUW56R%2FbtscXXwWV6G%2FkELFJO7wjvG9pHiQYhVbW1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;370&quot; height=&quot;146&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;370&quot; data-origin-height=&quot;146&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Restart 버튼을 클릭하여 안드로이드 스튜디오를 재시작한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;프로젝트 생성&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1lYZE/btscYpGJAGS/A7Lv8WXC6n1aIbGZvbiER1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1lYZE/btscYpGJAGS/A7Lv8WXC6n1aIbGZvbiER1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1lYZE/btscYpGJAGS/A7Lv8WXC6n1aIbGZvbiER1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1lYZE%2FbtscYpGJAGS%2FA7Lv8WXC6n1aIbGZvbiER1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;644&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;New Flutter Project를 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EoYqK/btscUvAKS6i/BUw61jtGbIvKm7tcNGMn50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EoYqK/btscUvAKS6i/BUw61jtGbIvKm7tcNGMn50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EoYqK/btscUvAKS6i/BUw61jtGbIvKm7tcNGMn50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEoYqK%2FbtscUvAKS6i%2FBUw61jtGbIvKm7tcNGMn50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;610&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측에 Flutter를 클릭하고 Flutter SDK&amp;nbsp; path를 설정한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Flutter SDK&amp;nbsp; path는 기존에 Flutter를 설치했던 path를 지정한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;608&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVj7kB/btscYOfeb1S/Ir9Cw8OHgHjGKUQyhZ6IGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVj7kB/btscYOfeb1S/Ir9Cw8OHgHjGKUQyhZ6IGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVj7kB/btscYOfeb1S/Ir9Cw8OHgHjGKUQyhZ6IGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVj7kB%2FbtscYOfeb1S%2FIr9Cw8OHgHjGKUQyhZ6IGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;779&quot; height=&quot;608&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;779&quot; data-origin-height=&quot;608&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지정한 후 OK버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EoYqK/btscUvAKS6i/BUw61jtGbIvKm7tcNGMn50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EoYqK/btscUvAKS6i/BUw61jtGbIvKm7tcNGMn50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EoYqK/btscUvAKS6i/BUw61jtGbIvKm7tcNGMn50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEoYqK%2FbtscUvAKS6i%2FBUw61jtGbIvKm7tcNGMn50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;610&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Next 버튼을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dcnZpa/btscRKyEh3y/UbbvY2WGKofWdkGtSuyXuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dcnZpa/btscRKyEh3y/UbbvY2WGKofWdkGtSuyXuK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dcnZpa/btscRKyEh3y/UbbvY2WGKofWdkGtSuyXuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdcnZpa%2FbtscRKyEh3y%2FUbbvY2WGKofWdkGtSuyXuK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;787&quot; height=&quot;610&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;787&quot; data-origin-height=&quot;610&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Project name 및 설정들을 맞추고 Create 버튼을 클릭하여 프로젝트를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/etolBm/btscS5Ck9su/rtEPOnakVdNrnoQGb5aOXK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/etolBm/btscS5Ck9su/rtEPOnakVdNrnoQGb5aOXK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/etolBm/btscS5Ck9su/rtEPOnakVdNrnoQGb5aOXK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FetolBm%2FbtscS5Ck9su%2FrtEPOnakVdNrnoQGb5aOXK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1033&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1033&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트가 생성된 것을 확인한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;297&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z6mSP/btscQXrsG2X/qprIGZr3Vk5KdiZ2zWBoYk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z6mSP/btscQXrsG2X/qprIGZr3Vk5KdiZ2zWBoYk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z6mSP/btscQXrsG2X/qprIGZr3Vk5KdiZ2zWBoYk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz6mSP%2FbtscQXrsG2X%2FqprIGZr3Vk5KdiZ2zWBoYk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;386&quot; height=&quot;297&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;386&quot; data-origin-height=&quot;297&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;좌측 상단에 보면 Project로 안되어 있을 경우&amp;nbsp; Project로 설정해준다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하단에 Terminal를 클릭한다.&lt;/p&gt;
&lt;pre id=&quot;code_1682574165470&quot; style=&quot;background-color: #f8f8f8; color: #383a42; text-align: start;&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;flutter doctor&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ddCZsl/btscVoBqyjN/Gyr160I3GCfnUbdMFfKru0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ddCZsl/btscVoBqyjN/Gyr160I3GCfnUbdMFfKru0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ddCZsl/btscVoBqyjN/Gyr160I3GCfnUbdMFfKru0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FddCZsl%2FbtscVoBqyjN%2FGyr160I3GCfnUbdMFfKru0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1032&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 명령어를 입력하면 사진과 같이 뜬다. X표시되어 있는 걸 하나씩 해결하면 된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;문제 해결 1) SDK Component Installer&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;197&quot; data-origin-height=&quot;155&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/busIL2/btscVmcvMua/xSk2pX4J55Od3fn0Re9KYK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/busIL2/btscVmcvMua/xSk2pX4J55Od3fn0Re9KYK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/busIL2/btscVmcvMua/xSk2pX4J55Od3fn0Re9KYK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbusIL2%2FbtscVmcvMua%2FxSk2pX4J55Od3fn0Re9KYK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;197&quot; height=&quot;155&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;197&quot; data-origin-height=&quot;155&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로그램 우측 상단에 SDK Manager아이콘을 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;713&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsGXR2/btscS6adE6g/MTHyRttG8M75u6p3SyUkKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsGXR2/btscS6adE6g/MTHyRttG8M75u6p3SyUkKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsGXR2/btscS6adE6g/MTHyRttG8M75u6p3SyUkKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsGXR2%2FbtscS6adE6g%2FMTHyRttG8M75u6p3SyUkKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;982&quot; height=&quot;713&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;982&quot; data-origin-height=&quot;713&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Appearance &amp;amp; Behavior &amp;gt; System Settings &amp;gt; Android SDK를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SDK Tools를 선택한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Android SDK Command-line Tools 체크하여 Apply한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;652&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhhZMu/btscVlx1rJE/Cck6u77QUnpuqWUttzg5N1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhhZMu/btscVlx1rJE/Cck6u77QUnpuqWUttzg5N1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhhZMu/btscVlx1rJE/Cck6u77QUnpuqWUttzg5N1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhhZMu%2FbtscVlx1rJE%2FCck6u77QUnpuqWUttzg5N1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;901&quot; height=&quot;652&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;901&quot; data-origin-height=&quot;652&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치가 완료되면 Finish를 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;714&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/swgIw/btscZqZhXfW/M1vkCFeGCP8TSNJEzBhQ11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/swgIw/btscZqZhXfW/M1vkCFeGCP8TSNJEzBhQ11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/swgIw/btscZqZhXfW/M1vkCFeGCP8TSNJEzBhQ11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FswgIw%2FbtscZqZhXfW%2FM1vkCFeGCP8TSNJEzBhQ11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;983&quot; height=&quot;714&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;983&quot; data-origin-height=&quot;714&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Android SDK Command-line Tools가 installed로 되어 있는 것을 확인한 뒤 OK 버튼을 클릭한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;문제 해결 2) Flutter lincenses 설치&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Terminal에서 flutter doctor 명령어 실행 후 Message를 읽어보면 &lt;b&gt;Flutter doctor --android-licenses&lt;/b&gt;명령을 실행하라고 뜬다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;153&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bUA1yX/btscR0uChdY/D6iULF7qcRIgv2nVuHgK1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bUA1yX/btscR0uChdY/D6iULF7qcRIgv2nVuHgK1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bUA1yX/btscR0uChdY/D6iULF7qcRIgv2nVuHgK1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbUA1yX%2FbtscR0uChdY%2FD6iULF7qcRIgv2nVuHgK1k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;647&quot; height=&quot;153&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;153&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;y 입력 후 엔터&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1878&quot; data-origin-height=&quot;617&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNoXOC/btscYpNFiYB/aDSS83Uyq0jc3PTKYMNxfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNoXOC/btscYpNFiYB/aDSS83Uyq0jc3PTKYMNxfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNoXOC/btscYpNFiYB/aDSS83Uyq0jc3PTKYMNxfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNoXOC%2FbtscYpNFiYB%2FaDSS83Uyq0jc3PTKYMNxfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1878&quot; height=&quot;617&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1878&quot; data-origin-height=&quot;617&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모두 accept 한다. (y 입력 후 엔터)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Terminal에서 &lt;b&gt;flutter doctor&lt;/b&gt; 명령어를 실행한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;351&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b6YOE6/btscZsbJy8J/DempgKmcdYBKLSaNNBM0uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b6YOE6/btscZsbJy8J/DempgKmcdYBKLSaNNBM0uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b6YOE6/btscZsbJy8J/DempgKmcdYBKLSaNNBM0uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb6YOE6%2FbtscZsbJy8J%2FDempgKmcdYBKLSaNNBM0uK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;876&quot; height=&quot;351&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;876&quot; data-origin-height=&quot;351&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위 사진처럼&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[v] Flutter&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[v] Android toolchain&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[v] Android Studio&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3개가 [v]되어 있는 것을 확인하면 설치가 완료된 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;문제 해결 2-1) Flutter lincenses 설치 시 JAVA_HOME is set to an invalid directory 오류 발생&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1245&quot; data-origin-height=&quot;402&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cNtgQI/btscYWYJi4y/OvckfdKRHsJwam5Jj2Re40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cNtgQI/btscYWYJi4y/OvckfdKRHsJwam5Jj2Re40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cNtgQI/btscYWYJi4y/OvckfdKRHsJwam5Jj2Re40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcNtgQI%2FbtscYWYJi4y%2FOvckfdKRHsJwam5Jj2Re40%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1245&quot; height=&quot;402&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1245&quot; data-origin-height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1682575597819&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.252-2\jdk-11

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
Android sdkmanager tool was found, but failed to run (C:\Users\imj10\AppData\Local\Android\sdk\cmdline-tools\latest\bin\sdkmanager.bat): &quot;exited code 1&quot;.
Try re-installing or updating your Android SDK,
visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.
PS C:\Users\imj10\StudioProjects\untitled&amp;gt; flutter doctor --android-licenses

ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\ojdkbuild\java-1.8.0-openjdk-1.8.0.252-2\jdk-11

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.
Android sdkmanager tool was found, but failed to run (C:\Users\imj10\AppData\Local\Android\sdk\cmdline-tools\latest\bin\sdkmanager.bat): &quot;exited code 1&quot;.
Try re-installing or updating your Android SDK,
visit https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;위와 같은 오류가 발생했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 jdk 설정이 1.8로 되어 있어 나는 오류였다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://flutter.dev/docs/get-started/install/windows#android-setup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter 페이지&lt;/a&gt;에 들어가면 Java11 버전이 설치되어 있어야한다고 한다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JAVA_HOME의 환경변수가 1.8로 되어있어 생기는 오류였다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;432&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d12ij4/btscY3J4DRk/gmieB4xsFmRsfwX8FD2Vl1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d12ij4/btscY3J4DRk/gmieB4xsFmRsfwX8FD2Vl1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d12ij4/btscY3J4DRk/gmieB4xsFmRsfwX8FD2Vl1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd12ij4%2FbtscY3J4DRk%2FgmieB4xsFmRsfwX8FD2Vl1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1171&quot; height=&quot;432&quot; data-filename=&quot;Untitled.png&quot; data-origin-width=&quot;1171&quot; data-origin-height=&quot;432&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/소소한 팁</category>
      <category>Android Studio</category>
      <category>flutter</category>
      <category>flutter project</category>
      <category>안드로이드 스튜디오</category>
      <category>플러터</category>
      <category>플러터 프로젝트 생성</category>
      <category>플러터 환경 구성</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/640</guid>
      <comments>https://codingmomong.tistory.com/640#entry640comment</comments>
      <pubDate>Thu, 27 Apr 2023 15:11:04 +0900</pubDate>
    </item>
    <item>
      <title>[Flutter] 플러터 설치 및 환경설정(Windows)</title>
      <link>https://codingmomong.tistory.com/639</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;Flutter 설치방법&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;플러 설치 링크 &lt;a href=&quot;https://flutter.dev/&quot;&gt;https://flutter.dev/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1682498115053&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Flutter - Build apps for any screen&quot; data-og-description=&quot;Flutter transforms the entire app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase.&quot; data-og-host=&quot;flutter.dev&quot; data-og-source-url=&quot;https://flutter.dev/&quot; data-og-url=&quot;https://flutter.dev/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/w4a2H/hySpLIB5S3/s2qU6Afu3UY8PjmLRnJLT0/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/En4L3/hySpzVJtgN/7Bqoq5qlOdSgpKkEJB53B0/img.jpg?width=1088&amp;amp;height=1292&amp;amp;face=0_0_1088_1292,https://scrap.kakaocdn.net/dn/b6S0Bh/hySpGN34ZJ/dXRcNejF8noByrlxYKS1kK/img.jpg?width=1088&amp;amp;height=1292&amp;amp;face=0_0_1088_1292&quot;&gt;&lt;a href=&quot;https://flutter.dev/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://flutter.dev/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/w4a2H/hySpLIB5S3/s2qU6Afu3UY8PjmLRnJLT0/img.png?width=937&amp;amp;height=461&amp;amp;face=0_0_937_461,https://scrap.kakaocdn.net/dn/En4L3/hySpzVJtgN/7Bqoq5qlOdSgpKkEJB53B0/img.jpg?width=1088&amp;amp;height=1292&amp;amp;face=0_0_1088_1292,https://scrap.kakaocdn.net/dn/b6S0Bh/hySpGN34ZJ/dXRcNejF8noByrlxYKS1kK/img.jpg?width=1088&amp;amp;height=1292&amp;amp;face=0_0_1088_1292');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Flutter - Build apps for any screen&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Flutter transforms the entire app development process. Build, test, and deploy beautiful mobile, web, desktop, and embedded apps from a single codebase.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;flutter.dev&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;907&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b9n7yN/btscJnqcBFw/Y1ET8NWYbuJlVaJGaaOpgK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b9n7yN/btscJnqcBFw/Y1ET8NWYbuJlVaJGaaOpgK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b9n7yN/btscJnqcBFw/Y1ET8NWYbuJlVaJGaaOpgK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb9n7yN%2FbtscJnqcBFw%2FY1ET8NWYbuJlVaJGaaOpgK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1912&quot; height=&quot;907&quot; data-origin-width=&quot;1912&quot; data-origin-height=&quot;907&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치 링크로 들어가서 상단에 있는 Get started 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;938&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NfdQy/btscNRxpJvR/HjSRi0lUKapOaxz9knmuz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NfdQy/btscNRxpJvR/HjSRi0lUKapOaxz9knmuz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NfdQy/btscNRxpJvR/HjSRi0lUKapOaxz9knmuz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNfdQy%2FbtscNRxpJvR%2FHjSRi0lUKapOaxz9knmuz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1916&quot; height=&quot;938&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;938&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;맞는 OS를 선택하여 클릭한다.(Windows)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1918&quot; data-origin-height=&quot;932&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Htkni/btscRJY3wlg/ypByvVioOCtfzoWnmtwGK0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Htkni/btscRJY3wlg/ypByvVioOCtfzoWnmtwGK0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Htkni/btscRJY3wlg/ypByvVioOCtfzoWnmtwGK0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHtkni%2FbtscRJY3wlg%2FypByvVioOCtfzoWnmtwGK0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1918&quot; height=&quot;932&quot; data-origin-width=&quot;1918&quot; data-origin-height=&quot;932&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;fluuter zip 파일 다운로드한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;307&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b230f4/btscNSQBw1j/WKc9OhiM30flsWllbVYyFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b230f4/btscNSQBw1j/WKc9OhiM30flsWllbVYyFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b230f4/btscNSQBw1j/WKc9OhiM30flsWllbVYyFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb230f4%2FbtscNSQBw1j%2FWKc9OhiM30flsWllbVYyFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;307&quot; height=&quot;113&quot; data-origin-width=&quot;307&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;원하는 위치에 압축푼다. (flutter라는 폴더로 압축 풀림)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Flutter 환경설정&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;697&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjHwqf/btscKmkiUuZ/mRhtI5uUK73RaP72oCUTp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjHwqf/btscKmkiUuZ/mRhtI5uUK73RaP72oCUTp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjHwqf/btscKmkiUuZ/mRhtI5uUK73RaP72oCUTp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjHwqf%2FbtscKmkiUuZ%2FmRhtI5uUK73RaP72oCUTp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;608&quot; height=&quot;697&quot; data-origin-width=&quot;608&quot; data-origin-height=&quot;697&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 PC 우클릭 &amp;gt; 속성 &amp;gt; 고급 시스템 설정 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고급 탭에서 &lt;b&gt;환경변수&lt;/b&gt;를 클릭한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bNQoz1/btscQb9OoqK/B9qpyD2IKFM7EM1S3ilSw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bNQoz1/btscQb9OoqK/B9qpyD2IKFM7EM1S3ilSw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bNQoz1/btscQb9OoqK/B9qpyD2IKFM7EM1S3ilSw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbNQoz1%2FbtscQb9OoqK%2FB9qpyD2IKFM7EM1S3ilSw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;362&quot; height=&quot;316&quot; data-origin-width=&quot;362&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;flutter\bin 위치를 path에 등록한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;663&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kHLS6/btscPd77T4y/zKBZk4I4xKKkq09Z3UIicK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kHLS6/btscPd77T4y/zKBZk4I4xKKkq09Z3UIicK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kHLS6/btscPd77T4y/zKBZk4I4xKKkq09Z3UIicK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkHLS6%2FbtscPd77T4y%2FzKBZk4I4xKKkq09Z3UIicK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;677&quot; height=&quot;663&quot; data-origin-width=&quot;677&quot; data-origin-height=&quot;663&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시스템 변수 안에 있는 Path를 더블클릭 한 뒤 flutter\bin(D:\\flutter\\bin)위치를 입력하고 확인을 클릭하여 저장한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;확인 버튼을 클릭하여 저장한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1032&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cOoL7b/btscRrc7IGa/RkApYPzKMz7fVf2Q16OBc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cOoL7b/btscRrc7IGa/RkApYPzKMz7fVf2Q16OBc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cOoL7b/btscRrc7IGa/RkApYPzKMz7fVf2Q16OBc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOoL7b%2FbtscRrc7IGa%2FRkApYPzKMz7fVf2Q16OBc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1921&quot; height=&quot;1032&quot; data-origin-width=&quot;1921&quot; data-origin-height=&quot;1032&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;cmd 들어가서 &lt;span style=&quot;background-color: #dddddd; color: #ee2323;&quot;&gt;flutter&lt;/span&gt;검색 후 잘 저장되었는지 확인한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Study/소소한 팁</category>
      <category>flutter 환경설정</category>
      <category>windows</category>
      <category>윈도우</category>
      <category>플러터</category>
      <category>플러터 설치</category>
      <category>플러터 설치 및 환경설정</category>
      <category>플러터 설피방법</category>
      <category>플러터 윈도우 설치</category>
      <category>플러터 환경설정</category>
      <category>환경설정</category>
      <author>momong'-'</author>
      <guid isPermaLink="true">https://codingmomong.tistory.com/639</guid>
      <comments>https://codingmomong.tistory.com/639#entry639comment</comments>
      <pubDate>Wed, 26 Apr 2023 17:46:02 +0900</pubDate>
    </item>
  </channel>
</rss>