반응형

 
 
작업환경 셋팅에는 여러가지가 있다. 
 
소프트웨어 작업환경 셋팅에는 
각 참여자의 앱 버전을 맞추는 것,
상태관리 패키지의 사용법
코드를 쓸 때 띄어쓰기의 방법 등등
신경쓸게 은근 많다. 스트레스다. 
 
하지만
하드웨어 작업환경 셋팅은 다르다. 기분이 좋다
왜냐면 소비를 해야하니까 
 
내가 필요한 것을 서칭하고 
이 걸 가졌을 때의 행복감을 떠오르며 매물을 고르는 마음이 얼마나 즐거운지...ㅋㅋㅋㅋ
 
 
기존에는 데스크탑 윈도우로 플러터를 작업했지만 
회사에서는 IOS출시도 해야하기에 맥북을 써야 했다. 
 
 
책상 정리가 좀 덜 되었지만 
현재 나의 하드웨어 작업환경은 다음과 같다. 
 
 
맥북 프로 m1 13인치 + 아이패드 프로2세대 12.9 
 13인치 +13인치 = 26인치 라는 단순한 계산법으로 듀얼 모니터 셋팅까지 완료했다ㅋㅋㅋㅋㅋㅋㅋ
키보드랑 마우스는 로지텍 기본형을 사용한다. 
휴대하기 편하다 훗 
 
다 중고로 구매한 것이라 비용은 맥북프로 80만원, 아이패드 프로 2세대는 30만원 
도합 110만원이 들었다. 
 
 
 
그리고 내가 제일 좋아하는 바다뷰~ 
 
자 이제 일해야 한다...일..일..일..일..일..일....일...
 
 
 

 
 
 
 

반응형
반응형

나는 88년생이다. 

 

나는 문과생이다. 

 

나는 중국어 전공을 했다. 

 

나는 코딩을 공부 하기로 했다. 

 

처음에는 과외를 받았다. 시간당 2만원이었다. 

 

내가 기초지식이 부족했다. 2시간 동안 남는건 어지러움 뿐이었다. 

 

그 때가 21년도 1월이었다. 기초지식을 쌓아야 겠다고 판단했다. 

 

도서관에 갔다. 책을 읽었다. 그렇게 읽은 책이 21년 1월 부터22년 12월 14일 기준 94권의 책을 빌렸다.

 

물론 모두 다 코딩관련된 책은 아니다. 중복으로 빌린 책도 있다. 코딩 관련된 책은 대~충 60권 정도 되는 것 같다. 

 

처음엔 책 하나 하나 다 이해를 못했다. 그래도 상관없었다. 다음책에서 읽었던 책의 내용이 나왔다. 

 

코딩의 세계를 조금이나마 알게 되었다. 그렇게 책에 있는 내용들이 눈에 들어올 때 쯤 앱 개발을 해야 겠다고 생각을 했다. 

 

 

 

 

처음 과외를 받았던 자바를 해볼까 했었다. 하지만 안드로이드만 만들 수 있다는 사실에 좌절했다.

언어 1개 이상 배울 자신이 도저히 없었다.

 

그러던 와중에 크로스 플랫폼 Flutter를 알게 되었다. 네이버 까페에 검색했다. 다행히 막 북적이지는 않지만 플러터 까페가 있었다. 

 

스타디 - 구글 플러터 Flutter / 앱개발 / 코딩 / 플러터플로우 : 네이버 카페 (naver.com)

 

스타디 - 구글 플러터 Flutter... : 네이버 카페

스타디는 플러터 Flutter 앱 개발 국내 1위 까페입니다. 플러터플로우 Flutterflow 노코드툴

cafe.naver.com

 

 

22년 7월 즈음에 가입해서 눈팅만 했다. 그러다가 10월에 스터디를 모집한다는 공고가 올라왔고 냅다 신청했다. 

 

그렇게 15기 초급 플러터 스터디를 참여하고 있다. 놀라운건 스터디 멤버중에 곧 정년을 바라보는 개발자님도 계셨다. 

 

대다수 초급 스터디 멤버지만 회사에서, 또는 혼자서 개발경력들이 최소 10년 이상은 갖고 계신분들이 다수였다. 

 

