티스토리 뷰

반응형

변수

 

선언 [ var, dynamic ]

void main() {

  /// int num1 = 1;
  var num2 = 2;
  dynamic num3 = 3;
}

 

var과 dynamic 둘다 타입을 추론을 하는 방식입니다. 둘다 자료형을 명시 해주지 않아도 됩니다.

기본적으로 var을 사용할 하고, dynamic은 함수와 같이 사용합니다. ( dynamic은 object 느낌 )

 

선언을 하지 않으면 기본 값으로 null이 들어갑니다.

 

 

 

num

num은 int형과 double형 입니다.

 

void main() {

  num number1 = 1;
  num number2 = 1.1;
}

 

 

문자열 [ ' ', " " ]

void main() {

  var str1 = "Flutter";
  var str2 = 'Flutter';
}

 

문자열은 ' '와 " "로 나타낼 수 있습니다.

 

 

void main() {

  var str3 = '1번''2번''3번';
  var str4 = '1번'+'2번'+'3번';
  var str5 = '''
  1번
  2번
  3번
  ''';
}

그리고 위와 같은 방법으로 문자를 합칠 수 있습니다.

 

 

final과 상수 [ final, const, static ]

void main() {

  final name = '리프';
  const age = 19;
  static const email = "itggood2420@gmail.com"
}

 

final과 const는 둘다 한번 선언하면 값을 변경할 수 없다는 특징을 가지고 있습니다.

다른 점이라면 const는 메모리에 값을 저장합니다.

 

static은 클래스의 멤버 변수에 바로 참조할 수 있게 합니다.

 

 

is, as

 

is는 왼쪽의 자료형이 오른쪽과 같은지 확인을 하여 Boolean을 반환하고, as는 타입 캐스팅을 해줍니다.

 

void main() {

  const num = 1;

  print(num is int);
  print(num is! int);
  print(num as int);
}

 

 

Collection

 

List

void main() {
  
  List<String> list1 = ['1', '2', '3'];
  
  var list2 = ['1', '2', '3'];
}

 

Set

void main() {
  
  var set = {'1', '2', '3'};
}

set은 list와 다르게 {}를 사용합니다.

 

Map

void main() {
  
  var map = {
    'key1': '1',
    'key2': '2',
    'key3': '3'
  };
}

 

 

 

NULL 처리

 

void main() {

  String name;

  print(name ?? 'Null');

  print(name?.toUpperCase());
}

 

print(name ?? 'Null');

??은 null이면 기본 값을 넘겨줍니다.

 

print(name?.toUpperCase());

?.은 null이 아닐 경우에만 실행을 해줍니다.

 

 

 

함수

 

void main() {
  
}

기본적인 함수의 구조입니다.

 

반환형 이름() {}

 

 

 

Async, Await

Async는 비동기 함수를 선언할 때 사용하고 Await은 함수의 결과를 기다리는데 사용합니다.

 

async는 await을 만나면 실행을 하고, Future 객체를 반환합니다.

예외 처리는 try-catch를 사용합니다.

 

 

Future<String> string() async => 'Hello, World';

Future getString() async {
  var str = await string();
}

void main() {
  getString();
}

 

 

Class

 

다트언어에는 private가 없기 때문에 private로 만들고 싶으면 변수 이름 앞에 _를 붙이면 됩니다.

 

class Example {

  String _name;
}

 

class Example {
  String _name;

  void setName(String name) => _name = name;

  void getName() => print(_name);
}

void main() {

  var ex1 = Example();
  ex1.setName('리프');
  ex1.getName();

  var ex2 = Example()
  ..setName('리프')
  ..getName();

}

 

 

implements 

다트에는 interface가 없습니다. 하지만 implements를 통해 interface로 사용 가능합니다.

implements는 강제로 전부 override 해야됩니다.

 

import 'classExample.dart';

class Person implements Example {

  @override
  void getName() {
    
  }

  @override
  void setName(String name) {

  }

}

 

with

만약 부분만 override 하고 싶으면 with를 사용하면 됩니다.

 

import 'classExample.dart';

class Person with Example {

  @override
  void getName() {

  }
  
}

 

 

반응형

'알려주는 이야기 > Flutter' 카테고리의 다른 글

Flutter - RaisedButton 위젯  (0) 2020.07.21
Flutter - Text, Image 위젯  (0) 2020.07.18
Flutter - 위젯 개념과 생명주기  (0) 2020.07.17
Flutter - 앱 구조 확인하기  (0) 2020.07.17
Flutter - 플러터 시작하기  (1) 2020.07.06
댓글