1
class Car {
final String name;
// final 1.반드시 초기화(생성자)
Car(this.name);
}
void main() {
Car c = Car("소나타");
// c.name = "다른 자동차"; // 2. 변경불가
}
2
// 플러터는 파일단위로 import
// const
// 1. 상수 데이터 초기화
// 타입 생략 가능 - 자동으로 var로 정의
const primaryClolr = "green"; // 컴파일시 초기화
const secondaryColor = "red";
// final secondaryColor = "red"; // 런타임시 초기화
class Button {
final String text;
const Button(this.text);
}
void main() {
Button b1 = const Button("로그인");
Button b2 = const Button("로그아웃");
print(b1.hashCode);
print(b2.hashCode);
}
// 동일하면 const
// 아무것도 안붙이면 변경 가능한 버튼 2개 -서로 다른 객체
// final 동일 객체들
3
// 컬렉션 - 불변 객체로 이용해라
// dynamic 들어오는 타입에 맞춤
List<dynamic> list = [1, 2, 3, "문자열 가능"];
var map = {
"id": 1,
"name": "홍길동"
};
void main() {
print(list[1]); // 출력: 2
print(map["name"]); // 출력: 홍길동
// 1. list 값추가
list.add(4); // 안씀. 불변성 이용
print(list);
// 2. map 값추가
map["phone"] = "0102222";
print(map);
}
4
var list = [1, 2, 3];
void main() {
// 0. 깊은 복사
// 타입을 벗긴 값이 들어옴
// r1과 list는 다른 객체
var r1 = [...list];
// 1. 추가
var r2 = [...list, 4];
// 2. 삭제
// 자바의 필터 = where
var r3 = list.where((e) => e != 2).toList();
print(r3);
// 3. 검색
var r4 = list.where((e) => e == 2).toList();
print(r4);
// 4. 수정
var r5 = list.map((e) => e == 2 ? 5 : e).toList(); // 삼항연산자
print(r5);
}
Share article