주늑이 들었지만 되려 감사했다. 이런 분들이 Flutter에 관심 있다는 것은 앞으로 Flutter 생태계가 커질 수 있다는 사실 때문이였다. 

 

내가 코딩으로 처음 선택한 언어 Flutter... 시간은 낭비하지 않을 듯 하다. 

 

Flutter를 제대로 공부 하기 시작한건 10월 말즘이었다. 

 

나는 세금 계산기를 만들어 보고 싶었다. 그래서 깃허브에 들어가 Flutter로 작성된 계산기를 클론코딩 했다. 

 

처음엔 위에서 아래로 순서대로 쳤다....ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 지금 생각하면 너무 내 자신이 없어보인다. 

 

그러다 어느 순간에는 코드의 구조가 보였다. 어느 코드부터 쳐야 하는지 보이니 클론코딩도 한결 쉬워졌다. 

 

모르는 코드는 구글링을 통해서 공부했다. 그렇게 계산기 클론코딩만 얼추 10번은 넘게 했다. 마음에 드는 코드가 있으면 3번은 연습했다. 

 

어려운 알고리즘을 만들 수는 없지만, 화면 UI나  코드 작성에는 큰 어려움이 없게 되었다. 바로 부가세 계산기를 만들어 보기로 했다. 

 

이때가 22년 11월 말이었다. 

 

 

 

 

아 중간에 스퐈** 업체에 온라인 수업도 들어봤다. 음.....비추천한다.  이유는 다음과 같다. 

 

내 나이때 친구들이라면 70% 확률로 피아노 학원에 가서 체르니 100번을 쳤을 것이다. 

 

이게 이유다. 온라인에 떠도는 국비지원이나, 온라인 강의는 체르니 100번을 어떻게 치는지만 알려준다.  

 

문제는 체르니 100번을 100번쳐도 체르니 100번과 같은 음악을  절대 만들 수 없다는 것이다. (라임 좋았다.)

 

결국 수업상에 알려주는 코드를 따라 칠 수 있지만  수업이 끝나면 그 코드를 이용해서 내가 원하는 어플을 만들 수는 없다. 

 

진짜 인생 처음 코딩을 시작한다면 온라인 강의보다는 커뮤니티를 찾아다니고,

 

도서관에서 프로그래밍 책을 최소 5권이상 읽어보기를 추천한다. 요즘은 쉽게 읽히는 프로그래밍책 많다. 

 

(코딩이 처음이라면 공부 욕심에 프로그래밍책 절대 사지 말자. 무겁다. 비싸다. 중고로 팔면 안팔린다. )

 

내가 읽었던 책에서 추천하자면 아래 3권이다. 

 

할 수 있다! 코딩 : 처음 시작하는 첫 번째 코딩 입문서 (11st.co.kr)

 

[11번가] 할 수 있다! 코딩 : 처음 시작하는 첫 번째 코딩 입문서

카테고리: 중고등참고서, 가격 : 15,120

www.11st.co.kr

 

 

코딩책과 함께 보는 소프트웨어 개념 사전 -컴퓨팅 사고력과 문제해결능력을 위한 나만의 비밀 노트 : 온누리가게 (naver.com)

 

코딩책과 함께 보는 소프트웨어 개념 사전 -컴퓨팅 사고력과 문제해결능력을 위한 나만의 비밀

[온누리가게] 좋은 책으로 함께 하겠습니다.

smartstore.naver.com

 

개발자의 글쓰기 -변수 네이밍부터 릴리스 노트, 장애 보고서, 기술 블로그까지, 프로그래머의 글쓰기 고민 끝 : 온누리가게 (naver.com)

 

개발자의 글쓰기 -변수 네이밍부터 릴리스 노트, 장애 보고서, 기술 블로그까지, 프로그래머의

[온누리가게] 좋은 책으로 함께 하겠습니다.

smartstore.naver.com

 

 

다시한번 말하지만 프로그래밍책 사는거 아니다. 인기 없는 책들이라 도서관가면 항상 있다. 

 

 

