반응형
플러터는 다트(Dart) 언어를 사용합니다.
다트를 알아야 플러터로 앱 개발이 가능하므로 다트를 공부해야합니다.
다트는 구글에서 개발한 프로그래밍 언어입니다.
다트는 모바일이나 데스크탑 기기를 타겟으로 하는 네이티브 플랫폼과 웹을 타켓으로 하는 웹 플랫폼으로 컴파일 할 수 있습니다.
다트 공부하기
1. 다트패드에서 공부하기
다트패드 홈페이지에서 코드 작성 및 실행 가능합니다.
DartPad
dartpad.dev
코드 작성 후 Run 버튼을 클릭하여 실행 결과를 확인 할 수 있다.
![]() |
2. 안드로이드 스튜디오에서 공부하기
File -> New -> New Flutter Project ... 메뉴를 클릭하여 플러터 프로젝트를 생성한다.
lib/main.dart 파일에 코드를 작성 후 안드로이드 스튜디오 하단의 터미널 탭에서 dart lib/main.dart 명령어를 실행한다.
![]() |
기초 문법
메인 함수
void main() {
// 한줄 주석
/* 시작기호, 끝 기호 */
/* 여러 줄 주석
*
*
* */
/// 슬래시 세 개를 사용하면 문서 주석을 작성할 수 있습니다.
}
변수 선언
// 변수 타입
String(문자열), int(정수형), double(실수형), bool(불리언 true/false)
String s = '';
int i = 1;
double d = 1.0;
bool b = true;
// 자동으로 타입을 추론. 한번 추론된 타입은 고정됨.
var name = '이름';
// 추후에 타입이 바뀌면 에러
name = 1; // 에러
// dynamic 키워드를 사용하면 변수 타입을 고정하지 않고 사용 가능.
dynamic d_name = '다이내믹';
d_name = 1;
// final, const 는 처음 선언 후 값 변경이 불가하다.
final String f_str = 'final string';
f_str = 'new string'; // 에러 발생
const String c_str = 'const string';
c_str = 'new const'; // 에러 발생
// final 은 런타임, const 는 빌드타임 상수이다.
// DateTime.now() 는 실행되는 순간(런타임 시) 값이 정해진다.
final DateTime f_now = DateTime.now();
const DateTime c_now = DateTime.now(); // 에러 발생
// 컬렉션
// List
List<String> list = ['s1', 's2', 's3'];
print(list[3]); // s3
list.add('s4');
final list_where = list.where((str) => str == 's1' || str == 's4'); // Iterable (s1, s4)
print(list_where.toList()); // [s1, s4]
final list_map = list.map((str) => 'new $str'); // Iterable (new s1, new s2, new s3, new s4);
final list_reduce = list.reduce((v, e) => v + ', ' + e); // (반환 타입이 String) s1, s2, s3, s4
final list_fold = list.fold(0, (v, e) => v + e.length); // (반환 타입 아무거나 가능) 8
// Map
Map<String, String> map = {
'a' : 'a1',
'b' : 'b2',
'c' : 'c3',
};
print(map['b']); // b2
print(map.keys); // Iterable (a, b, c)
print(map.values); // Iterable (a1, b2, c3)
// Set
Set set = {'s1', 's2', 's3'};
set.contain('s2'); // true
set.toList(); // Set to List
Set.from(list); // Set from List
// enum
enum Status {
ready,
play,
done,
}
Status status = Status.ready;
print(status); // Status.ready
연산자
// 사칙연산
+
-
*
/ // 몫
% // 나머지
++
--
+=
-=
*=
/=
// null 관련 연산자
// nallable
double? number1 = 1;
// not null
double number2 = null; // 에러 발생
// null 로 초기화
double? number;
// null 이면 할당.
number ??= 3; // 3
// not null 이면 할당하지 않음.
number ??= 4; // 3
// 값 비교
>
<
>=
<=
==
!=
// 타입 비교
print(number is int); // false
print(number is double); // true
print(number is! int); // true
print(number is! double); // false
// 논리 연산자
&&
||
제어문
if
else if
else
switch() {
case 1 :
print();
break;
default:
print();
}
for(int i=0; i < 10; i++) {
print(i);
}
List<int> list = [1,2,3];
for(int n in list) {
print(n);
}
while() {
}
do {
} while()
함수와 typedef
void main() {
// 고정된 매개변수(포지셔널 파라미터)
print(addTwoNumbers1(2, 3));
// 이름이 있는 매개변수(네임드 파라미터)
print(addTwoNumbers2(a:2, b:3));
// 고정된 매개변수 기본값 지정
print(addTwoNumbers3(2));
print(addTwoNumbers3(2, 1));
// 이름이 있는 매개변수 기본값 지정
print(addTwoNumbers4(a:2));
print(addTwoNumbers4(a:2, b:1));
// typedef 는 일반적인 변수의 type 처럼 사용.
Operation oper = add;
oper(1, 2);
oper = subtract;
subtract(5, 2);
calculate(3, 4, add);
}
// 함수의 시그니처 정의.
typedef Operation = void Function(int x, int y);
void add(int x, int y) {
print('Add Result = ${x + y}');
}
void subtract(int x, int y) {
print('Subtract Result = ${x - y}');
}
// dart 에서 함수는 일급 객체(일급 시민)이므로 함수를 값처럼 사용 가능.
// typedef 으로 선언한 함수를 매개변수로 사용 가능.
void calculate(int x, int y, Operation oper) {
oper(x, y);
}
int addTwoNumbers1(int a, int b) {
return a + b;
}
int addTwoNumbers2({required int a, required int b}) {
return a + b;
}
int addTwoNumbers3(int a, [int b=3]) {
return a + b;
}
int addTwoNumbers4({required int a, int b=3}) {
return a + b;
}
기본 문법은 이정도로 정리하겠다.^^
반응형
'프로그래밍 > 플러터 Flutter' 카테고리의 다른 글
[플러터] 7. Flutter 프로젝트 생성(안드로이드 스튜디오) (0) | 2023.04.19 |
---|---|
[플러터] 6. 플러터 구조 (1) | 2023.04.18 |
[플러터] 4. 다트 언어 배우기(객체지향 프로그래밍) (0) | 2023.04.13 |
[플러터] 2. 안드로이드 스튜디오 설치(윈도우 10) (0) | 2023.04.09 |
[플러터] 1. SDK 설치(윈도우 10) (0) | 2023.04.08 |