Flutter/Android

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 1

Port Dev 2023. 9. 24. 00:16

시리즈 목록

 

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 1 현재포스트

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 2 바로가기

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 3 바로가기

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 4 바로가기


 

반갑다 나다

 

또 무슨 기깔난걸 만들어볼까 하다가 한통의 메일을 받았다

 

노 베이스 비전공자인데 변수나 함수같은게 이해가 안된다는 메일이었다

 

기초 지식을 익히고 싶다고 용기내서 메일을 보내신거같은데

 

학원을 가라 내 포스팅 기다리다가 환갑된다

 

하지만 조금은 응원하고 싶으니

 

이번엔 텍스트를 이용해서 변수를 이해하고 함수도 작성해보고 하는 시간을 가지도록 하겠다.

 

똑같이

 

 

메인 하나 만들어놓고 애뮬레이터 시작해서

 

이 화면까지는 띄워놓고 시작하자

 

 

오늘 해볼건 크게 3가지정도 만들어왔다

 

1. 버튼을 눌러서 텍스트 변경해보기

2. 버튼을 눌러서 텍스트 색상 랜덤으로 변경해보기

3. 버튼을 눌러서 계산 결과 화면에 표시해보기

 

1번부터 하자

 

샘플코드를 지우고

 

 

 

이렇게 만들어놓고 시작하자

 

앞서 다크모드 만들기에서 했던것처럼

 

MatrialApp을 설정하고

버튼을 이용해 화면을 갱신하기 때문에

 

Stateful 위젯으로 만들어보자

 

기억 안나면 가서 보고오자

 

 

기초 구조는 이렇게 작성해두고 시작한다.

 

이때 화면은

 

 

이런 상태여야 한다

 

이제 버튼을 만들어보자

 

저번에 했던것처럼 비슷하게 만들어준다

 

만드는 방법은

 

Scaffold → Container → Column → Row 이 순서대로 작성부터 해주면된다.

 

이렇게 보면 와닿지 않을 수 있는데

 

증조 - 현조 - 부모 - 자식

 

이 순서라고 기억해두자

 

 

다시 말하지만

 

부모가 없는데 자식이 있을 수 없다

 

 

순서대로 하나씩 만들자

한번에 다 만든거 보여주면 손을 놔버릴 것 같으니

 

Scaffold 안에 Container를 만들었다

 

이로써

 

현조 와 부모가 탄생했다

 

이때 화면은

 

 

코드를 보고 있는 우리의 뇌처럼

아주 새 하얗다

 

걱정하지말아라

순백의 도화지만큼 채우기 쉬운것도 없다

 

 

 

자식으로 Column을 추가해준다

 

이때 뜨는 파란색 경고는 일단 무시하자

 

저 경고가 왜 뜨는지 궁금하다면

 

다크모드 만들기 1을 참고하면 된다.

 

짧게 얘기해주자면

 

Container에는 여러가지 옵션이 존재하는데

옵션을 포함하지 않으면 Container를 사용하지 말라고 경고해준다

 

그러면 저 경고를 무시해도 되느냐?

 

ㅇㅇ 된다

 

저 경고가 거슬린다면 sizedbox를 사용해서 없앨 수 있다

 

sizedbox Container 의 차이는 아래 가볍게 기술해둔다

전문적인건 따로 찾아보도록 하자

근데 몰라도 서비스 잘 운영한다

 

Container SizedBox
다양한 옵션 가능 옵션이 몇개 없음

 

그리고 바로 버튼을 넣지 않고 Column을 배치한 이유는

 

정렬을 위함이다

 

여기서 첫번째 뉴비 분쇄기가 나온다

 

내가 원하는 위치에 글자 하나를 가져다 놓고 싶어도

고려해야할 사안들이 많아진다

 

바탕화면에서 아이콘 끌어다가 마음대로 두는것처럼 할 수가 없다

 

그렇게 할 수 있었으면

플러터 개발자 사는 방향으로 매일 3번씩 절할 수 있다 진심으로

 

근데 못하니까 위치를 조절할때

Container , SizedBox , Column , Row , ··· 등 뭐 많은 위젯을 이용해서

위치를 조절해야한다

 

다행이도 플러터에는

내가 화면을 어떻게 만들고 있는지 보여주는 고마운 툴이 있다

 

가끔 UI 배치하다가 개박살나면 하나씩 찾으면서 고치면된다

 

 

VSCODE를 사용하고 있다면

화면 우측이라던지 어딘가에 이렇게 생긴게 하나 떠있는걸 볼 수 있다

 

여기서 좌측 상단의 커서를 누르고 애뮬레이터의 화면을 누르면

 

 

이렇게 내가 선택한 위젯의 정보가 나온다

 

참고해서 UI 배치 잘 하길 바란다

 

본론으로 돌아와서

 

이제 Column 의 자식으로

Row를 넣어주도록 하자

 

특이하게 Column이나 Row

 

child가 아닌 

 

children 을 사용하는데

 

둘의 차이를 밑에서 설명한다

 

중요한 내용이니 그냥 보고 가라

 

이미 알아도 두번 봐라

 

child children
단 한개의 위젯만 배치 가능 복수의 위젯 배치 가능

 

여기서 말하는 위젯은

Column , Row , Container , SizedBox, Text , Img , Audio , Button

화면 위에 올라가는 모든것을 지칭한다

 

 

children을 사용하는 경우

