본문 바로가기

Flutter 앱 개발 기초

flutter 앱 개발 기초 dart 문법

main(){
//여기서 부터 시작합니다.
	print("hello dart");
}

main 은 처음 시작시 호출하는 함수입니다. 

//는 메모 이며 

print 함수로 출력

; 는 한 줄이 끝났다는 뜻입니다. 

 

1)변수 

어떤 값을 담는 바구니

자료형 = 바구니에 담을수 있는 값의 종류 

 

var = 처음으로 담긴 값 저장

string = 문자만 담음

string? = 문자 또는 빈공간 

final string = 한번 담은 뒤 재할당 불가능 

/// Copyright 2022. ⓒ DevStory.co.kr All rights reserved.

main() {
  /// var : 처음 담은 값으로 자료형이 결정 됨
  var name = '철수';
  print(name); // 철수
  print(name.runtimeType); // string (문자)
  
  var age = 20;
  print(age); // 20
  print(age.runtimeType); // int (정수)
  
  
  print("="*20);
 }

main 함수 안에 구현합니다. 

*runtimeType = 변수의 타입을 알려준다. 

*print 안에서의 산술연산 가능 

 

main() {
  
  /// String : 문자만 넣을 수 있음
  String address = '우리집';
  print(address); // 우리집
  
  // address = 1; // ⬅️ String 만 담을 수 있기 때문에 이 코드는 에러 발생
  
  address = '모두의 집';
  print(address); // 모두의 집
  
  
  print("="*20);
 }

string 안에는 문자만 넣을수 있음으로 문자만 넣어준다. 

 

main() {
  
  /// String? : 문자 또는 비어있을 수 있음
  String? email; // ⬅ 아무것도 안넣었으므로 비어있음
  print(email); // null ⬅ 비어있음을 의미
  
  email = "a@a.com"; // 문자열 할당
  print(email); // a@a.com
  
  email = null; // 다시 비우기
  print(email); // null
  
  
  print("="*20);
    
  
  /// final : 값을 재할당 할 수 없음
  final String phone = "010-0000-0000";
  print(phone); // 010-0000-0000
  // phone = "010-1111-1111"; // final 때문에 이 코드는 실행 불가능
}

*null = 비어있음을 의미 

*? 를 쓰면 null 도 포함한 자료형이 된다. 

 

2)자료형

-string = 문자열

-int = 정수 

-double = 실수

-bool = 불리안(참 거짓 나타냄)

-List<T> = 데이터 여러개 가진 배열 

-Map<K,V> = 파이썬의 딕셔너리 형태 , 키와 벨류 가짐 모든 자료형 올 수 있음 

-dynamic = 모든 자료형 담을 수 있음 

 

3)흐름 제어문

 - 조건문

void main() {
  int age = 101; 
  
  print('시작');
  
  if (age == 20) {
    print("20살 입니다.");
  } else if (age == 10) {
    print("20살은 아니고, 10살 입니다.");
  } else {
    print("20살도 아니고, 10살도 아닙니다.");
  }
  
  print('종료');
}

* 비교연산자와 같이 많이 쓰입니다. 

*파이썬과 다르게 if () { print()} 형태로 구성됩니다. 

 

-반복문 

void main() {
  // 과일 5개가 들어있는 배열의 내용을 모두 출력하려면 5번 print를 사용해야 합니다.
  List<String> fruits = ["딸기", "감", "배", "사과", "바나나"];
  print(fruits[0]);
  print(fruits[1]);
  print(fruits[2]);
  print(fruits[3]);
  print(fruits[4]);
  

  print("---- 반복문 ----");
  print("fruits.length : ${fruits.length}"); // 전체 배열의 개수

  // 반복문을 사용하면 과일의 개수에 상관없이 3줄만 입력하면 됩니다.
  for (int i = 0; i < fruits.length; i++) {
    print("$i : ${fruits[i]}"); // i가 0부터 fruits.length - 1까지로 변합니다.
  }
  
  
  print("---- for in 문 ----");
  
  // 참고로 for in문이라 불리는 다른 형태의 반복문도 있습니다.
  for (String name in fruits) {
    print(name); // fruits 배열의 원소를 차례대로 꺼냅니다.
  }
}

* for 문 안의 내용을 해석해 봅시다.  int i = 0 인 상태이며 fruits.length 위 리스트의 개수보다 i 가 작을때 

 print 하고 i++ = i에 1을 더해준다. i 에 1을 더해주는게 마지막 순서입니다. 순서가 좀 이상하지만 익숙해져 봅시다. 

 

*변수 선언이 아니라 List 선언은 처음보는데요 마찬가지로 List<타입> 이름 = [] 로 선언하며 인덱스 번호로 가져와 주시면 됩니다.

(왼쪽부터  0,1,2,3,4 순으로 번호가 매겨집니다. 이를 인덱스라 합니다.)

 

*for in 으로 배열에 있는 원소 하나하나를 인덱스를 안쓰고 바로 가져오는 방법도 있습니다. 새로운 변수 name 을 만들고 거기에 넣어준 변수를 차례차례 print 해 줍니다. 

*이때 $는 변수표시 

 

4)함수 

void main() {
 say("철수");
}

void say(String person) {
  print(person + "야 안녕?"); // 철수야 안녕?
}

* void main 함수는 필수로 넣어줍니다. 

*say 에 "철수" 를 값으로 넣어주면 say 함수의 person 변수에 "철수" 라는 값이 들어가 pirnt 됩니다. 

*함수의 입력값을 받아주는 변수를 파라미터/매개변수/인자 라 한다. 

 

void main() {
 say("영희", "철수야 안녕?");
}

void say(String from, String message) {
  print("$from : $message"); // 영희 : 철수야 안녕?
}

*입력값 두개 받기 , 사용해서 연결해 줄 수 있다. 

 

void main() {
  say(from: "영희"); // 전달시 변수명을 적어줍니다.
  say(); // 전달하지 않을 수 있습니다.
}

// 소괄호 안쪽이 중괄호로 감싸진 경우 = Named Parameter
void say({String? from}) {
  print("$from : 안녕?");
}

*중괄호로 감싸진 매개변수 = 이름지정 매개변수 

*이름지정 매개변수는 입력값 전달시 매개변수 이름 지정해서 전달함.

*string? 타입임으로 null 올 수 있음 

 

void main() {
  say(from: "영희"); // 전달시 변수명을 적어줍니다.
}

// required 키워드가 있는 경우, 호출시 필수로 전달해야 합니다.
void say({required String from}) {
  print("$from : 안녕?");
}

*이름지정 매개변수의 값을 필수로 전달하도록 = required 붙여주기 

void main() {
  say(from: "영희");
  say(from: "영희", message: "안녕?");
  say(message: "안녕?", from: "영희"); // 이름을 지정하기 때문에 순서 상관이 전달 가능합니다.
}

void say({required String from, String? message}) {
  print("$from : $message");
}

*이름전달 매개변수도 값 여러개 전달 가능 

*변수 이름 지정해서 넣기 때문에 순서 바뀌어도 상관 없음 

void main() {
  String name = getName();
  print(name);
}

String getName() {
  return "철수";
}

*getName 함수 앞 string 은 함수가 반환하는 값 타입

*return 뒤의 값을 반환해 준다. 

void main() {
  String name = getName();
  print(name);
}

// "철수"를 return하는 함수를 화살표 함수를 써서 짧게 축약할 수 있습니다.
String getName() => "철수";

*화살표 함수를 통해 Return 축약 가능

 

 

 

 

 

 

-모든 저작권은 인프런 flutter 앱 개발 기초에 있습니다.