나는 지금 Flutter를 첫 개발 언어로 공부하고 있지만 객체지향언어라,C,JAVA와 결이 비슷하다. 그렇기 때문에 Flutter에서 막힌 문제를 자바로 검색하면 길이 보일 때가 있다. 

 

이야기가 길어졌다. 

 

다음이야기는 부가세 계산기 만드는 과정 썰이다.

 

 

 

 

반응형
반응형

저번시간에 텍스트 필드에 입력된 값으로 부가세 계산식을 적용시켰다. 그리고 결과값 숫자에 콤마를 넣었다. 아주 기뻤다. 

그 기쁨은 곧 절망이 되었지만..........

 

 

다음단계로 텍스트 필드에 intl 패키지를 이용해서 콤마를 넣었다.  여기서 문제가 생겼다. 콤마를 입힌 숫자는 데이터 타입이 double이 아닌 String이 되었다. 이 문제를 인지한 것도 하루가 꼬박 걸렸다.  

 

3일에 걸쳐 해결했다. 플러터 까페에 질문글을 올렸고  고수님들의 댓글로 방향성을 잘 잡을 수 있게 되었다. 

 

 

문제 인지 

 

1. 텍스트 필드의 값은 숫자이지만 콤마가 찍혀서  String 

2. 계산식을 넣으려면 값은 double로 만들어야함 

3. 계산식으로 나온 결과값도 콤마가 필요하니 String 

 

 

필요한 변수  

 

1. 텍스트 필드 컨트롤러로 입력되는 값의 변수 :  text1 = 1,000(String)

 

2. text1에 입력된 콤마를 없애주는 replaceAll("," , "") 가 진행된 값을 담을 변수  : convert1 = 1000(String)

 

3. 콤마를 없앤 숫자의 데이터 타입을 String에서 double로 바꿔즈는 double.parse(convert1)의 값을 담을 변수  :  income = 1000 (double)

 

아래와 같은 코드가 필요하다. 

