FrontEnd/Flutter

내가 보려고 만든 Dart 언어 공부

뽀루피 2024. 5. 31. 21:24

 

 

 

코드가 끝나면 ;(세미콜론) 하기

 

var는 값을 업데이트 할 수 있지만 같은 타입이어야 한다.

int, String 등 타입을 지정해줄 수도 있다.

  • var 쓰이는 경우 : 함수나 메소드 내부에 지역변수를 선언할 때
  • int, String 쓰이는 경우 : class에서 변수나 property를 선언할 때

 

Dynamic

dynamic는 어떤 타입이든지 들어갈 수 있는 타입을 말한다.

dynamic이 필요한 경우 : JSON형태로 값을 받아 어떤 타입이 들어갈 지 모르는 상황. dart가 어떤 타입인지 확인하도록 하면 Error를 줄일 수 있다.

void main() {
  dynamic name;
  if(name is String) {
    name.StringMethod
  }
  if(name is int) {
    name.intMethod
  }
}

 

Null Safety ? 

Null을 참조하더라도 Error가 뜨지 않도록 방지

String? name = 'name';  // name can be null
name = null;
if(name != null) {
  name.isNotEmpty;
}
// or
name?.isNotEmpty;

 

final

바꿀 수 없는 변수

final String name = 'name';
// name = 'name'; X 오류일어남

 

late

데이터를 나중에 받는 것

api를 받을 때 자주 쓰임

late final String name;
// api 받기
name = 'name';
// name = '12'; final이라 오류

만약 late인데 값을 할당받기 전에 print를 하려한다 하면 오류를 반환

api를 받기 전에 late로 변수를 지정해주고 api 받을 때 변수에 저장

 

const

final과 같이 상수를 저장하는 타입

컴파일 할 때 값이 정해져 있어야 한다(API 받을 때 비어있으면 안됨)

ex) api_key = qwejopQEFIOPasfaipjwef123j#%EFji;

 

num

double과 int 형의 부모에 해당.

둘 다로 변환 가능

 

Collection List

var numbers = [1,2,3,4];
List<int> numbers = [1,2,3,4];
numbers.add(1);
var giveMeFive = true;
var numbers = [1,2,3,4,if(giveMeFive) 5];
print(numbers);

⇒ Collection if

 

String에 변수 넣고 싶은 경우

변수를 넣으려면 $name

var name = 'chang';
var age = 10;
var greeting = "hello everyone, my name is $name and I'm ${age + 2}";
// hello everyone, my name is chang and I'm 12

계산할 것이 있다면 ${ } 중괄호 안에 넣는다

탈출 기호 \ : 자바와 같음

 

Collection for

var oldFriends = ['nico', 'chang'];
var newFriends = ['hello', 'overwatch', 'gamer', for(var friend in oldFriends) "$friend"
print(newFriends);
// [hello, overwatch, gamer, nico, chang];

 

Map

key와 value가 있는 객체

key와 value는 타입을 맞춰줘야 한다.

var player = {
  'name' : 'chang',
  'number' : 123,
  'value' : 234,
}
// Map<String, Object>

 

Map<List<int>, bool> player = {
  [1,2,3,4]:true,
};
// 이와같이 Map 타입을 지정해줄 수도 있다

 

Set

var numbers = {1,2,3,4};
// Set<int> numbers = {1,2,3,4}; 와 같다

모든 요소들이 유일하다. 중복 X

List처럼 순서가 있다.

{ } 대괄호로 감싸준다

 

name arguments

  • required 

String sayHello({ required String name, required int age, required String country, }) => "Hello $name, you are $age, and you came from $country";

: 파라미터를 필요로 한다.

 

  • default value
String sayHello({
  String name = 'chang',
  int age = 99,
  String country = 'korea'
}) {
  return "Hello $name, you are $age, and you came from $country";
}

: 파라미터를 안 작성해줘도 기본값이 들어간다.

 

Recap

파라미터에 이름을 넣는것. 12는 age, 'cc'는 country, 'hi'는 name

 

String sayHello({
  required String name,
  required String country,
  required int age,
}) {
  return "Hello $name, you are $age, and you come from $country";
}

// 이와같이 작성하는 파라미터를 named parameter라 한다
void main() {
  sayHello(
    age:12,
    country:'cc',
    name:'hi',
  )

Recap을 통해 파라미터를 사용하는 곳에서 어떤 파라미터를 사용하는지 쉽게 알아볼 수 있다

 

Optional & Positional Parameters

sayHello(1,2,3) ← 이를 positional parameter라 한다

Null 값을 받아도 함수가 컴파일 될 수 있도록 하는 것이 Optional parameter

String sayHello(String name, int age, [String? country = 'cuba']) =>
  'Hello $name, you are $age years old from $country';

void main() {
  var results = sayHello('name', 12);
  print(results);
}  // Hello name, you are 12 years old from cuba

[String? country = ‘cuba’] : country가 Null이라면 cuba를 할당하고 값을 받아온다면 그 값을 할당한다

 

QQ Operator

Null인지 비 Null인지에 따라 값 선택

String capitalizeName(String? name) =>
  name?.toUpperCase() ?? 'ANON';

left ?? right

left가 Null인 경우 right 반환

left가 Null이 아닌 경우 left 반환

 

QQ equals

Null일 때 값 할당

String? name;
name ??= 'name';
name = null;
name ??= 'another';
print(name); // another

left ??= right

left가 Null일 때 left에 right 할당

 

typedef

타입을 정의

typedef ListOfInts = List<int>;

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

void main() {
  print(reverseListOfNumbers([1,2,3]));
}

 

 

연산자

  • 산술 연산자: +, -, *, /, ~/, %, ++, --
  • 대입 연산자: +=, -=, *=, /=, ~/=, %=
  • 비교 연산자: >, >=, ==, <, <=, !=
  • 논리 연산자:&&, ||, !
  • 유형 테스트 연산자: is, is!
  • 삼항 연산자:  판별식 ? A문 : B문

'FrontEnd > Flutter' 카테고리의 다른 글

Flutter 명령어  (0) 2024.05.21
Equatable  (0) 2024.05.05