본문 바로가기

flutter앱개발과정

flutter앱개발 - Dart 문법

1. 변수

변수란? 변수는 값을 담아두는 박스라고 생각하면 된다.

프로그램은 많은 변수들에 값을 가공하고 꺼내와서 연산하고 처리하는 결과물이라고 보면 된다.

 

- 변수 생성

var author = "개발하는남자";

 

- 변수 다양하게 생성

String stringValue = "문자열";
int intValue = 2;
bool booleanValue = false;

 

- 점수/시도회수 변수 선언

int score = 0;
int tryCount = 0;

 

- cards 빈 변수 선언

List<int> cards = [];

 

1-1. 타입 정의

  • int
  • double
  • String
  • bool
  • List
  • Set
  • Map

2. 반복문

반복문이란? 반복문은 프로그래밍에 있어 아주 중요하고 아주많이 사용하는 기술이다. 말그래도 반복해서 무엇인가를 처리할때 사용하는 기술이라고 생각하면 됩니다.

 

- 1 ~ 10까지 더하기 나열방식

void main() {
  var sum = 1+2+3+4+5+6+7+8+9+10; 
  print(sum); // 55
}

 

- 1 ~ 1000까지 더하기 반복문

void main() {
  var sum =0;
  for(var i =0; i<1000; i++){
    sum+=i;
  }
  print(sum); // 499500
}

 

-cardWidget 반복문으로 변경

@override
Widget build(BuildContext context) {
  return SingleChildScrollView(
    child: Wrap(
      spacing: 4,
      runSpacing: 4,
      children: [
        for (var i = 0; i < 12; i++) CardWidget(),
      ],
    ),
  );
}

 

- cards변수를 활용한 반복문 변경

for (var i = 0; i < cards.length; i++) CardWidget(),

 

- cards변수 랜덤 값 주입

List<int> cards = [1, 5, 2, 6, 3, 4, 3, 2, 6, 1, 4, 5];

 

- CardWidget 파라미터 전달

CardWidget(
  cardNumber: cards[i],
  isFlipped: true,
),

 

2-1. for문 구성

for문 다음 괄호 안, 3가지 영역에 각각 다음과 같은 규칙이 있다.

 

for( [반복 시작 시점] ; [반복 종료 시점] ; [증감값] ){
로직
}

 

- 반복 시작 시점 (Initialization)

• 반복이 시작될 때 단 한 번 실행됩니다.

• 주로 반복 변수를 초기화하는 데 사용됩니다.

• 예: int i = 0

 

- 반복 종료 시점 (Condition)

• 반복이 계속될지 여부를 결정하는 조건식입니다.

• 조건식이 참(true)이면 반복문 내의 로직이 실행되고, 거짓(false)이면 반복이 종료됩니다.

• 예: i < 10

 

- 증감값 (Increment/Decrement)

• 각 반복이 끝날 때마다 실행됩니다.

• 반복 변수를 증감시키거나 다른 방식으로 업데이트하는 데 사용됩니다.

• 예: i++

 

- 로직 (Body)

• 반복문이 실행되는 동안 실행할 코드 블록입니다.

• 조건이 참인 동안 반복적으로 실행됩니다.

 

2-2. 반복문의 좋류

for문은 위처럼 사용하는 기본형이 있고 변형해서 사용하는 방법도 여러 가지 존재한다.

  • forEach문
  • for in문
  • while문
  • do while문

3. 함수

함수란? 함수는 프로그램 내에서 특정 작업(이벤트)을 수행하기 위해 코드 블록 내에 비즈니스 로직을 작성하여, 원하는 값을 반환하거나 변수를 통해 데이터를 담아두는 기능을 한다.

 

- 함수 두수의 덧셈 예제

int add(int a, int b) {
  int sum = a + b;
  return sum;
}

void main() {
  int result = add(3, 5);
  print('결과: $result');  // 출력: 결과: 8
}

 