void convertStringtoDouble() {
    var text1 =t1.text;  //text1의 값은 t1 컨트롤러의 값
    var convert1= text1.text.replaceAll(",", ""); //convert1 = text1의 콤마 없는 버전
    var income=double.parse(convert1); // convert1의 데이터 타입을 double로 변경하고 그 값은 income에 담는다.
    
    
    //로그에는 숫자와 데이터 타입이 doulbe로 정상적으로 나온다. 
    print(income); 
    print(income.runtimeType);

 

 

그리고 콤마 입히는 패키지는 총 2개를 (pattern formatter , intl) 사용했다. 

텍스트 필드에 들어가는 콤마 코드가 아래 패키지가 좀 더 깔끔하다. 

     //pattern Formatter flutter
    TextField (
    inputFormatters : [ThousandsFormatter()]
    
    )

 

 

pattern_formatter | Flutter Package (pub.dev)

 

pattern_formatter | Flutter Package

A Flutter package provides some implementations of TextInputFormatter that format input with pre-defined patterns

pub.dev

 

 

최종 결과값에는 저번에 사용한 intl 패키지를 사용 

 

변수로 final comma= format ("###,###,### 원" );사용했다. 

플러터 숫자 천원단위 콤마 입히기 Format :: 자영업 개발자 (tistory.com)

 

플러터 숫자 천원단위 콤마 입히기 Format

부가세 계산기를 만들면서 Text값으로 나오는 숫자들에 천원단위 콤마 입히기가 너무 힘들었다. 구글링 해도 그냥 함수만 적어주셔서 어떻게 적용해야 하는지 애를 먹었다. 물론 제가 했던 방법

ownerdev88.tistory.com

 

 

 


 

 

 

아래와 같이 잘 나온다. 

 

배운점 

 

1. 데이터 타입을 변환시키기 위해서는 중간값을 담을 변수가 필요하다는 것 

2. 어떤 오류에도 " 꺽이지 않는 마음" 을 갖는 것 

 

 

 

 

 

 

 

 

반응형
반응형

목차

- 들어가기 

- 코딩과 개발언어 

- 왜 Flutter를 배워야 할까?

- 용어 정리 1편 (다트.객체지향언어)

- 용어 정리 2편 (변수.자료형)

- 용어 정리 3편 (함수)

- 용어 정리 4편 (조건문)

- 용어 정리 5편 (반복문)

- 용어 정리 6편 (플러터의 위젯)

- 잠시 쉬어가기편 - 플러터는 어떤 IDE가 좋을까? IDE의 미래?

- Flutter가 실행되는 구조 

- Flutter 화면 구성에 대해 

- body : Column ,Row

 

 

 

 사진처럼 검은색 박스 안에 있는 부분이 바로 body 부분입니다. 어플의 주요 화면들이 이 곳에 들어갑니다.  이 화면을 구성을 할 때 

가장 중요한 개념이 바로 Column과 Row 입니다. 

 

Column은 "세로"
Row 는 "가로"  

 

바로 위에 적은 개념이 핵심입니다. 플러터는 위젯으로 화면을 구성한다고 지난시간에 말씀드렸습니다. 그럼 그 위젯들을 화면에 어떻게 배치 할 것인가가 중요합니다. 화면에 GPS처럼 주소를 만들고 그 주소를 직접 입력해서 배치하는 방법도 있습니다만 이 방법은 코드가 복잡해지고 다른 사람이 봤을 때 코드만 봐서는 화면 구조를 이해하기 어렵다는 단점이 있습니다. 

 

결국 코드만 보더라도 해당 위젯이 어느 위치에 있는지 보다 쉽게 파악을 하고자 Column, Row 개념이 나온 것입니다.  

 

부동산 개발에서 가장 중요한 신도시를 구성할 때 도로를 먼저 만듭니다. 그 도로에 위치에 따라 아파트를 넣을지, 교회를 넣을지, 산업단지를 넣을지 중요해집니다. 즉 도로는 신도시를 구성하는 가이드 라인이 되는 것이고 플러터에서 Column과 Row는 위젯을 이용해 화면을 구성 할 때 가이드 라인이 되어줍니다. 

 

Column과 Row는 하위 위젯을 복수로 받아올 수 있습니다. 그 사용법이 

 

 

Column(

children :[

 

]

 

)

 

Row(

childeren :[

 

]

 

)

 

위와 같습니다. 

 

즉 세로, 가로로 복수의 위젯들을 배칠 할 수 있음으로 화면 구성을 보다 쉽게 할 수 있습니다.   위에 사진에 들어간 Column과 Row를 말하자면 전체적인 화면 구성은 세로이기에 Column으로 시작합니다. 그리고  밑에 TextField위젯을 3개와 버튼을 집어넣었습니다.  그 다음 Row로 왼쪽과 오른쪽 각각 Text위젯을 구성했습니다. 

그 밑에 다시 두번 째 Row로 왼쪽과 오른쪽 Text위젯을 구성했습니다. 이하 동일한 작업을 진행했습니다. 

 

쉽게 그림으로 표현하자면 

 

  Column

(처음 만든 Column은 하위 위젯들을 세로로 구성하게 만듬)

TextField

TextField

TextField

button

(여기까지 위젯들이 세로로 구성이 됨)

------------------------

Row 

Text Text

(전체적인 위젯들의 배치 방향은 세로이나 중간에 Row를 사용해서 위젯들을 가로려 여러개 배치 할 수 있게됨)

Row 

Text Text

Row 

Text Text

Row

Text Text

Row

Text Text

-----------------------------------------

 

 

Column과 Row를 이해하면 화면 배치가 정말 쉬워집니다. 

다음 시간에는 Column과 Row를 이용해 더 세부적인 위치를 조정 할 수 있는 기능들을 알아보겠습니다. 

 

 

 

 

 

콩나물 불고기 맛집 :) 

 

찜콩마켙 : 찜콩마켙 (naver.com)

 

찜콩마켙 : 찜콩마켙

밀키트

smartstore.naver.com

 

반응형
반응형

부가세 계산기를 만들면서 Text값으로 나오는 숫자들에 천원단위 콤마 입히기가 너무 힘들었다. 

구글링 해도 그냥 함수만 적어주셔서 어떻게 적용해야 하는지 애를 먹었다. 

 

