전체 글
[Dart 3.0] 클래스 제한자 base, final, interface, sealed, mixin
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. #코드팩토리의플러터프로그래밍2판 #공부용
[Dart 3.0] switch 보호구문
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. #코드팩토리의플러터프로그래밍2판 #공부용
[Dart 3.0] switch (표현식, 패턴매칭, 엄격한 검사, 보호구문)
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 switch 표현식switch 문에서 값을 반환받을 수 있다.=> 로 조건에 맞을 때 값을 반환_ : default와 같은 의미로 사용String dayKor = '월요일';String dayEnglish = switch(dayKor){ '월요일' => 'Mon', '화요일' => 'Tues', _=>'Not Found',};📌 switch 패턴 매칭값 매칭, 리스트 매칭, 개수 매칭, 리스트 자료형 매칭, Record 타입 매칭 void(dynamic anything){ switch(anything){ case 'aaa': //값 매칭 break; case [1,..
[Dart 3.0] 레코드
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 레코드값을 묶어서 저장하는 방식 (Python의 튜플 같은 타입)📌 포지셔널 파라미터 방식의 레코드(타입, 타입, ...) 레코드변수명 = (값, 값, ...);값을 입력하는 순서대로 타입을 작성해준다.레코드 특정 순서의 레코드값을 가져오고싶다면 레코드변수명.$순서번호(String, int) person = ('민', 20);print(minjui); => ('민', 20)(String, int, bool) person = ('민', 20, true);print(person); => ('민', 20, true)print(person.$1); => 민 📌 네임드 파라미터 방식의 레코드({타입 변수명, 타입 변수명,..
[Flutter Dart] Stream
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 StreamStream에 주입되는 모든 값들을 지속적으로 받아온다.반환값을 딱 한번 받아내는 Future와는 달리 지속적으로 값을 받을 수 있다.StreamStream에 .listen을 하면 받아와진다. (스트림 구독 - 단일 구독, 브로드캐스트 구독 가능)함수에서 사용할 때,async* 키워드로 스트림함수를 정의하고, yield 키워드로 스트림 값을 전달StreamController로 스트림을 수동으로 생성하고 이벤트를 추가할 수 있다. 단일 값 제공Stream singleValueStream() async* { yield 42;}void main() async { singleValueStream().listen..
[Flutter Dart] async 와 await
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다.📌 async, awaitawait 를 쓴 함수에 async를 쓴다.await : 비동기 작업이 완료될 때까지 기다린다.async : await을 사용한 비동기 함수를 정의하는 키워드. 이 함수의 반환타입은 항상 Future이다.사용방식Future 함수명() async{ await 비동기작업; return 반환;}* try-catch로 async/await 코드에서 발생한 에러를 처리한다. 사용예Future fetchData() async { await Future.delayed(Duration(seconds: 2)); // 2초 대기 return "Hello, async/await!";}void main..
[Flutter Dart] 비동기 프로그래밍 - Future
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 Future비동기 작업을 처리할 때 사용하는 객체시간이 걸리는 비동기 작업 예: HTTP 요청, 파일 읽기/쓰기, 데이터베이스 쿼리타입선언형Future 1. Future(비동기작업할함수):Future 생성자를 사용해 비동기 작업 직접 정의 2. Future변수.then(결과처리함수): 비동기 작업 종료 후 완료된 결과 처리Future future = Future(() {return 'Hello'});future.then((data){print(data);}); 3. Future.delayed(Duration객체, 비동기작업함수): 일정 시간 지연후 작업을 수행Future fetchData() { return Fut..
[Flutter Dart] 캐스케이드 연산자 '..' 키워드
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 ..동일한 객체에 대해 여러 메서드나 속성을 연달아 호출할 때 사용하는 유용한 문법매번 객체의 이름을 사용하지 않아도 되서 편리하다.기본구조object ..method() ..method() ..property = 10주의사항- .. 이후 동일한 객체를 반환한다.- .. 새로운 객체를 반환하는 경우가 있는 경우 동일 객체에 대해 캐스캐이드가 불가능하다. 새로운 객체에대해 캐스캐이드를 하려면 스페이스를 더 들어가서 호출한다. ex) object ..property = object() ..property = 10 //리스트 초기화void main() { List numbers = [] ..add(..
[Flutter Dart] static
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 static클래스의 메서드와 변수를 클래스 자체에 귀속시킨다.여러개의 인스턴스를 생성 하더라도 인스턴스끼리 하나만 존재하게된다.인스턴스끼리 공유해야 하는 정보에 지정하면된다.class Counter{ static int i = 0; Counter(){ print(i++); }}void main(){ Counter count1 = Counter(); //0 Counter count2 = Counter(); //1} #코드팩토리의플러터프로그래밍2판 #공부용
[Flutter Dart] 제네릭 타입 - 객체지향의 꽃 <T>
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 제네릭특정 변수의 타입을 하나로 제한하고 싶지 않을 때 자주 사용한다.클래스, 메서드, 함수, 그리고 Mixin 에서 사용가능 하다.동일 제네릭문자를 가지고 있는 자리에 실행할 때 타입이 지정된다.사용형태클래스이름메서드이름함수이름minxin클래스이름흔히 쓰는 제네릭문자들T: 변수 타입 표현할 때 E: 리스트 내부 요소들의 타입을 표현할 때K: 키를 표현할 때V: 값을 표현할 때 Case 1. 클래스에서 제네릭 사용class Box { T value; Box(this.value); void display() { print("Value: $value"); }}void main() { Box intBox = ..
[Flutter Dart] 클래스 - 추상 클래스 'abstract' 키워드
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 abstract class인스턴스화 할 필요없이 상속과 인터페이스로만 사용할 때 사용.- 인스턴스화가 불가능하다.- 추상 메서드를 정의할 수 있다. - 함수 반환타입, 이름, 매개변수만 정의하고 함수의 바디 선언을 자식클래스에서 정의하도록 강제abstract class Person{ final String name; //추상 메서드 (상속으로 사용했을 때 반드시 정의해야함) //구현강제 void sayName(); //공통기능정의 int count(){ print(name.length); }}class Person1 extends Person{ /..
[Flutter Dart] 클래스 - mixin 클래스, with 혼합
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 mixin 클래스, with 혼합믹스인 클래스를 혼합(with)하여 특정 클래스에 원하는 기능들만 골라 넣을 수 있는 기능클래스 상속은 하나만 받을 수 있지만, 믹스인 클래스는 여러개 혼합(with)가능하다.- class를 상속받듯 믹스인 클래스를 상속받을 수 있다.- 믹스인 클래스의 인스턴스 생성은 불가능하다.- 믹스인클래스에 on 키워드로 특정 클래스를 상속받은 클래스에만 사용하도록 제한할 수 있다.믹스인에서는- 일반 클래스를 자식클래스에 상속(extends)한다고 하는 것을- 믹스인 클래스를 다른 클래스에 혼합(with)한다고 표현한다.//믹스인 클래스mixin Person1{ final name = '..
[Flutter Dart] 클래스 - 인터페이스로 사용 implements
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 인터페이스인터페이스는 공통으로 필요한 기능을 정의만 해두는 역할이다.implements 키워드로 원하는 클래스를 인터페이스로 사용할 수 있다.인터페이스 적용 개수에는 제한이 없다.인터페이스(implements)와 상속(extends)과의 차이점- 상속: 일부 기능 재정의 가능. (모든 기능이 extends 키워드로 상속되므로 따로 재정의해줄 필요가 없다.)- 인터페이스: 모든 기능을 재정의해야 함 (애초에 반드시 재정의할 필요가 있는 기능을 정의하는 용도이기 때문에 모두 정의해야 함)@override 키워드는 선택사항인터페이스는 클래스 계층을 만들지 않고 단순히 구현만 강제하는 방식이다. 상속과 달리 계층 구조가..
[Flutter Dart] 클래스 - 오버라이드 @override
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. #코드팩토리의플러터프로그래밍2판 #공부용
[Flutter Dart] 클래스 - 상속 extends, override
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 상속단 하나의 클래스만 상속받을 수 있다.class Person{ final Strina name; void printName(){ print(name); } void personInfo(){ print("이름: ${name}"); }}//extends 키워드를 통해 상속class Student extends Person{ final int age = 10; //super : 부모 클래스를 지칭 //생성하면서 부모 클래스의 생성자도 실행해줘야한다. (중요) Student(String name,):super(name,); //이렇게..
[Flutter Dart] 클래스 - 게터 세터
코드팩토리의 플러터 프로그래밍 2판 책을 참고하여 공부용으로 작성한 게시글입니다. 📌 게터/세터클래스 멤버변수에서 어떤 값이 노출되고, 어떤 형태로 노출되고, 어떤 변수를 변경가능하게 할지 유연하게 정할 수 있다.최근에는 객체지향 프로그래밍을 할 때 변수의 값에 불변성(final) 특성을 사용하기 때문에 세터는 거의 사용하지 않는다. 일반적으로 프라이빗 변수에 대해 _기호를 빼고 게터명, 세터명을 지정해서 게터,세터를 사용한다.게터 : 반환형 get 게터명{} - 게터는 매개변수를 전혀 받지 않는다.세터 : set 세터명(매개변수){} - 세터는 딱 하나의 변수만 매개변수로 받는다. (멤버변수에 대입되는 값)게터와 세터 사용- 변수처럼 사용하면된다.//person.dartclass Person..