노마드코더 강의 내용을 학습하면서 정리한 내용
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
'Flutter' 카테고리의 다른 글
| [Flutter] 버튼 정렬 (0) | 2023.06.07 |
|---|---|
| [Flutter] FractionallySizedBox (0) | 2023.06.07 |
| [Flutter / GetX] Exception has occurred._CastError (Null check operator used on a null value) (0) | 2023.05.30 |
| [Flutter] vscode dart formatter (0) | 2023.05.24 |
| [Flutter] lint / linter (0) | 2023.05.24 |