- 함수 두수의 뺄셈 예제

int substract(int a, int b) {
  int sum = a - b;
  return sum;
}

void main() {
  int result = substract(3, 5);
  int result2 = substract(5, 3);
  print('결과: $result');  // 출력: 결과: -2
  print('결과: $result2');  // 출력: 결과: 2
}

 

- 네임드 파라미터의 두수의 덧셈 함수 예제

int add({required int frontValue,required int endValue}) {
  int sum = frontValue + endValue;
  return sum;
}

void main() {
  int result = add(frontValue : 3, endValue : 5);
  print('결과: $result');  // 출력: 결과: 8
}

 

- 네임드 파라미터릐 두수의 뺄셈 함수 예제

int substract({required int frontValue,required int endValue}) {
  int sum = frontValue - endValue;
  return sum;
}

void main() {
  int result = substract(frontValue : 3 , endValue : 5);
  int result2 = substract(endValue : 5 , frontValue : 3);
  print('결과: $result');  // 출력: 결과: -2
  print('결과: $result2');  // 출력: 결과: -2
}

 

- 네임드 파라미터의 옵셔널한 예제

int add({required int frontValue,required int endValue, int? expansionValue}) {
  int sum = frontValue + endValue + (expansionValue??0);
  return sum;
}

void main() {
  int result = add(frontValue : 3, endValue : 5);
  int result2 = add(frontValue : 3, endValue : 5, expansionValue : 3);
  print('결과: $result');  // 출력: 결과: 8
  print('결과: $result2');  // 출력: 결과: 11
}

 

- onTapCard빈 함수 만들기

void onTapCard(){

}

 

- onTapCard print 함수 만들기

void onTapCard(int cardIndex){
print('$cardIndex 번째 카드를 선택하셨습니다.');
}

 

- onTapCard 함수 연결

CardWidget(
  cardNumber: cards[i],
  onTap: () {
    onTapCard(i);
  },
),

 

- cardsFlippedState 변수

List<bool> cardsFlippedState = [
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
  false,
];

 

- cardsFlippedState 변수 CardWidget에 연결

CardWidget(
  cardNumber: cards[i],
  isFlipped: cardsFlippedState[i],// 추가
  onTap: () {
    onTapCard(i);
  },
),

 

- onTapCard 이벤트 cardsFlippedState 변경

void onTapCard(int cardIndex) {
  print('$cardIndex 번째 카드를 선택하셨습니다.');
  cardsFlippedState[cardIndex] = true;
}

 

- onTapCard 이벤트 cardsFlippedState 변경 후 setState 호출

void onTapCard(int cardIndex) {
  print('$cardIndex 번째 카드를 선택하셨습니다.');
  setState(() {
    cardsFlippedState[cardIndex] = true;
  });
}

 

3-1. 함수의 구성

반환타입 함수이름(매개변수1, 매개변수2, ...) {
  // 비즈니스 로직 구현부 
  return 반환값;
}

 

- 반환타입

  • 함수가 반환하는 값의 타입을 명시합니다. 반환값이 없는 경우 void를 사용한다.
  • 반환 타입은 변수 선언 파트에서 알아봤던 타입과 동일하다.(int,String,bool,List,Map 등…)

- 함수이름

  • 함수를 호출할 때 사용하는 이름이다.
  • 함수 이름은 어떤 작업을 수행하는지 비즈니스 로직을 대표할 수 있는 명확한 이름으로 작성하는 것이 중요하다.

- 매개변수

  • 함수가 입력받는 값들입니다. 콤마로 구분하여 여러 개를 정의할 수 있다.

- 로직

  • 함수가 수행할 작업을 정의하는 코드 블록이다.

- 반환값

  • 함수가 작업을 완료한 후 호출한 곳으로 돌려주는 값입니다. return 키워드를 사용하여 반환한다.
  • 반환값은 1번 반환 타입과 같은 타입의 데이터를 반환해야 한다.