Flutter를 시작하기로 마음 먹고 '코드 팩토리'님의 인프런 'Flutter 3.0 앱 개발' 강의를 결제해 보았습니다.
Flutter는 구글에서 만든 Dart 프로그래밍 언어로 작성되며, 안드로이드와 iOS 애플리케이션을 동시에 개발할 수 있는 장점이 있다고 하네요.
강의 초반에는 Dart의 기초 문법과 프로그래밍 기법에 대한 강의가 있습니다.
프로그래밍 언어에 대해서 완전히 모르는 건 아니지만 Dart와 친해지기 위해, 그리고 개념을 다시 한번 복습하기 위해 기초 강의를 수강하였고 다음과 같이 정리해 보았습니다. 자바스크립트와 많이 비슷한 것 같고 타입 스크립트처럼 Dart에는 변수와 함수에 타입을 명시할 수 있습니다. 그리고 타입 추론 기능도 있어서 코드 가독성 측면에서도 훌륭한 것 같습니다.
Flutter를 시작하시는 분들께 도움이 되었으면 좋겠네요!!
// Dart 언어에서 사용되는 열거형입니다.
enum Status {
approved, // 승인됨
pending, // 보류 중
rejected, // 거절됨
}
void main() {
// 사용자 정의 함수인 addNumbers에 값을 넣어 결과값을 얻습니다.
int result = addNumbers(y: 20, x: 10);
int result2 = addNumbers(x: 10, y: 30, z: 40);
// 논리형 변수입니다.
bool isTrue = true;
bool isFalse = false;
// 문자열 변수입니다.
String name = '레드벨벳';
String name2 = '코드팩토리';
// var 키워드를 사용하면, Dart가 알아서 변수의 타입을 결정합니다.
var name3 = '블랙핑크';
var number = 20;
// 두 변수 모두 문자열을 저장하지만, 다른 값을 갖습니다.
String name4 = '레드벨벳';
String name5 = '슬기';
// dynamic은 모든 타입의 변수를 저장할 수 있습니다.
dynamic name6 = '코드팩토리';
dynamic number2 = 1;
// name2는 이전에 이미 선언되어있으므로, 새로운 값을 가진 name2를 다시 선언할 수 없습니다.
// var name2 = '블랙핑크'; // 이 줄은 오류를 일으킵니다.
// null safety 기능을 사용하면, name2가 null 값을 가질 수 있음을 나타냅니다.
String? name7 = '블랙핑크';
// final은 한 번 초기화하면 값이 변경되지 않는 변수를 선언합니다.
final name8 = '코드팩토리';
// const는 컴파일 시점에 값이 결정되는 상수를 선언합니다.
const String name9 = '블랙핑크';
// DateTime 클래스를 사용하여 현재 시간을 가져옵니다.
final DateTime now = DateTime.now();
// 정수형 변수입니다.
int number1 = 1;
// 논리 연산자를 사용한 예시입니다.
bool result3 = 12 > 10 && 1 > 0;
bool result4 = 12 > 10 && 0 > 1;
bool result5 = 12 > 10 || 1 > 0;
bool result6 = 12 > 10 || 0 > 1;
bool result7 = 12 < 10 || 1 > 0;
bool result8 = 12 < 10 || 0 > 1;
// 문자열과 정수를 저장하는 리스트입니다.
List<String> blackPink = ['제니', "지수", "로제", "리사"];
List<int> blackPink1 = [1, 2, 3, 4, 5, 6];
// 리스트에 항목을 추가하거나 제거합니다.
blackPink.add('코드팩토리');
blackPink.remove('코드팩토리');
// 문자열을 키로 하고, 다른 문자열을 값으로 가지는 사전입니다.
Map<String, String> dictionary = {
'Harry Potter': '해리포터',
'Ron Weasly': "론 위즐리",
"Hermione Granger": "헤르미온느 그레인저"
};
// 문자열을 키로 하고, 불리언을 값으로 가지는 사전입니다.
Map<String, bool> isHarryPotter = {
"Harry Potter": true,
"Ron weasley": true,
"Ironman": false
};
// 사전에서 키를 이용해 항목을 제거합니다.
isHarryPotter.remove("Harry Potter");
// 집합입니다. 집합은 중복된 값을 가질 수 없습니다.
final Set<String> names = {
"Code Facory",
"Flutter",
"Black Pink",
};
// 집합에 항목을 추가하거나 제거합니다.
names.add('Jenny');
names.remove('Jenny');
// 정수형 변수입니다.
int number3 = 3;
// 정수형 변수를 0으로 초기화합니다.
int total = 0;
List<int> numbers = [1,2,3,4,5,6];
// for 루프를 이용해 리스트에 있는 모든 숫자를 합합니다.
for(int i = 0; i < numbers.length; i++){
total += numbers[i];
}
// total을 다시 0으로 초기화합니다.
total = 0;
// for-in 루프를 이용해 리스트에 있는 모든 숫자를 합합니다.
for(int number in numbers){
total += number;
}
// while 루프를 이용해 total이 10이 될 때까지 숫자를 계속 더합니다.
while(total < 10){
total += 1;
if(total == 5) break; // total이 5가 되면 루프를 종료합니다.
}
// enum을 사용한 예시입니다.
Status status = Status.approved;
// 함수형 프로그래밍을 사용한 예시입니다.
// 함수를 변수에 할당하고, 해당 변수를 이용해 함수를 호출합니다.
Operation operation = add;
int result9 = operation(10, 20, 30);
operation = subtract;
int result10 = operation(10, 20, 30);
// 함수를 다른 함수의 인자로 전달하는 고차 함수(higher-order function)의 예시입니다.
int result11 = calculate(30, 40, 50, add);
int result12 = calculate(40,50,60,subtract);
}
// typedef를 이용해 함수 타입을 선언합니다.
typedef Operation = int Function(int x, int y, int z);
// 3개의 정수를 받아 합산하는 함수입니다.
int add(int x, int y, int z){
return x+y+z;
}
// 3개의 정수를 받아 차를 구하는 함수입니다.
int subtract(int x, int y, int z){
return x-y-z;
}
// 두 개의 숫자를 더하는 함수입니다.
int addNumbers({required int x, required int y, int z = 0}) {
return x + y + z;
}
// 고차 함수(higher-order function)입니다.
// 연산을 수행할 함수와 인자를 받아 결과를 반환합니다.
int calculate(int a, int b, int c, Operation operation){
return operation(a,b,c);
}
출처 : [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출! ( 코드팩토리 )