1개도 배치가 가능하고 2개도 배치가 가능하고 3개도 배치가 가능하다

 

고속버스를 생각해보자

 

버스에 있는 수많은 좌석에

혼자 앉을 수도 있고 , 둘이 앉을 수 도 있고 , 다섯이 앉을 수 도 있다

 

child

 

좌석 한개 한개를 생각해보면된다

 

좌석 하나에 한명이 앉는게 원칙이다

 

이렇게 이해하면 편하다

 

그렇다고 child좌석이고 children고속버스

 

이렇게 이해하면 대참사난다

 

그러면 꼭 좌석에 혼자 앉으란 법이 있냐고 반문하는 사람이 있는데

 

개발 말고 다른 길을 찾는게 빠르지 않을까 진심으로 조언한다

 

이제 Column의 자식으로 Row을 넣고 텍스트를 넣는다.

 

Row도 마찬가지로 children을 사용한다

 

여기서 팁을 하나 제공하도록 하겠다

이게 뭐하는 위젯인지 모르겠다면 위젯 위에 마우스를 가져가보자

 

 

뭐가 많은데

MainAxisAlignment도 보이고

children도 보인다

 

간략하게 설명하자면

 

이 위젯이 뭐 하는건지 간단하게 정보를 주는거다

 

근데도 모르겠다?

 

윈도우 기준

컨트롤 + 스페이스바를 동시에 눌러보자

 

 

사용할 수 있는 옵션이라던지 속성이라던지 다 뜬다

 

이랬는데도 모르겠다?

 

인터넷에 검색하던지 ChatGPT나 BingAI나 물어보자

 

그런데도 모르겠다?

 

명심해두자 개발뿐만 아니라 많은 일자리가 있다

 

본론으로 돌아와서

 

Row를 추가하고 Text를 추가한다

 

Text 내용은 아무거나 상관없다

 

 

필자는 이렇게 만들어놨다

 

그러면 화면에

 

 

이렇게 뜨는걸 확인할 수 있다

근데 글자 위치가 정말 마음에 안든다

 

여기서 막간 상식으로 텍스트가 왼쪽 상단부터

출력되는 이유를 아래 첨부해둔다

궁금하면 열어보자

 

더보기

 

텍스트가 왼쪽 상단부터 출력되는 이유는

 

플러터는 왼쪽 상단부터 위젯이 생성되기 때문이다

 

원래 프로그래밍 언어는

 

Top - Down 방식을 채택하고 있는데

 

이는 위에서 아래로 읽어가면서 프로그램을 실행한다는 얘기다

 

쉽게 얘기하면

 

먼저 실행되어야 할건 상단에 배치하란 말이랑 같다

 

 

우선 글자위치를 옮기고

글자 크기를 변경해보도록 하자

 

글자 위치부터 변경할것이다.

 

이때는 Row의 속성과 Column의 속성을 모두 이용한다

 

속성에 대한 설명이 필요하다면

 

다크모드 만들기 1을 참고하자

 

찾아보는게 귀찮은 사람들을 위해

다음에 다시 한 번 설명할 수 있는 시간을 마련해보겠다

 

1. Column에 속성넣기

 

 

mainAxisAlignment: MainAxisAlignment.center, 속성을 넣어보자

 

간단히 말해주자면

Column에서 mainAxisAlignment 옵션은 세로 정렬을 얘기한다

 

코드를 풀어보면

Column에 배치된 위젯들을 세로 정렬을 하는데 위치를 가운데로 지정해라

 

이런뜻이다

 

 

 

텍스트가 아래로 내려왔다

하지만 아직도 가운데가 아니다

 

2. Row의 정렬을 이용한다

 

 

마찬가지로 mainAxisAlignment: MainAxisAlignment.center 옵션을 넣어준다

 

Row에서 mainAxisAlignment 는 가로 정렬을 의미한다

 

 

이제 텍스트가 정 중앙에 온것을 볼 수 있다

 

이 외에도 정렬하는 방법은 있는데

나는 선호하진 않는다

 

예를 들어 Center 위젯을 쓴다던지 하면

위치 옮기고 싶어서 RowColumn으로 속성넣고 지정했는데 꿈쩍 안할때도 많다

 

이런 일은 부모 위젯이 강제되어서 그렇지만

자유롭게 변경하지 못하는 문제가 있으므로 가급적이면 직접 지정하거나 하도록 하자

 

이제 텍스트 크기를 좀 키워보자

 

Text 위젯의 속성을 변경하면 된다

 

옵션은 textStyle 옵션을 사용하면 된다

 

 

styleText 위젯의 속성이고 속성을 지정하기 위해선 위와 같이 작성해야한다

 

왜 이렇게 해야하냐고 묻는다면

 

플러터 개발자한테 따지도록 하자

 

 

글자가 커졌다

만족스럽다

 

이제 버튼을 추가해야하는데

 

글이 너무 길어졌다

 

다음 포스팅에서 보도록 하자

 

 

끝내며

끝까지 읽었다면

또 끝까지 따라왔다면

당신이 도달한 끝에 행운이 깃들기를 바란다

이해 못했다고 주늑들지 말기를 바란다

그냥 무작정 따라 치다보면 눈에 익게 되고

그 다음에는 읽힌다

 


시리즈 목록

 

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 1 현재포스트

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 2 바로가기

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 3 바로가기

[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 4 바로가기