[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 4
시리즈 목록
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 1 바로가기
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 2 바로가기
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 3 바로가기
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 4 현재 포스트
저번까지 우리는
String 즉 문자에 대한 것들을 컨트롤하고 다뤄보았다
랜덤 기능도 만들어보고 구현을 해봤지만
숫자를 계산해서 문자로 표현하는건 안해봤다
예를들어
tesTInteger1변수에는 1이 들어있고
tesTInteger2변수에는 2가 들어있다고 가정해보자
여기서 두 변수는 모두 String 이고
계산을 위해
testTInteger1 + tesTInteger2를 실행하면
12가 출력될 것이다
한번 가볍게 테스트 해보도록 하자
저번에 구현한 기능은 여기까지다
이제 버튼을 하나 추가하고
결과를 출력할 수 있는 함수를 만들자
버튼 추가하는 코드는 안 알려줘도 이제 잘 하겠지만?
그래도 다시한번 보여준다
아이콘버튼 대신 ElevatedButton으로 만들어보았다
화면엔 다음과 같이 표시될 것이다
그리고 앞서 얘기한 변수 두개를 만들어준다
이름은 달라도 상관없지만
명심하자
i , j , a , k , e , x 이런 변수이름은 쓰지말아라
절대로
무슨일이 있어도
그 다음 계산할 수 있는 함수를 하나 만들어준다
testTextCal 이라는 함수를 하나 만들었다
해당 함수는 void로 반환하는게 없어 return 을 사용하지 않았다
함수에 대해서는 이전 포스팅들에서 계속 설명하고 있으므로 이번엔 생략하도록 한다
함수를 조금 설명해주자면
String tesTResult = ''; 는 결과값을 담을 변수다
testTResult = tesTInteger1 + tesTInteger2;
이건
testTResult 라는 변수에
tesTInteger1 과 tesTInteger2를 합친다음
집어넣으라는 얘기다
print(tesTResult);
필자가 작성한 강의에서는 처음 등장한 명령어인데
콘솔에 tesTResult에 담긴 내용을 출력하라는 명령어다
그러면 콘솔은 어디있냐고?
VSCODE 밑을 보면 Debug ConSole이 있을것이다
이게 콘솔이다
이제 함수도 만들었겠다
버튼이랑 연결하도록 하자
앞서 만들어둔 함수를 버튼에 연결하고 버튼을 누르면
이런 결과를 볼 수 있다
분명 1 + 2 는 3이 나와야 하는데
저기선 12가 붙어서 나왔다
그 이유는
String은 실제로 계산을 하지 않고
+ 가 있다면
+를 기준으로 좌측에 있는 데이터와 우측에 있는 데이터를
하나로 합쳐버린다
이건 우리가 바란게 아니므로
3 이 출력되도록 만들어야하는데
글자 상태에서는 할 수 없다
변수의 형태들을 int로 바꿔주자
그렇게 하고 함수를 보면
뭔가 문제가 생겼다
오류를 잘 읽어보면
A value of type int can't be assigned to a varialbe of type String
이라고 적혀있다
한글로 번역하면
Int 타입 즉 숫자는 String 문자가 될 수 없다고 되어있다
우리가 이해하기에
공책에 숫자 1 쓴거랑 문자로 1 쓴거랑
전혀 다를게 없지만
컴퓨터는 저 두개를 다르게 인식한다
쉽게 얘기하면
Int 는 열쇠고
String은 도어락인데
열쇠로 도어락을 열려고 하는 것이다
그러면 어떻게 하면 되느냐
함수 구조를 바꿔보자
여기서
TesTResult 변수는 String 이므로 일단 놔둔다
그리고 기존에 계산식을 조금 분리해보자
int로 계산값을 저장할 변수를 만들고
해당 함수를 tesTResult에 넣어준다
그러면 동일한 오류가 발생하는것을 볼 수 있다
그래서 달라진게 없다고?
조금만 기다려라
이렇게 변수 뒤에
.toString()을 달아주면 오류가 해결된다
여기서 toString이란
타입 (Int라던지 String이라던지)이 달라 사용할 수 없는 부분을
해소하고자 만든 간이 함수라고 보면 된다
자세하게 설명하면 포스팅 4개는 더 해야하므로 간단하게 사용한다
비유하자면
int가 열쇠 String이 도어락인데
열쇠를 뺏고 도어락 비밀번호를 알려준거라고 보면 된다
이해를 돕기 위해 한줄 요약하면
타입이 맞지 않는 testIntResult를 toString을 통해 타입이 맞도록 변형해준것이다
이제 실행해보면
정상적으로 3이 출력되는걸 볼 수 있다
자 그러면
콘솔에만 출력하고 끝낼건가?
화면에도 출력해야지
앞서 우리는
텍스트 위젯을 통해
화면에 텍스트를 표시했고
text변수의 내용을 이리저리 바꾸는 함수들도 만들어놨다
이런식으로 말이다
그러면
이 함수를 변형하면 되는 문제 아닌가?
changeText3의 내용을 그대로 긁어와서 일단 아래 작성한다
그 다음 print() 위젯에 있는 tesTResult를 옮겨주기만 하면 된다
이렇게 하면 문제없이 실행될 수 있다
그래도 구조를 한번 더 살펴보자면
도어락에 열쇠는 못 꽂는 것처럼
text 변수는 String 형태로 만들어서 int는 들어갈 수 없다
그래서 우리는
이렇게 toString을 통해 testIntResult라는 변수의 형태를 String으로 바꿔주었다
따라서 타입에 대한 오류가 생기지 않아 오류가 발생하지 않고
버튼을 눌러 실행했을때
이렇게 화면에 숫자가 표시되는걸 볼 수 있다
다시 알아두자
화면에 표시된건 int타입의 숫자가 아니라 String이 된 3 이라는 문자다
끝내며
항상 프로그래밍을 할때 타입이 맞지 않아 오류가 많이 발생한다
범위를 넘어간다던지 들어가선 안될게 들어간다던지
항상 프로그래머는 이런 부분을 점검하고 체크해야한다
그리고 변수는 절대 i , j , x , t , a , d 이런거 쓰지마라
초기 습관이 나중을 결정한다
텍스트를 컨트롤하는 기본기는 여기서 마무리하도록 한다
끝까지 따라오느라 고생했다는 말을 전하며
다음 강의는
게임의 랜덤 성공 확률을 구현해보는것으로 시작해보자
난이도가 있을 수 있다
포기 안하면 구현할 수 있다
걱정마라 몇번이고 몇번이고 설명해주겠다
시리즈 목록
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 1 바로가기
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 2 바로가기
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 3 바로가기
[플러터] 비 전공자도 텍스트 컨트롤 할 수 있다 - 4 현재 포스트