Flutter 16

[Dart] 기본 - Final, Const

Final, Const 두 키워드 모두 변수를 변경할 수 없다. final : 한번만 set 되고 변경할 수 없다. const : 컴파일 시점에 set 되어있어야 한다. var, final 변수들은 스택이나 힙에 저장된다. const 변수들은 컴파일 타임에 다른 곳에 계산되어 저장된다. 이후 변수가 그 곳에 있는 값을 참조한다. 그래서 const로 생성된 같은 값의 인스턴스는 같은 객체이다. 관련링크 class Point { static const _initX = 0; static const _initY = 0; int _x; int _y; int get x => _x; int get y => _y; Point({ int x = _initX, int y = _initY, }) : _x = x, _y = ..

Flutter/Dart 2023.12.01

[Dart] 기본 - Record

Record 다른 언어에서는 튜플. setter가 없어서 불변이다. 통째로 갈아끼우면 참조를 변경할 수 있다. (int, int) record = (1, 2); record = (3, 4); print(record); // (3, 4) Record fields (int, int, {int a, int b}) record = (1, a: 2, b: 3, 4); print(record.$1); // 1 print(record.$2); // 4 print(record); // (1, 4, a: 2, b: 3) {} 로 함수처럼 이름을 가질 수 있다. {} 는 제일 마지막 부분에 넣어야한다.(함수처럼) named field를 제외하고 순서대로 $1부터 간다. named 초기화 시 순서가 상관이 없다. ({int..

Flutter/Dart 2023.11.30

[Dart] 기본 - Classes, Abstract, Mixin

객체 Null을 제외하고 다트의 모든 것은 Object 타입의 자손이다. Object 의 부모는 Object? 가 있다. 가장 탑 클래스이다. print(1.runtimeType); // print int print("a".runtimeType); // print String 그 예로 각 리터럴이 runtimeType 프로퍼티를 가지고 있다 클래스 객체지향 프로그래밍을 할 때 객체를 설계하는 도구로 사용된다. 일반화, 추상화, 상속, 다형성을 사용할 수 있게 만들어졌다. class Point implements Comparable, Location {...} 여러 인터페이스를 구현하기 위해 implements 를 사용한다. class Dog { num height; num weight; Dog.ori(t..

Flutter/Dart 2023.11.29

[Dart] 기본 - extends, with, implements

extends 상속이다. 부모가 가진 변수 및 메서드를 바로 사용할 수 있다. with 클래스의 추가 기능을 구현할 때 쓴다. class A with B {} 가 가능하다. void main(List args) { var dog = Dog(); dog.bark(); // prints "talk" } class Dog extends Animal with barkable, talkable {} class Animal {} mixin barkable on Animal { bark() { print("bark"); } } mixin talkable on Animal { bark() { print("talk"); } } Animal에 bark() 메서드가 있다면 Animal에 있는 메서드를 실행하며, mixin에..

Flutter/Dart 2023.11.29

[Dart] 기본 - Loops

For loops dart의 for문은 i의 값을 캡쳐함. dart: 0, 1 출력 javascript: 2, 2 출력 var callbacks = []; for (var i = 0; i print(i)); } for (final c in callbacks) { c(); } List, Set 같은 Iterable한 타입은 반복문을 돌릴 경우 for-in 루프를 사용하는데 이 때, 패턴을 넣어 사용할 수 있음. Map은 Iterable 하지 않음. for (final Candidate(:name, :yearsExperience) in candidates) { print('$name has $yearsExperience of experience.');..

Flutter/Dart 2023.11.29