본문 바로가기
Flutter

[Flutter / Dart] 기초 지식

by hymndaniel 2023. 6. 5.

노마드코더 강의 내용을 학습하면서 정리한 내용

 

Variables

var : 어떤 타입을 넣어도 상관없다. 변수에 처음으로 지정한 타입으로 설정됨. 

dynamic : 어떤 타입을 넣어도 상관없다. 처음에 지정한 타입과 달라도 변수를 변경할 수 있다.

late : 변수의 선언을 나중에 할 수 있다. 

final : 한 번 선언하고 변경되지 않는 변수에 사용한다. 

const : 컴파일 시점을 기준으로 변경되지 않을 변수. 앱스토어에 올라간 이후에 API로 받는 데이터와 같이 어떤 데이터가 올지 모르는 값을 쓸 수 없다. 

 

Data types

List

collection if 와 collection for를 지원한다. 

// collection if
bool isBabyBorn = true;
List family = ['dad', 'mom', if(isBabyBorn)'baby'];
// collection for
// list에 addAll() 메서드로 한번에 넣을 수도 있지만 가공이 필요할때도 있을 것이다.
List oldStock = ["summer", "winter"];
List currentStock = ["summer", "winter", for(String season in oldStock) "2022 $season"]; 

//["summer", "winter", "2022 summer", "2022 winter"]

Set

set에는 list와 달리 중복된 값을 넣을 수 없다 .

Set<int> numbers = {1, 2, 3, 4};
numbers.add(1);
numbers.add(1);
numbers.add(1);

// {1, 2, 3, 4}

 

Functions

void

void로 선언한 함수는 아무것도 return하지 않는다는 의미

return하는 값이 있다면 이에 맞게 함수의 타입을 정의

Fat arrow syntax

함수 내부에 코드가 한줄일때 사용

// 함수안에 여러 코드라인이 있을때는 아래 형태로 해야하지만
String helloWorld(String name){
	// fetch api
    return "hello $name";
}

// 한 줄인 경우는 아래와 같이 쓸 수도 있다
String helloWorld(String name) => "hello $name";

 

Named parameters

함수 내부 파라메터가 여러개인 경우, 입력 순서를 기억하기보다 파라메터를 명시적으로 받을 수 있는 구조를 만드는 것이 좋다

// {}로 감싸준다.
// default value를 지정하거나
// required로 만들어줄 수 있다.
String helloWorld({required String name, required String age, String country = "Korea"}) => "Hello $name, you are $age, and come from $country;

void main(){
	print(helloWorld(name: "tim", age: "5");
}

 

Typedef

함수의 return 타입을 alias로 지정해서 자료형이 헷갈릴때 도움을 받을 수 있음. 

typedef ListOfInts = List<int>; // 이 자료형을 부르는 이름을 마음대로 지정할 수 있다.

ListOfInts reverseListOfNumbers(ListOfInts list){
	var reversed = list.reversed;
    return reversed.toList();
}

 

Class

class Player {
	// 타입을 선언하고
	final String name;
	int xp;
	String team;
    int age;
    
    //named constructor parameters 선언한다.
    // 클래스를 호출할때 마다 기본으로 호출되는 기본 constructor
    Player({
    	required this.name,
        required this.xp,
        required this.team,
        required this.age,
    });
    
    // named constructor
    // 조금 다르게 동작하는 또 다른 constructor를 가지고 싶을때
    Player.createBluePlayer({required String name, required int age}):
    this.name = name,
    this.name = age,
    this.xp = 0;
    this.team = "blue",
    
    
}

void main() {
	// 객체를 생성하여 사용한다
	var player = Player(
    	name : "nico",
        xp: 1200,
        team: "blue",
        age: 10,
    );
    
    // 내가 정한값으로 property를 초기화시킨 player를 추가
    var bluePlayer = Player.createBluePlayer(
    	name : "nico",
        age: 21,
    );
}

 

 

 

 

 
 
 
 
728x90