목록Flutter/Dart 문법 (14)
Foggy day
이번 포스팅에서는 Dart의 Isolate에 대해 알아보겠습니다. Isoate는 별도의 Thread에서 작업을 할 수 있도록 도와주는 클래스입니다. 시간이 오래 걸리는 작업을 하면서 화면은 계속해서 업데이트 하고 싶은 경우 사용하면 좋습니다. 1. 메인 스레드에서 작업2. Isolate.run3. Isolate.spawn 1. 메인 스레드에서 작업무거운 작업을 메인스레드에서 하게 되면 화면이 멈추는 현상이 발생합니다. 왜냐하면 Flutter는 기본적으로 단일 스레드를 사용하기 때문입니다. UI를 그리는 메인 스레드에서 무거운 연산 작업을 하게 될 경우 화면을 계속해서 업데이트할 수 없기 때문에 멈추는 것입니다. 이러한 것을 정크(jank)라고 합니다. 아래 메인 스레드에서 while문을 돌리는..
이번 포스팅에서는 StreamController의 broadcast에 대해 알아보겠습니다. stream 사용법 -2에서는 single listen을 사용했었습니다. 리스너를 한개만 붙여서 사용할 수 있었습니다. StreamController에는 여러개의 broadcast를 이용해 여러개의 listener를 사용할 수 있습니다. 1. StreamController.broadcast생성 2. Listener 추가 3. add, addStream 4. onListen, onResume, onPause, onCancel 5. 리스너 여러개 추가 5. close 실행 영상 1. StreamController 생성 여러개의 리스너를 사용하고 싶다면 생성할 때 broadcast 생성자를 사용해야 합니다. final ..
이번 포스팅에서는 StreamController에 대해 알아보겠습니다. StreamController는 stream을 구독할 수 있는 클래스입니다. 이전 포스팅에서 Stream을 사용해 데이터의 흐름을 관찰할 수 있다고 했습니다. 그리고 StreamController는 이러한 Stream을 편하게 관리할 수 있도록 도와줍니다. 1. StreamController 생성 2. Stream listen 3. button widget 4. add 5. addStream 6. onListen, onResume, onPause, onCancel 7. close 최종 영상 1. StreamController 생성 StreamController를 생성할 때 Stream의 데이터 타입을 설정해 줄 수 있습니다. 예제에서..
Dart에서는 Future와 Stream으로 비동기 프로그래밍을 구현할 수 있습니다. 이번 포스팅에서는 Stream에 대해 알아보겠습니다. Stream의 사전적인 의미는 흐르다는 뜻이며, 프로그래밍에서는 데이터의 흐름을 의미합니다. Stream을 사용한다면 지속적으로 데이터의 흐름을 관찰할 수 있습니다. 1. Stream 함수의 구조 2. Stream 함수들 3. StreamBasic Widget 1. stream 함수의 구조 Stream에서는 데이터를 전달하는 부분이 있고, 데이터를 받는 부분이 있습니다. 데이터 전달은 Stream 함수에서 하고, 데이터를 받는 것은 listen에서 합니다. 아래 코드를 보면 countStream이라는 Stream타입의 함수를 만들었습니다. 구조를 보면 Stream는 ..
이번 포스팅에서는 Future의 사용법에 대해 알아보겠습니다. Flutter에서는 Future와 Stream을 이용해 비동기 프로그래밍을 구현할 수 있습니다. 비동기와 동기를 간략하게 구분해 보자면 동기는 직렬적으로 작업들을 실행하는 것이고, 비동기는 병렬적/직렬적으로 작업들을 실행시키는 것입니다. 비동기 작업은 네트워크 통신을 할 때 많이 사용합니다. 특정 api를 호출해서 받아온 데이터를 이용해 또다른 api를 호출하는 로직이 많기 때문입니다. 여기서는 비동기에 대해서는 간략하게 언급만 하고, 예제와 함께 Future의 사용법에 대해 알아보겠습니다. 1. 문법의 형태2. Future.microtask3. Future.delayed4. Future.any5. Future.doWhile6. Future..
이번 포스팅에서는 클래스의 상속, 추상클래스, implements(interface), mixin을 사용하는 방법에 대하여 알아보겠습니다. 1. 상속 Dart는 Java나 Kotlin처럼 extends키워드를 이용해 1개의 클래스만 상속받을 수 있습니다. 이때 상속당하는 클래스가 부모클래스, 상속을 하는 클래스는 자식 클래스라고 합니다. Animal 클래스와 Lion 클래스가 있습니다. Lion 클래스는 extends라는 키워드로 Animal을 상속받고 있습니다. 이때 Animal클래스가 부모 클래스, Lion클래스가 자식 클래스입니다. 자식 클래스는 부모 클래스에 있는 함수와 변수를 사용할 수 있습니다. class Animal { void eat(){} } class Lion extends Animal..
개발에 있어서 객체지향과 클래스의 개념은 매우 중요합니다. 하지만 처음에 개념을 이해하기는 어렵기 때문에 개발을 해 나가면서 차츰 이해도와 숙련도를 높이는 것을 추천합니다. 이번 포스팅에서는 객체지향에 대한 개념을 상세하게 소개하는 것이 아니기 때문에 Dart에서 class를 사용하는 방법을 익히는 것 위주로 다루겠습니다. 1. 객체지향(OOP, Object Oriendted-Programming) 객체지향프로그래밍의 핵심 개념은 모든 데이터를 객체(Object)로 본다는 것입니다. 무슨 말이냐면 String 타입의 변수나, int 타입의 변수 또한 객체라는 것입니다. 다른 예로 우리는 사람인 것과 동시에 동물입니다. 사람이 더 구체적인 개념이므로 String과 같고, 동물이 포괄적인 개념이므로 객체와 ..
알고 있으면 좋은 문법들에 대해 예제를 추가했습니다. 이중에서 spreadOperator는 특히 많이 사용되고, where도 필요에 따라서 많이 사용할 수도 있습니다. 어떠한 형태로 사용하는지 익혀두면 좋습니다. import 'dart:math'; // The imported package 'collection' isn't a dependency of the importing package. // 나올 경우 yaml -> dependencies -> collection: any 추가 import 'package:collection/collection.dart'; class Advanced { Advanced() { spreadOperator(); functionalProgramming(); whereSy..
함수란? 함수는 코드 덩어리를 모아둔 것이라고 생각하면 됩니다. 그리고 모아둔 코드 덩어리를 변수처럼 특정 이름으로 만들어줍니다. 동일한 10줄의 코드를 여러번 사용해야 하는 경우 함수로 선언해둔 이름만 호출함으로써 간편하게 사용할 수 있습니다. 자세한 것은 예제를 보면서 확인하겠습니다. 함수에서 중요한 요소는 입력과 반환이 있습니다. 예제의 add 함수에는 int a와 int b를 입력하도록 만들었고, int를 반환하도록 선언했습니다. 반환 타입은 제일 앞에 선언해주고, 그다음에 이름, 소괄호 안에는 입력받을 변수를 선언해줍니다. 함수 안에서는 입력한 a와 b를 더해서 return해주고 있습니다. /// 더하기 함수 int add(int a, int b) { int age = a + b; return ..
이번 포스팅에서는 3가지 for문에 대해 알아보겠습니다. for문은 반복적인 작업을 수행할 때 사용하는 문법입니다. 모든 개발 언어에서 사용되고 있으니 한번 개념과 사용법을 익혀두면 앞으로도 계속 사용할 수 있습니다. 1. 기본적인 for문 가장 기본적인 for문에는 3가지 요소가 필요합니다. index 값을 선언 몇 번 for문을 반복할지 for문을 반복할 때 마다 index 값을 어떻게 변화시킬지 사용 형태는 예제와 같습니다. for 키워드를 사용하고, 소괄호 안에 필요한 요소들을 입력해주면 반복될 때 마다 중괄호 안의 코드가 실행됩니다. void normalForLoop() { /// int i = 0 -> 값 /// i 종료 조건, true면 통과, false면 종료 /// i++ -..