728x90
이미 다른 프로그래밍 언어를 한개 이상 알고 있다고 가정하고 간단하게 설명한다.
기본적으로 OOP 를 이해한다는 가정하에 , 아래 문법만 익히고 들어가면 flutter 개발에 문제가 없을듯 하다.
다트의 진입점은 void main() 이다.
1. 선언
void main() {
int num1 = 10;
double num2 = 3.0;
String str = 'hello';
bool isTrue = true;
// int와 double은 num을 상속받는다
num num3 = 10;
num num4 = 10.0;
// 으로도 사용가능
//Type Check
print(num1 is int); // true
print(num2 is int); // false
print(num1.runtimeType) // int
}
2. 타입 추론
void main() {
var i = 10; //int로 추론
var d = 19.2; //double로 추론
var str = 'hello' // String로 추론
dynamic a = 10; // 개인적으로 다이나믹 지양함, 런타임때 타입 확정되는거라 별로임
}
3. 상수
void main() {
final String name = 'last hello' // 런타임에 결정되는 상수
const int age = 10; //컴파일 타임에 결정되는 상수 , 성능상 이점
}
4. Null
"타입?" 형식으로 선언해야만 nullable 이다. 아니면 null 대입 안됨.
void main() {
int age = null; // 불가능함
int? age2 = null; // 가능
int? age3; // nullable
// null을 주려면 타입에 ? 마크를 줘야함 (nullable)
String? name;
String name2 = 'hello';
// String != String? 붙어있다면 애초에 다른 타입이다
}
5. 조건
void main(){
int i = 10;
if (i>5) {
// 어쩌고
} else if (i > 3 ) {
// 저쩌고
} else {
// 끝
}
// && , || , >= , <= , == ,!= 등 조건문은 타 언어와 동일
}
6. 반복문
void main() {
for (var i = 0; i <= 10; i++) {
//break , continue; 어쩌고
}
while (true) {
// 어쩌고
}
}
7. 여러가지 오퍼레이터
void main() {
String? str;
str ??= 'hello' // str이 null이면 hello 대입
// or
str = str ?? 'hello' // 이렇게도 씀
var condition = isGood == true ? 'good' : 'bad'; // 3항연산자
}
8.함수
Optional Parameter 존재 (구글링)
int sum(int a, int b){
return a+b;
}
void main() {
sum(1,2);
}
// 외에도 옵셔널 파라미터라고해서 int sum(int a, int b, [int c]) 처럼 c를 옵셔널로 지정 가능
9.리스트와 셋
void main() {
//List
List<String> twice = ['momo', 'sana', 'mina'];
List<int> numbers = [1,2,3,4];
//index 모든 숫자는 0 부터 시작
print(twice[0]) // momo
// length , add , remove , indexOf 함수
//Set은 나머지 함수는 거의 비슷하게 있음 (중복 값이 없다)
// contains 함수 (set에서 포함인지 아닌지 리턴)
}
10.맵
void main() {
//Key , Value 가 짝을 꼭 이루자
Map<String, String> dict = {
'Korea' : '한국',
'Japan' : '일본',
'USA' : '미국'
}
// addAll,remove,key,values 함수 등 존재
print(dict['Korea']) // '한국' 이 프린트됨
dict['China'] = '중국' // 추가
}
11.클래스
기존 클래스와 똑같음. constructor 생긴것만 한번 보기.
void main() {
Animal 어흥이 = Animal('어흥이','150','어흐흐흥');
어흥이.bark();
}
class Animal {
String name;
int weight;
String voice;
Animal(String name, int weight, String voice)
this.name = name,
this.weight = weight,
this.voice = voice;
void bark() {
print('나는 ${voice} 하고 울지');
}
}
12.상속
void main() {
개발자 hong = 개발자(['Dart', 'Java','JavaScript'],'홍길동','서울');
print(hong.name);
print(hong.city);
print(hong.languages);
hong.say();
}
class 노동자 {
final String? city;
final String? name;
void shout() {
print("I am 나는 누구냐");
}
노동자({
this.city,
this.name,
});
}
class 개발자 extends 노동자 {
List<String>? languages;
@override
void shout() {
print("I am 개발 노동자");
}
개발자({
this.languages,
String? city,
String? name,
}) : super(city:city, name:name);
void say(){
print('나는 ${this.name}. ${super.city} 사람 이다.}');
}
}
13.mixin
// 13. mixin => 다중상속
void main() {
Human 고수 = new Human(....)
}
mixin Moveable {
void move() {}
}
mixin Runnable {
void run() {}
}
class Animal {}
class Human extends Animal with Moveable,Runnable {
.... 생략
}
14.Future
Promise 비슷하다고 생각하면 될 듯
void main() {
helloFuture().then((value)=>print(value));
}
Future<String> helloFuture() async {
await Future.delayed(Duration(seconds :3));
return 'Hello";
}