
flutter 를 위해 Dart 를 공부해봅시다.
Java 와 매우 흡사합니다.
; 필수
+ - / * 나머지 %
print
1 더하기 할 때 number ++; 가능
다른 숫자 더하기는 number += 2; 해도 됨
역시 언어들은 매우 비슷하다.
확인
A is B; A is! B;
not 은 없는 듯
and &&
or ||
list 정의할 때는 안에 들어가는 속성의 타입을 지정합시다.
List<String> List<int> ...
list 의 길이 listA.length
list 에서 속성 지우기 listA.remove
list 에서 속성의 인덱스 listA.indexOf("A")
변수 선언 var
하지만 정수 선언은 int 실수 선언은 double, 문자는 String




알아서 int 로 바꿔주는 군요
타입 인쇄: type print 는
runtimeType
타입 확인: type check is
is 타입is! 타입또는!= 타입== 타입해도 됨
하지만Try changing one or both of the operands라는 안내가 나옴
하지만 int 로 선언해서 string 을 넣으면


에러가 나는 군여
int 에 double 을 넣으면?


타입은 웬만하면 정확하게 해줍시다 js 꼴나기싫으면.
dynamic ?

다양한 타입을 넣어도 되는 dynamic.
ts 의 any 같은 건가
명확하게 var int double 처럼 타입을 지정해줬다면


에러가 납니다
또한 dynamic 은 null 도 가능한 것이 정말 any 같음.
다른 건 안됨.


하지만 타입을 명확하게하면서 null 을 쓰고싶다

하지만 var? 는 안됨. 타입이 명확하지 않잖슴 ;


A ?? = 20;
A 가 null 이면 20 으로 바꿔라.



null 이 아니면 바뀌지 않음


null 이면 바뀜
const final


var 처럼 변수 타입을 지정하지 않아도 알아서 타입을 넣어줍니다.

const final 로 선언한 뒤엔 변경할 수 없습니다.


시간 타입 DateTime. 코드가 실행된 시간인 now()
하지만 DateTime 에서 final 와 const 는 다릅니다.
const 는 DateTime.now() 가 안 돼요.


백틱 을 쓰지 않고 ' 따움표만 해도 가능
dictionary 처럼 key value 를 따라 값을 넣을 수 있습니다.
addAll 을 이용해 두 딕셔너리를 합칠 수 있습니다.
하나의 값을 새롭게 넣고싶다면
그냥 넣으면 됩니다.


변경하고 싶다면 그냥 변경하면 됩니다.


지우고 싶으면 map.remove('지울거')


keys 만, values 만


값이 있는지 확인
containsKey
containsValue 를 통해 값이 있는지 없는지 확인가능


bool 값으로 나옴
set 은 list 같지만 중복을 넣을 수 없습니다.
if (조건) {결과}; else if (조건2) {결과2}; else{결과3};
switch(조건){
case 조건:
결과;
break;
case 조건2:
결과2
break;
default:
결과3
break;
}
break 안 해주면 모든 case 를 돌아버림.
default 는 if 문의 else 같은 것
dartpad 제일 처음 시작하면 적혀있는 게 for 문이었군

for( int i in listA ){
print(i);
}
라고 할 수도 있음.

루프돌다가 if 와 함께 continue 를 넣으면 해당 loop 만 건너뜀
이쯤 되니 모든 언어의 짬뽕이 아닐까 싶음

while

enum 을 이용해 들어가야할 값과 변수를 제한해봅시다.

이렇게 해도 되지만
오타났을 경우를 대비하기도 하고.
funcA ( String name, int age) {
print(name)
print(age)
}
하지만 age 는 없어도 사용하고 싶다?
[] 대괄호를 해주자.
근데 없어도 되면 null이 되는 변수여야하잖슴. dynamic 을 써도 되지만 타입을 명확하게 하고 싶다?
nullable ?
funcB ( String name, [int? age]){
print('$name, $age')
}

null 이면 안 된다?
혹은 계산에서 필요하다??
[] 안에서 기본값을 지정해주자.
기본값이 있을 때 내가 값을 넣으면 당연히 내가 넣은 값이 파라미터로 들어감.

그럼 required 이름


required 를 지우자.
지우면 null 값이 들어갈 수 있다는 것으로. type 을 제대로 지정하지 않으면


에러로 혼내준다.

?로 null 도 가넝한

이렇게 함수에 타입을 지정해주지 않아도 되지만.



타입을 지정해주면 조금 더 명확한 함수를 만들 수 있다.


이거 완전 js 아니냐
바로 return 되는 것이 특징
아니 이거 완전 c 아니냐
calculator 라는 함수를 만들어서 Operation 을 조금 더 실용적으로 사용할 수 있다!
void main(){
print(10,20,add); // 30
print(10,20,subt); // -10
}
typedef Operation = int Function(int x, int y);
int add(int x, int y) => x+y ;
int subt(int x, int y){
return x-y;
}
int calculator(int x, int y, Operation operation){
return operation(x,y);
}