물론 제가 했던 방법이 옳은 건 아니니 참고만 하세요 

 

 

먼저 yaml 파일에 intl :   pubget

 

dependencies:
intl: ^0.17.0

 

그런다음 해당 페이지에 임포트

import 'package:intl/intl.dart';

 

그리고 나는 comma변수를 먼저 선언해주었다. 

NumberFormat안에 형식을 만들면 된다. 숫자 옆에 '원'도 표시하고 싶으면 

("###,###,###,### 원"); 이런식으로 적으면 된다.

 

맨 앞에 $ 표시도 적을 수 있을 듯 하다. ("$###,###,###,### 달러"); 요렇게 

 

 

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

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {

 
  final comma = new NumberFormat("###,###,###,### 원"); //콤마 관련 변수 선언

 

그리고 원하는 위치에 Text를 만들고 comma.format('표시하고 싶은 값'), 을 넣어주면 된다. 

              
     Text(comma.format(taxspending)), //지출 과세 표준
     Text(comma.format(taxincome)), // 매출 과세 표준
     Text(comma.format(spending_Food_help)), //의제매입공제

 

 

그러면 아래 처럼 잘 나온다 

 

 

자 이제 텍스트 필드에도 콤마를 찍어보러.......

반응형
반응형

디자인 커뮤니티 Dribble의 사용자 알렉산더 프라이토가 자신의 작품을 올리면서 유행이 되었다. 

굉장히 심플한 디자인, 입체적인 디자인으로 디자인 업계에서 금방 유행이 되었다. 

 

하나의 색상을 이용하여 빛과 그림자로만 입체적인 느낌을 낸다 

이러한 결과로 사용자로 하여금 눌러보고 싶어지는 마음을 들게 한다. 

 

하지만 단점도 있다고 한다. 시각장애인들이 보기가 불편한 디자인이고 버튼이 눌러져있는지, 아닌지 확인하기가 어렵다는 것이다. 

이것은 사용자로하여금 불편한 느낌이 들 수 있으니 , 복잡한 UI를 구성하고 있다면 피하는것이 좋다. 

 

 

 

 

뉴모피즘에 관한 더 자세한 정보 

 

 

01화 뉴모피즘은 새로운 UI 트렌드가 될 수 있을까? (brunch.co.kr)

 

01화 뉴모피즘은 새로운 UI 트렌드가 될 수 있을까?

Do we really need Soft UI? | 최근 플랫/머티리얼* 디자인의 대안으로 떠오른 뉴모피즘에 관한 글이 자주 눈에 띈다. 돌아보면 모바일 인터페이스 디자인도 다양한 변화를 거쳐 현재에 이르렀다. iOS 초

brunch.co.kr

Neumorphism/Soft UI CSS shadow generator

 

Neumorphism/Soft UI CSS shadow generator

CSS code generator that will help with colors, gradients and shadows to adapt this new design trend or discover its posibilities.

neumorphism.io

뉴모피즘을 만들어 볼 수 있는 사이트 

반응형

'코딩 > Design 공부' 카테고리의 다른 글

디자이너와 개발자 그 어느 중간 : 제플린  (0) 2023.08.03
개발자의 디자인 독해력  (0) 2023.06.20
폰트  (0) 2023.01.17
피그마 한글폰트 안됨  (0) 2023.01.15
Figma auto-flow : 피그마 오토플로우  (0) 2022.12.31
반응형

 

플러터를 제 인생의 첫 개발언어로 선택하고 공부하고 있습니다. 그리고 플러터를 공부하기 위해 시중에 있는 여러 플러터 책을 찾아보고 공부했었습니다. 그리고 느낀 점은 시중에 있는 플러터 책은 처음 코딩을 접하는 사람들에게는 엄청 불친절한 책이라는 것이였습니다. 

 

코드 설명을 할 때 

 

a 라는 함수를 사용하면 결과는 A다. 그러니 이렇게 사용하면 된다. 

 

라고만 적혀져 있을 뿐 입니다. a라는 함수는 왜 a 라고 부르는지, 그 결과 값이 왜 A가 나오는지에 대한 설명은 책에서 자세히 다루지 않기에 제가 만들고 싶어하는 여러 어플들이 위 책의 내용만으로는 절대 실현 할 수 없다는 걸 알게 되었습니다. 

 

 

사실 저는 2021년 12월 즈음에 자바를 잠깐 공부했었습니다. 숨고라는 어플을 통해서 코딩 1:1 과외를 받아봤었습니다. 

과외 선생님은 KT ai 센터 직원분이셨습니다. 엄청난 고수셨죠... 하지만  그 고수분은 저에게 무언가를 알려주려고는 노력하셨지만 

제가 가지고 있는 배경 지식이 너무 없다보니 제대로 된 수업이 진행 될 수 없었습니다. 그래서 과외를 중단하고 프로그래밍 관련된 책을 읽기 시작했습니다.  지난 1년 여간 도서관에서 빌린 총 책의 숫자가 89권이네요, 그 중에 70권은 개발과 관련된 책입니다. 

 

 

책 내용이 이해가 안되더라도 열심히 읽었습니다. 그리고 22년 9월즘에 책에 있는 내용들이 눈에 들어오게 되었습니다. 

본격적으로 다시 어플을 만들어 보자 라는 마음이 생겼고 플러터 까페에 가입하고 15기 초급 스터디까지 진행하게 되었습니다. 

 

그리고 마구잡이로 공부를 하기 시작했습니다. 원가계산기를 만들어보자 라는 마음에 깃허브에 있는 계산기 코드를 찾아내어서 

똑같이 따라 쳤습니다. 이해가 안되는 코드가 있으면 구글링 하고, 2번 3번 따라 쳤습니다. 그 과정에서 배운 여러 내용들을 제대로  이해하지 못하고 외우기에 급급했습니다. 

 

외국인이 저에게 How r u?라고 물으면 i m fine thank u 라고만 대답할 수 있는 상황이었습니다. 

 

그러던 중에 최근 디자인 패턴 책을 읽게되었습니다.

책 제목이 디자인패턴이라 UI관련된 책인 줄알고 빌렸습니다만 

내용 중에 나오는  감시자(옵져버) 패턴을 읽고 감동? 깨우침? 충격? 비스무리한 것을 받았습니다. 

 

옵져버 패턴의 시작은

오래전 인터넷 연결이 원활하지 않을 시절에 웹사이트의 상태를 확인해서, 응답 속도가 느리거나, 연결이 끊기는 경우가 생기면 모니터링 담당자에게 이메일을 보내게 하는 시스템이었습니다.

 

그렇기에  코드의 구성이    변화를 감지하는 Notifiy 클래스, 그 변화를 옮겨주는 인터페이스 클래스   Observer 그 안에 update( ) 메소드, 그 업데이트 된 값을 가져와 화면에 노출시키는 Display 클래스or 이메일을 보내게 하는 행동 클래스 로 되어 있습니다. 

 

제가 계산기 코드를 클론코딩하면서 배웠던 GetX, Provider가  바로 생각났습니다. 

플러터의 대표적인 상태관리 패키지로

Get x는 Obx() , .obs 

Provider는  ChangeNotifierProvider(or MultiProvider) , notifyListener() 

로 변화된 값을 감지하고 있습니다. 

 

즉 옵져버 패턴자체가 기능화 되어 패키지로 옮겨진 것입니다. 

 

그저 이 상태 관리 패키지를 사용할 때 문법처럼 외우기만 했던 저인데 이러한 기능들이 왜 , 어떻게 나왔는지 알게 되니 

클론코딩도 , 조금씩 만들고 있는 원가계산기 코드를  짤 때도 한결 편해지는 느낌입니다. 

 

 

위 경험을 통해 코딩 할 때 배경 지식의 중요성을 느끼게 되었습니다. 

 

다시 한번 제 개인적인 의견을 말씀드리면

 

코딩을 처음 하시는 분들에게 시중에 있는 플러터 책은  좋다, 나쁘다를 떠나서 매우 불친절한 책들입니다. 

 

먼저 배경 지식과 관련된 책 , 예를 들어 초보가 보는 프로그래밍, 개발자의 글쓰기, 기술 블로그 적는법, 아키텍쳐를 잘 구성하는 방법, 디자인패턴이란, 알고리즘 등등  쭉 한 번 읽어보시고 플러터를 시작하면 더 효율적인 공부가 되지 않을까 하는 마음에 긴 글 적어보았습니다 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형
getx/README.ko-kr.md at master · jonataslaw/getx (github.com)
 

GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies eas

Open screens/snackbars/dialogs/bottomSheets without context, manage states and inject dependencies easily with Get. - GitHub - jonataslaw/getx: Open screens/snackbars/dialogs/bottomSheets without c...

github.com

 

코딩의 발전의 속도는 무자비하다 하지만 그 발전의 방향은 일관성이 존재한다. 바로 "효율" 이다. 

 

1. 공간의 효율 -> 프로그램의 실행횟수를 줄여서 메모리를 적게 쓰게 하자 

2. 시간의 효율-> 프로그램의 실행횟수를 최소화해서 빠른시간내에 처리가 가능하게 하자 

3. 피드백의 효율 -> 코드 읽는 시간을 줄여서 빠르게 문제점을 해결하자 

 

 

그 "효율" 때문에 최근 많은 사람들로부터 선택받는 개발언어가 있다. 바로 Dart! Dart는 Flutter 프레임워크를 사용해서 하나의 코드로 안드로이드, IOS, 웹, 윈도우까지 프로그램을 만들 수 있는 매우"효율" 적인 언어이다. 회사 입장에서는 개발자를 안드로이드 1명, IOS 1명씩 둘 필요가 없어지니 말이다. 

 

Flutter 가 한 때는 가장 인기 없는 언어로 선정된적도 있지만 지금은  더 "효율"적인 모습들로 개선이 되고 있다. 

그렇기에 많은 사람들로부터 선택을 받고 있는 듯 하다. 

 

 오늘의 주인공은 Flutter 의 "효율" 적인 발전의 한 모습인  Get X이다.  지금 부터 나오는 내용은 위에 링크를 참고해서 만들었다.

 

Get X는 "Flutter made easy" 라는 목표를 두고 있다. 

 

 

기존에 플러터 새로운 프로젝트를 열면 실행되었던 카운트앱이 있다. 

 

 

아래는 그 카운트앱을 Get X로 개선한 모습이다. 기존에 100줄의코드양이 30줄로 줄어들었다. 

Get X는 불필요한 context를 줄이고 좀 더 직관적으로 코드를 제공한다. 

get. , .obs , obx() 등등 

 

void main() => runApp(GetMaterialApp(home: Home()));

 

class Controller extends GetxController{
  var count = 0.obs;
  increment() => count++;
}

 

class Home extends StatelessWidget {

  @override
  Widget build(context) {

    // Get.put()을 사용하여 클래스를 인스턴스화하여 모든 "child'에서 사용가능하게 합니다.
    final Controller c = Get.put(Controller());
    
    return Scaffold(
      // count가 변경 될 때마다 Obx(()=> 를 사용하여 Text()에 업데이트합니다.
      appBar: AppBar(title: Obx(() => Text("Clicks: ${c.count}"))),

      // 8줄의 Navigator.push를 간단한 Get.to()로 변경합니다. context는 필요없습니다.
      body: Center(child: ElevatedButton(
              child: Text("Go to Other"), onPressed: () => Get.to(Other()))),
      floatingActionButton:
          FloatingActionButton(child: Icon(Icons.add), onPressed: c.increment));
  }
}

class Other extends StatelessWidget {
  // 다른 페이지에서 사용되는 컨트롤러를 Get으로 찾아서 redirect 할 수 있습니다.
  final Controller c = Get.find();

  @override
  Widget build(context){
     // 업데이트된 count 변수에 연결
     return Scaffold(body: Center(child: Text("${c.count}")));
  }
}

 

 

 

이렇듯 좀더 짧은 구문, 효과적인 기능성으로 기존에  Bloc, Provider 로 만들었던 코드를 Get X로 변환하는 개발자가 늘고 있다. 

 

 

 

반응형
반응형

비전문가인 내가 플러터를 배우는 모든 순간이 위기이다. 오늘의 위기는 Stateful 과 Stateless 위젯의 차이점의 대한 이해이다. 

코딩책을 읽다보면 정말 고이고 고인 분들이 코딩의 세계를 만들었다는게 느껴진다. 

 

어플을 만들기 위해서는 화면을 꾸며야 한다. 요즘 대부분의 어플들은 화면에 정적인 정보보다는 동적인 정보도 같이 제공해주는 경우가 많다. 예를들어 날씨어플, 실시간으로 버스 동선, 비트코인의 쉼 없이 움직이는 그래프 등등  

이러한 동적인 정보를 화면에 구성하기 위해서는 Stateful 위젯을 사용해야 한다. 

 

Stateful 위젯에 대해서 알아보는 중  "생명주기" 라는 단어가 날 더 혼란스럽게 했다. 

내가 이해한 바로는   Stateful 위젯의 생명주기 == 정해진 실행순서 이다. 

 

곰곰히 생각해보니 코딩의 궁극적인 목표는  빠른 속도로 안정된 프로그램의 실행이다. 실시간으로 정보를 주고 받아야 하는 어플들은 아무래도 과부하가 걸리기 쉽다. 그래서 우리 코딩의 천재분들이 미리 이러한 문제를 해결하기 위해  빠른속도로 안정화된 코드를 만들어 주셨다. 

 

아래는 그 안정화시키는 코드들이다. 

 

Stateful  위젯을 사용시 

1. createState()  -> 위젯을 상태를 생성하는 함수

 

2. mounted == true -> createSate 함수 이후에 화면을 생성할 수 있다라는 함수 -> 많이 쓰이지는 않지만 안정성을 위해 작성을 요함 

 

3. initState(){

super. initSate();

_getJsonData(); }

-> 위젯을 초기화 할 때 한 번만 호출, 주로 데이터 목록을 만들거나,  처음 필요한 데이터를 주고 받을 때 쓰인다 --> 계산기 같은 데이터가 필요하지 않을 때는 사용하지 않는다. 

 

4. didChangeDependencies()함수 -> initState 함수가 호출된 후에 이어서 바로 호출되는 함수이다. 실시간으로 데이터를 의존해야 한다면 무조건 사용해야 한다. 

 

5. build() -> 화면을 만드는 함수 

 

6. didUpdateWidget() ->부모 위젯이나 데이터가 변경 될 때 사용하는 함수 

 

7. setState() -> 함수를 이용하면 데이터가 변경되었다는 것을 알려주고 변경된 데이터를 이용해 화면의 UI 변경할 수 있도록 합니다. 제일 많이 호출 하는 함수이다. 

 

8.deactivate() ->위젯의 상태관리를 잠시 중지하는 함수

 

9. dispose( )-> 위젯의 상태관리를 아예 중지하는 함수 

 

10.mounted == false -> 객체의 소멸 

 

 

 

 

아래는 계산기 어플 코드이다. 

위에 배운 위젯의 정해진 순서는 

 

void main() => runApp(Myapp()); 

먼저 runApp가 실행이 되고 

 

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(

 

Myapp의 화면 위젯을 만든다.

 

 

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

  @override
  _CalculatorState createState() => _CalculatorState();
}

class _CalculatorState extends State {
  Widget calcbutton(String btntxt, Color btncolor, Color txtcolor) {
    return Container(

 

Myapp화면 위젯 안에 Calulator Stateful 위젯을 만든다.

Stateful의 원활한 진행을 위해상속받는  _CalulatorState 위젯을 createState 함수로 호출하고 화면을 구성한다. 

 

 

 

 

후아 코딩 어렵다

 

 


   

반응형

'Flutter-플러터 > 플러터 공부' 카테고리의 다른 글

Get X 4편 - 테마 변경  (0) 2022.10.14
Get x 3편 - 종속성 관리  (0) 2022.10.14
Get x 2편 - Get x의 상태관리에 대해  (1) 2022.10.11
Get X 1편 - Get X에 대해  (0) 2022.10.09
MVC, MVVM 패턴이란?  (2) 2022.10.06

+ Recent posts