Dart

    [ Dart ] 에러, 예외 상황 제어하기

    assert 💬 개발 모드의 debug 중일 때에만 영향을 미치며, 배포 코드에서는 프로그램에 영향을 주지 않음 💬 조건이 거짓인 경우 실행이 중단된다. assert(condition, optionalMessage); ◻️ condition : boolean이 나올 수 있는 조건을 넣으며, false이면 프로그램이 중단된다. ◻️ optionalMessage : 프로그램 중단 시 나올 메시지를 설정할 수 있다. assert(urlString.startsWith('https'), 'URL ($urlString) should start with "https".'); ... https://m.blog.naver.com/mingdyuo/221803704762 [flutter, dart] 에러, 예외상황 제어하기..

    [ Flutter ] Null Safety

    [ Flutter ] Null Safety

    Null Safety 💬 널 안정성은 다트 2.12.0 및 플러터 2부터 공식 지원된다. Null Safety란? 💬 널 안정성 기능을 활성화하고 아래의 코드를 작성하면 에러가 발생한다. int i = null; // error 💬 널 안정성을 도입하면 해당 변수 타입이 널을 허용하는지 아닌지를 정확하게 대입해야 한다. 💬 널을 대입하기 위해서는 타입 옆에 ?를 붙이면 되며, ?가 붙어있지 않은 타입은 널을 대입할 수 없다. int? i = null; // OK 타입 시스템의 변화 💬 기존의 다트는 모든 타입이 널이 대입될 수 있었고, 널 타입은 최하위 타입이었다. 💬 널 안정성이 적용되면서 기존 타입에 널이 대입될 수 없으므로, 널 타입은 어떠한 타입과도 관계없는 별도 타입으로 취급된다. 💬 또한, 널..

    [ Dart ] 기타 유용한 기법

    cascade 구문 (..) 💬 동일한 객체에 대해서 작업을 이어서 수행할 수 있다. 💬 객체를 반환하는 함수만 사용 가능하다. final items = [1, 2, 3, 4, 5]; var result = items; result.add(6); result.remove(2); print(result); // 1, 3, 4, 5, 6 // 계단식 표기법 .. 연산자 print(items ..add(6) ..remove(2)); // 1, 3, 4, 5, 6 컬렉션 if 💬 컬렉션 내부에 if 문이나 for 문을 사용할 수 있다. 하지만 { } 블록은 사용할 수 없다. bool promoActive = false; if (promoActive) { print([1, 2, 3, 4, 5, 6]); } els..

    [ Dart ] 함수형 프로그래밍

    일급 객체 💬 함수를 표현할 수 있는 것들은 모두 값으로 취급할 수 있으므로, 다른 변수에 함수를 대입할 수 있다. void greeting(String text) { print(text); } void main() { var f = greeting; // 함수를 다른 변수에 대입할 수 있음 f('hello'); } 💬 다른 함수의 인수로 함수 자체를 전달하거나 함수를 반환받을 수도 있다. void something(Function(int i) f) { f(10); } void main() { something((value) { print(value); }); } ▫ Function은 함수를 매개변수로 전달하고자 할 때 사용하는 타입이다. ▫ f() 함수는 익명 함수이며, 예제에서는 print를 수행하고..

    [ Dart ] 컬렉션

    List 💬 순서가 있는 자료를 담는 컬렉션 💬 다트에서는 배열을 제공하지 않는다. 💬 컬렉션도 타입 추론을 사용할 수 있으므로 일반적으로 var를 사용한다. // List items = ['짜장', '라면', '볶음밥']; var items = ['짜장', '라면', '볶음밥']; items[0] = '떡볶이'; print(items.length); print(items[2]); 스프레드 연산자(...) 💬 컬레션을 펼쳐주는 연산자로 다른 컬렉션 안에 컬렉션을 삽입할 때 사용한다. var items = ['짜장', '라면', '볶음밥']; // '짜장', '라면', '볶음밥' var items = ['떡볶이', ...items, '순대']; // '떡볶이', '짜장', '라면', '볶음밥', '순대' ..

    [ Dart ] 객체 지향 프로그래밍

    인스턴스 생성 💬 new 키워드를 생략하여 인스턴스화할 수 있다. var person = new Person(); var person2 = Person(); 접근 지정자 💬 변수명 앞에 _ 기호가 있으면 private, _ 기호가 없으면 public이다. 게터, 세터 💬 변수명 앞에 _가 붙어 private 변수인 경우, 클래스 외부에서 접근하기 위해서는 게터와 세터 메서드를 작성해줘야 한다. class Person { String _name; String get name => (_name == null) ? 'Ryong' : _name; set name(String name) => _name = name; } main() { Person person = Person(); person.name = 'He..

    [ Dart ] 분기와 반복

    삼항 연산을 활용한 분기 [ 조건 ] ? [ 참일 때 ] : [ 거짓일 때 ] var todo = isRainy ? '빨래를 하지 않는다' : '빨래를 한다'; switch case 💬 여러 요소들을 검사할 때 switch case를 사용한다.

    [ Dart ] 함수

    함수 💬 리턴 타입으로는 모든 타입과 void를 지정할 수 있으며, void는 생략이 가능하다. print() 함수 💬 원하는 메시지를 출력하는 함수 💬 변수 앞에 $ 기호를 붙여서 문자열 내에 변수를 삽입할 수 있다. 방법은 코틀린과 동일하다. String _name = 'Ryong'; int _age = 20; main() { print('$_name은 $_age살입니다.'); print('$_name은 ${_name.length} 글자입니다.'); } 최상위 함수 💬 클래스 밖에 작성하는 함수로, 어디에서나 호출할 수 있다. 💬 클래스 내부에 선언된 함수이더라도 static 키워드를 붙이면 최상위 함수처럼 사용할 수 있다. 익명 함수 ([인수명]) { [동작 또는 반환값] } (number) { r..

    [ Dart ] 기본 문법

    [ Dart ] 기본 문법

    다트 코드 실행 사이트 https://dartpad.dev DartPad dartpad.dev 주석 💬 // : 한줄 주석 💬 /* ... */ : 여러 줄 주석 💬 /// : 문서 주석 문장 💬 문장 끝은 항상 세미콜론으로 표시 변수 기본 타입 String name = "Ryong"; bool b = true; int i = 10; double d = 10.0; 💬 int와 double은 num 타입에 포함된다. ◻️ 하지만, 타입 추론 지원으로 인해 num 타입은 잘 쓰지 않는다. 💬 다트에서는 자동 형변환을 지원하지 않는다. int a = 10; double b = a; // 에러 💬 num 타입에는 int와 double 타입 모두 대입할 수 있다. int a = 10; double b = 20.0..