플러터

[Flutter] Dart 기본문법에 관해...

구글이 웹 FE 구현을 목적으로 개발한 언어

  • 모바일 앱, 웹 앱, 명령어 스크립트, 서버 프로그래밍도 개발 가능
  • 객체지향
  • 선택적 타입
  • JS와 호환
  • Hot reload 기능을 통해 개발 생산성 높임
  • AOT 컴파일러로 네이티브 코드를 생성하기 때문에 모든 플랫폼에서 빠른 속도 제공

다트 언어의 특징

  • main 함수로 시작
  • 다트는 모든 변수가 객체
  • 자료형이 엄격하며 만약 여러 자료형을 허용하려면 dynamic 타입을 이용
  • 다트는 public, protected 같은 키워드가 없고, 외부로 노출을 원하지 않으면 변수나 함수 앞에 _를 이용해 표시
  • 제네릭 타입을 이용해 개발 가능

 

기본 문법

주석

  • // 한줄
  • /* ... */ 여러줄
  • /// 문서주석

문장 끝은 세미콜론

프로그램의 시작점은 main()

모든 변수가 객체, 모든 객체는 Object 클래스 상속받음

자료형이 엄격한 언어로 변수에 지정한 자료형과 다른 유형의 값을 저장하면 에러

여러 자료형을 허용하려면 dynamic 타입 이용

 

 

자료형

숫자

  • int
  • double
  • num

문자열

  • String : 문자열

Boolean

  • bool : true, false

 

var : 입력받은 값에 따라 자료형 결정, 한번 결정된 자료형은 변경 불가

dynamic : 입력받은 값에 따라 자료형 결정, 다른 변수 입력하면 자료형 변경 가능

 

상수 : final로 선언

 

 

조건문 ( Java와 같다 )

  • if else ~
  • switch case

 

반복문

  • for문 ( Java와 같다 )
  • while문 ( Java와 같다 )

 

함수

리턴타입 메서드명(매개변수) {

  함수내 코드

  return ~

}

  • 클래스 밖에 작성하는 함수 -> 최상위 함수
  • 최상위 함수는 어디에서나 호출 가능
  • 클래스 내부에 작성하는 함수는 객체 생성 또는 클래스 이름을 통해 접근 가능
  • static 키워드가 붙은 함수는 최상위 함수 처럼 사용 가능

익명 함수

이름 없는 함수를 익명함수라 함

 

람다식 => 왼쪽에는 인수명을 작성, 오른쪽에는 코드 또는 반환 값 작성

([인수명]) => [동작 or 반환 값]

 

선택 매개변수 ( 다트의 강점 )

함수 정의 시 {}로 감싼 매개변수는 선택적으로 사용할 수 있음.

함수 호출 시 전달 할 인자값 앞에 매개변수 명을 붙여주면 됨

이런 매개변수를 Named Parameter 라고 함

void showInfo({String name = "", int age = 0}){
	print('name : ${name}, age : ${age}');
}

void main() {
	showInfo(name: '김길동', age: 28);
    showInfo(name: '박길동');
    showInfo(age: 35);
    showInfo();
}

 

생성자

클래스 내 멤버 변수값들을 초기화 할 때 주로 사용

사용자 정의 생성자를 선언하면 default 생성자는 사용 못함

선택 매개변수를 사용하면 default 생성자 형태도 호출할 수 있으나, default 생성자를 호출한 것이 아니라 매개변수에 null을 대입한 것을 호출함.

 

믹스인 (mixin)

with 키워드를 사용하면 상속하지 않고 다른 클래스의 기능을 가져오거나 override할 수 있음.

Mixin이 적용된 클래스는 여러 가지 형태를 가질 수 있는데 이런 것을 다형성 이라 함

자바의 인터페이스와 비슷 ( implements 도 있음 )

 

컬렉션

List

Set

Map

등 존재

 

일급객체

다트는 객체지향 프로그래밍과 함수형 프로그래밍 특징을 모두 제공

다트에서는 함수를 값으로 취급할 수 있어 변수에 함수를 대입할 수 있음

다른 함수의 인수로 함수를 전달하거나 반환도 받을 수 있음

 

유용한 함수

any 함수

- 리스트에 특정 조건을 만족하는 요소가 있는지 확인할 때 사용

var numArr = [4,5,6,8,10];

var result = numArr.any( (e) => e % 3 == 0 );

print(result); // true 출력됨

 

reduce 함수

반복요소를 줄여가며 결과를 만들 때 사용

 

null 처리

다트는 null을 처리할 수 있는 많은 방법 제공

?. : 객체가 null 아니면 정상 수행, null일 때는 에러 대신 null을 반환

?? : null이 아니면 정상 결과를 null이면 ?? 뒤에 값을 리턴

'플러터' 카테고리의 다른 글

[Flutter] Native API 활용에 관해...  (0) 2021.11.12
[Flutter] 플러터 하기 전 OS 배경 학습...  (0) 2021.11.08