<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>시나브로인 &amp;gt; 개발자 &amp;gt; 프로그래밍</title>
<link>https://sinabroin.com/pr_programming</link>
<language>ko</language>
<description>프로그래밍 (2025-07-30 09:18:06)</description>

<item>
<title>php 에서 특정 변수에 , 제거하는법</title>
<link>https://sinabroin.com/pr_programming/99</link>
<description><![CDATA[<p>PHP에서 특정 변수의 문자열에서 ,(쉼표)를 제거하려면 str_replace() 함수를 사용하면 됩니다.</p>
<p><br /></p>
<p>str_replace(",", "", $text) 는 쉼표 ,를 빈 문자열 ""로 바꿉니다.</p>
<p><br /></p>
<p>결과적으로 모든 쉼표가 제거됩니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-07-30T09:18:06+09:00</dc:date>
</item>


<item>
<title>flutter - 모달창 띄우기 - dialog</title>
<link>https://sinabroin.com/pr_programming/98</link>
<description><![CDATA[<p>1. 버튼을 클릭하면 다이얼로그 띄우기</p>
<p>다이얼로그를 버튼 클릭 시 띄우려면 FloatingActionButton의 onPressed 속성에 showDialog를 추가합니다.</p>
<p> </p>
<p>2. 코드 예제</p>
<p>showDialog 필수 파라미터는 context: 현재 화면의 빌드 컨텍스트, builder: 다이얼로그의 UI를 반환하는 함수 입니다</p>
<p><br /></p>
<p>3. 내용 정리</p>
<p>showDialog 사용 시 context와 builder가 필요하며, 다이얼로그 안에 Dialog 위젯을 사용하여 원하는 UI 구성 가능이 있으며, FloatingActionButton을 클릭하면 다이얼로그가 나타납니다</p>
<p></p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2025-02-10T14:49:14+09:00</dc:date>
</item>


<item>
<title>flutter - 버튼에 기능부여 floatingActionButton</title>
<link>https://sinabroin.com/pr_programming/97</link>
<description><![CDATA[<p>StatelessWidget 상태가 없는 위젯. 화면이 고정되어 있고 데이터가 변경되지 않고 StatefulWidget 상태가 잇는 위젯으로 데이터의 변경에 따라 화면이 재랜더링이 됩니다 </p>
<p><br /></p>
<p><br /></p>
<p>class Suse_App extends StatelessWidget {</p>
<p>  var susu = 1;</p>
<p><br /></p>
<p>  @override</p>
<p>  Widget build(BuildContext context) {</p>
<p>    return MaterialApp(</p>
<p>      home: Scaffold(</p>
<p>        floatingActionButton: FloatingActionButton(</p>
<p>          child: Text(susu.toString()), // 버튼에 숫자 표시</p>
<p>          onPressed: () {</p>
<p>            susu++; // 클릭 시 숫자 증가</p>
<p>          },</p>
<p>        ),</p>
<p>      ),</p>
<p>    );</p>
<p>  }</p>
<p>}</p>
<p><br /></p>
<p>위 코드는 StatelessWidget 를 사용하여 버튼 클릭시 숫자를 증가시키는 기능을 구현 부분이며 버튼을 클릭시 susu의 변수값이 증가하지만 화면에 변화가 발생하지 않습니다 그 이유는 StatelessWidget 이 재렌더링이 되지 않았기 때문입니다</p>
<p><br /></p>
<p><br /></p>
<p><br /></p>
<p>class Suse_App extends StatefulWidget {</p>
<p>  @override</p>
<p>  State&lt;Suse_App&gt; createState() =&gt; _Suse_AppState();</p>
<p>}</p>
<p><br /></p>
<p>class _Suse_AppState extends State&lt;Suse_App&gt; {</p>
<p>  // 상태 변수</p>
<p>  var susu = 1;</p>
<p><br /></p>
<p>  @override</p>
<p>  Widget build(BuildContext context) {</p>
<p>    return MaterialApp(</p>
<p>      home: Scaffold(</p>
<p>        floatingActionButton: FloatingActionButton(</p>
<p>          child: Text(susu.toString()), // 현재 숫자를 표시</p>
<p>          onPressed: () {</p>
<p>            setState(() {</p>
<p>              susu++; // 상태 변경</p>
<p>            });</p>
<p>          },</p>
<p>        ),</p>
<p>      ),</p>
<p>    );</p>
<p>  }</p>
<p>}</p>
<p><br /></p>
<p><br /></p>
<p>이때 사용되는 내용이 StatefulWidget 위젯이며 사용하면 상태 변경에 따라 화면을 갱신할 수 있습니다 이때 2가지 주요 요소가 필요하며 위젯 클래스(StatefulWidget)를 전체 구조를 정의하고 상태 클래스(State)로 위젯의 상태와 이를 변경하는 로직을 포함해야됩니다</p>
<p><br /></p>
<p>setState() 함수가 호출되면서 화면이 갱신되고 버튼에 표시된 susu 값이 증가하게 됩니다</p>
<p> </p>
<p> </p>
<p> </p>
<p><b><span style="font-size:16px;">주요 함수 요약</span></b></p>
<p><br /></p>
<p><b>StatelessWidget</b></p>
<p>상태를 관리하지 않음. 화면 갱신이 필요 없는 경우 적합.</p>
<p><br /></p>
<p><b>StatefulWidget</b></p>
<p>상태를 관리함. 화면 갱신이 필요한 경우 사용.</p>
<p><br /></p>
<p><b>setState</b></p>
<p>상태를 변경하고 변경된 상태를 화면에 반영하기 위해 호출.</p>
<p><br /></p>
<p><b>FloatingActionButton</b></p>
<p>onPressed 이벤트와 child 속성을 통해 버튼 동작과 UI를 정의.</p>
<p><br /></p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-12-05T17:07:24+09:00</dc:date>
</item>


<item>
<title>Flutter - 동적 데이터 관리 ListView.builder()</title>
<link>https://sinabroin.com/pr_programming/96</link>
<description><![CDATA[<p> //반복문이 아닐때</p>
<p>void main() {</p>
<p>  runApp(const Suse_App());</p>
<p>}</p>
<p> </p>
<p>class Suse_App extends StatelessWidget {</p>
<p>  const Suse_App({super.key});</p>
<p> </p>
<p>  @override</p>
<p>  Widget build(BuildContext context) {</p>
<p>    return MaterialApp(</p>
<p>        home: Scaffold(</p>
<p>          appBar: AppBar(),</p>
<p>          bottomNavigationBar: BottomAppBar(),</p>
<p>          body: ListView(</p>
<p>            children: [</p>
<p>              Text('매일같이 자신만의 속도로 세상을 살아갑니다.'),</p>
<p><span style="white-space:normal;"><span style="white-space:pre;"></span>      Text('매일같이 자신만의 속도로 세상을 살아갑니다.'),</span></p>
<p><span style="white-space:normal;"><span style="white-space:pre;"></span>      Text('매일같이 자신만의 속도로 세상을 살아갑니다.'),</span></p>
<p>            ],</p>
<p>          )</p>
<p>        )</p>
<p>    );</p>
<p>  }</p>
<p>}</p>
<p><br /></p>
<p><br /></p>
<p>목록의 개수가 3~4개로 정해져 있는경우 위 내용처럼 만들면 되지만 서버에서 데이터를 가져오거나 리스트 개수가 많은 경우 동적으로 생성해야 됩니다</p>
<p><br /></p>
<p>//반복문일때</p>
<p>import 'package:flutter/material.dart';</p>
<p><br /></p>
<p>void main() {</p>
<p>  runApp(const Suse_App());</p>
<p>}</p>
<p><br /></p>
<p>class Suse_App extends StatelessWidget {</p>
<p>  const Suse_App({super.key});</p>
<p><br /></p>
<p>  @override</p>
<p>  Widget build(BuildContext context) {</p>
<p>    return MaterialApp(</p>
<p>        home: Scaffold(</p>
<p>          appBar: AppBar(),</p>
<p>          body: ListView.builder(</p>
<p>              itemCount: 3,</p>
<p>              itemBuilder: (c, i){</p>
<p>                return ListTile(</p>
<p>                  title: Text('매일같이 자신만의 속도로 세상을 살아갑니다.'),</p>
<p>                );</p>
<p>              },</p>
<p>            ),</p>
<p>          )</p>
<p>    );</p>
<p>  }</p>
<p>}</p>
<p><br /></p>
<p>ListView.builder를 쓰시고 itemCount 에는 몇번 반복할지를 작성하고 itemBuilder 항목에는 함수를 입력해야되고 return 값을 입력되는 부분이 ListView.builder 안에서 반복 실행 됩니다</p>
<p><br /></p>
<p>그리고 itemBuilder 에는 2개의 파라미터를 넣어야됩니다 첫번째 파라미터는 context 이고 두번째 파라미터는 위젯에서 반복생성될때마다 증가하는 정수값 입니다</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-12-05T16:27:58+09:00</dc:date>
</item>


<item>
<title>Flutter - ListView 위젯 사용법</title>
<link>https://sinabroin.com/pr_programming/95</link>
<description><![CDATA[<p>Flutter에서 글자를 세로로 배치하려면 Column을 사용하는데요 </p>
<p><br /></p>
<p>그런데 위젯의 개수가 많다고해서 스크롤바가 자동으로 생기지 않습니다</p>
<p><br /></p>
<p>스크롤바가 있는 긴 목록이 필요할 경우에는 ListView를 사용하게 되며, Column의 사용방법과 거의 동일합니다</p>
<p><br /></p>
<p>ListView는 controller를 사용하여 스크롤 위치 감시도 가능합니다</p>
<p><br /></p>
<p> </p>
<p><img src="https://sinabroin.com/data/editor/2411/20241120144905_c7e6efff564fd68b0e90145de281a20e_9kux.jpg" alt="1.jpg" style="height:auto;" /></p>
<p> </p>
<p> </p>
<p>그리고 가장 큰 장점은 메모리 절약 기능이 있습니다 예로 내용이 1 ~ 100까지 있는데 80번째의 내용을 보고 있다면 이미 스크롤해서 지나간 내용은 메모리에서 자동으로 삭제하여 성능 개선을 쉽게한다는 큰 장점이 있습니다</p>
<p><br /></p>
<p>그래서 긴 목록을 사용할때는 ListView를 쓰시는것이 좋습니다</p>
<p></p>
<p></p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-11-20T14:49:08+09:00</dc:date>
</item>


<item>
<title>flutter - 커스텀 위젯 만들기</title>
<link>https://sinabroin.com/pr_programming/94</link>
<description><![CDATA[<p> 앱의 내용이 커지면 여러개의 Container 가 중첩되면 원하는 Container를 찾기가 어렵습니다 이때 커스텀 위젯을 만들어서 Container 를 모듈화로 분리하여 소스코드의 내용을 축약할 수 있습니다</p>
<p> </p>
<p> </p>
<p> </p>
<p><b><span style="font-size:16px;">위젯 함수 작성법</span></b></p>
<p> </p>
<p>class [함수명]extends StatelessWidget {</p>
<p>  const [함수명]({super.key});</p>
<p><br /></p>
<p>  @override</p>
<p>  Widget build(BuildContext context) {</p>
<p>    return SizedBox(</p>
<p>      child: [출력할 위젯]('커스텀 위젯 입니다.'),</p>
<p>    );</p>
<p>  }</p>
<p> </p>
<p>}</p>
<p> </p>
<p>1. 함수명은 영문 대문자로 시작해야 됩니다</p>
<p>2. return 오른쪽에 출력할 위젯명 을 입력합니다</p>
<p>3. 함수 사용은 함수명을 입력하면 바로 사용가능합니다</p>
<p> </p>
<p> </p>
<p>class Suse_App extends StatelessWidget {</p>
<p>  const Suse_App({super.key});</p>
<p><br /></p>
<p>  @override</p>
<p>  Widget build(BuildContext context) {</p>
<p>    return MaterialApp(</p>
<p>        home: Scaffold(</p>
<p>          appBar: AppBar(),</p>
<p>          bottomNavigationBar: BottomAppBar(),</p>
<p>          body: [사용할 위젯명],</p>
<p>        )</p>
<p>    );</p>
<p>  }</p>
<p>}</p>
<p> </p>
<p>원하는 위치에 작성한 위젯 함수명을 원하는 위치 입력하시면 됩니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-11-20T14:24:09+09:00</dc:date>
</item>


<item>
<title>flutter 자주 쓰는 버튼 3가지</title>
<link>https://sinabroin.com/pr_programming/93</link>
<description><![CDATA[<p>TextButton : 평평한 스타일의 버튼으로, 배경색이 없이 텍스트만 표시됩니다. 클릭 시 텍스트에만 강조 효과가 생깁니다.(간단한 링크나 메뉴 항목을 표시할 때 사용됩니다.)</p>
<p><br /></p>
<p>ElevatedButton : 배경이 있는 입체적인 버튼으로, 기본적으로 음영이 있어 버튼이 위로 떠 있는 것처럼 보입니다.(사용자의 주목을 끌고 중요한 액션을 수행할 때 적합합니다.)</p>
<p><br /></p>
<p>IconButton : 아이콘으로만 이루어진 버튼으로, 텍스트가 없이 아이콘만 표시됩니다. 주로 툴바나 앱바에서 사용됩니다. (특정 액션을 나타내는 아이콘을 클릭할 때 사용됩니다.)</p>
<p></p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T17:28:45+09:00</dc:date>
</item>


<item>
<title>flutter 글자 디자인 하는법</title>
<link>https://sinabroin.com/pr_programming/92</link>
<description><![CDATA[<p>Text() 위젯 안에 style: 파라미터를 넣으면 되며, TextStyle()안에 스타일 지정합니다.</p>
<p> </p>
<p>backgroundColor: Colors.[배경색상]</p>
<p>fontSize :  [글자크기]</p>
<p>fontWeight: FontWeight.[글자두께],</p>
<p>fontFamily: '폰트명',</p>
<p>letterSpacing : [글자간격]</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T16:59:18+09:00</dc:date>
</item>


<item>
<title>flutter 박스 크기를 꽉차게 하는법</title>
<link>https://sinabroin.com/pr_programming/91</link>
<description><![CDATA[<p>width 를 double.infinity 지정하면됨</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T16:28:42+09:00</dc:date>
</item>


<item>
<title>flutter 박스정렬하는법</title>
<link>https://sinabroin.com/pr_programming/90</link>
<description><![CDATA[<p>alignment: Alignment.topLeft : 좌측상단</p>
<p>alignment: Alignment.topCenter : 중앙상단</p>
<p>alignment: Alignment.topRight : 우측상단</p>
<p><br /></p>
<p>alignment: Alignment.centerLeft : 좌측중앙</p>
<p>alignment: Alignment.center : 정중앙</p>
<p>alignment: Alignment.centerRight : 우측중앙</p>
<p><br /></p>
<p>alignment: Alignment.bottomLeft : 좌측하단</p>
<p>alignment: Alignment.bottomCenter : 중앙하단</p>
<p>alignment: Alignment.bottomRight : 우측하단</p>
<p> </p>
<p> </p>
<p>박스에 좌상단,좌하단,우상단,우하단 등 정렬하려면 Align() 안에 작성해야됩니다</p>
<p></p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T16:27:06+09:00</dc:date>
</item>


<item>
<title>flutter 테두리 사용법 사용법</title>
<link>https://sinabroin.com/pr_programming/89</link>
<description><![CDATA[<p> 박스 스타일은 decoration: BoxDecoration() 안에 넣어서 테두리를 설정할 수 잇습니다 color, shape, boxShadow, gradient, image, borderRadius 사용할 수 있습니다.</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T16:10:42+09:00</dc:date>
</item>


<item>
<title>flutter margin, padding 사용법</title>
<link>https://sinabroin.com/pr_programming/88</link>
<description><![CDATA[<p> margin: EdgeInsets.all(20),//전체 margin을 줄때</p>
<p>padding: EdgeInsets.all(20),//전체 padding을 줄때</p>
<p>margin: EdgeInsets.fromLTRB(0, 30, 0, 0) //개별 margin 줄때</p>
<p>padding: EdgeInsets.fromLTRB(0, 30, 0, 0) //개별 padding을 줄때</p>
<p> </p>
<p>개별 margin, padding 순서 위쪽 -&gt; 오른쪽 -&gt; 아래쪽 -&gt; 왼쪽 순서</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T16:05:52+09:00</dc:date>
</item>


<item>
<title>플러터 위젯 가로축, 새로축 정렬</title>
<link>https://sinabroin.com/pr_programming/87</link>
<description><![CDATA[<div>mainAxisAlignment: MainAxisAlignment.[정렬방식],</div>
<div>center : 가운데 정렬</div>
<div> </div>
<div>spaceEvenly : 균등하게 정렬 (display: flex와 매우유사spqceEvenly)</div>
<div> </div>
<div>Row를 사용할경우 가로축, Column 세로축을 정렬합니다</div>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T15:32:51+09:00</dc:date>
</item>


<item>
<title>플러터 위젯 세로 배치</title>
<link>https://sinabroin.com/pr_programming/86</link>
<description><![CDATA[<div class="board-view-con view-content" style="margin-bottom:30px;width:877px;">
   <p style="padding:0px;">Column( children:[] ) 위젯을 가로배치할 경우</p>
   </div>
<div class="board-view-good-btn" style="margin-bottom:30px;text-align:center;">
   <div class="m-b-10" style="margin-bottom:10px;"><span class="board-view-act-gng" style="margin:0px 5px;"><span style="color:#212529;font-family:'NEXON Lv1 Gothic', sans-serif;font-size:15px;background-color:#ffffff;"></span><a href="https://sinabroin.com/bbs/good.php?bo_table=pr_programming&amp;wr_id=85&amp;good=good&amp;" class="act-gng-btn" style="color:#000000;width:80px;height:80px;border:1px solid rgb(213,213,213);background:rgb(255,255,255);vertical-align:baseline;font-family:'NEXON Lv1 Gothic', sans-serif;font-size:15px;" target="_blank" rel="nofollow noreferrer noopener"></a></span></div>
   </div>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T15:27:19+09:00</dc:date>
</item>


<item>
<title>플러터 위젯 가로 배치</title>
<link>https://sinabroin.com/pr_programming/85</link>
<description><![CDATA[<p>Row( children:[] ) 위젯을 가로배치할 경우</p>]]></description>
<dc:creator>수세</dc:creator>
<dc:date>2024-09-11T15:26:00+09:00</dc:date>
</item>

</channel>
</rss>
