List (대문자)
List<타입> 변수명 = ['값1', '값2', '값3'];
List<String> name = ['짱구','철수','훈이','유리'];
List<int> numbers = [1,2,3,4,5];
index
0부터 시작
class
변수. < 마침표 찍으면 쓸 수 있는 클래스가 나옴
name.length < 갯수 체크
name.add('맹구');
name.remove('철수');
name.indexOf('짱구'); = 0
Map
key 와 value 둘 다 있어야함
Map<key의 타입, value의 타입> 변수명 = {key:value , key2:value}
Map<String,bool> isHarryPotter = {
'Harry' : true,
'Ron' : true,
};
Map에서 값 추가
1. addAll
isHarryPotter.addAll({
'malfoy': true
});
2.[] 원하는 키의 값
추가 or 변경 가능
isHarryPotter['Hulk'] = false;
Map에서 값 삭제
isHarryPotter('Harry')
isHarryPotter.keys
isHarryPotter.values
Set
List는 중복가능, Set 중복불가
중복이여도 오류x, 자동으로 삭제
final Set<String> name = {}
add추가 / remove 삭제 / contains 유무확인
조건문
- if문
- switch문
switch(조건){
case 0:
0일때 실행
brake;
case 1:
1일때 실행
brake;
default:
기본 실행
brake;
}
반복문(loop)
- break : 반복문 종료
- continue : 현재 반복 종료 후 다음 반복 실행
- for문
for(int item in List){}
- while문
while(total < 10){
실행
if(조건){break;}
}
enum
상태 선언
효과: 오타방지, 상태가 이것만 존재함을 제약
void main 바깥에 선언
enum Status(함수명){
approved, // 승인
pending, //대기
rejected, // 거절
}
void main(){
Status stt = Status. // 자동완성됨
}
함수
parameter / argument = 매개변수
positional parameter : 순서가 중요한 파라미터
[optional parameter] : 있어도 되고 없어도 되는 파라미터
named parameter : 이름이 있는 파라미터(순서 상관없음)
arrow function : 화살표함수
반환하려면 return / 함수명 앞에 반환타입
- optional parameter 사용법
test(int x, [int y = 20, int? z]){
// y 기본값은 20, z는 null 가능
}
- named parameter 사용법
함수명({
required int x,
required int y,
int z, // optional parameter로 사용하려면 ?나 기본값 넣기
})
실행시 파라미터에 이름을 넣어야함.
함수명(y:20, x:10, z:30);
-arrow function (화살표함수)
함수=> 반환값
typedef Poeration
- 타입이 일치해야함(시그니처라 부름)
객체지향 프로그래밍(OOP)
최상위에서 object를 상속받기 때문에 OOP라고 부름
클래스 : 기본 정의
인스턴스 : 클래스를 이용해 만든 것
immutable(이뮤테이블) 프로그래밍 : final키워드를 이용해 변수를 변경 불가하도록 만드는 것을 권장(버그방지)
const : constructor에 많이 사용
const를 붙이고 내용이 같으면 같은 인스턴스로 인식됨.
getter / setter : 데이터 가져올 때 / 설정할 때
- getter : 함수와 기능은 비슷하지만 단순히 값을 가져올 때 사용
get firstMember{} // 중괄호만 사용
- setter : immutable programming에 어긋나서 거의 사용하지 않음
set firstMember(String name){ // 파라미터 무조건 1개
}
프라이빗 속성
언더스코어 사용
클래스,변수, 함수 앞에 _를 붙이면 현재 파일에서만 사용 가능(외부에서 불러올 때 쓰지 못하도록 막음)
상속(inheritance)
부모클래스
자식클래스 : 부모클래스의 모든 기능 사용 가능
메소드 오버라이드(method override)
메소드란 : 클래스 내부에 있는 함수
오버라이딩 : 덮어쓰다(우선시하다) / 상속한 값에만 가능
@override (골뱅이필수)
void main() {
numTwo a = numTwo(2);
print(a.cal());
numFour b = numFour(4);
print(b.cal());
}
class numTwo {
final int num;
numTwo(
// construct
this.num,
);
// method
int cal() {
return num * 2;
}
}
class numFour extends numTwo {
numFour(
int num,
) : super(num);
@override
int cal() {
return super.cal() * 2;
}
}
static
- static은 instance에 귀속되지 않고 class에 귀속된다.
- 하나만 변경해도 모든 변수 변경되어 적용됨
인터페이스(interface)
- 형식(시그니처)를 유지(강제)하기 위해 사용
- 함수 안에 정의하지 않아도 됨.
- class 똑같이 사용.
- 인터페이스는 형태만 강제하기 위해 만드는 것이기 때문에 변경하면 안됨.
- 변경을 방지하기 위해 추상화(abstract) 사용
- abstract안의 함수는 바디{} 지워도 됨.
// 인터페이스
abstract class A { 형태1, 형태2 }
class B inplements A{ 형태1=name, 형태2=num}
ganeric : 타입을 외부에서 받을 때 사용
클래스 이름 옆에 명시
void main(){
test<String> test = test('aa',123);
}
class test<A>{
final T id;
final int num;
tset(this.id, this.name);
}
'공부 > Dart & Flutter' 카테고리의 다른 글
다트 기초 - 함수형 프로그래밍 (7) | 2024.12.05 |
---|---|
다트 기초 (0) | 2024.11.27 |
댓글