목록dart (12)
Foggy day

이번 포스팅에서는 MethodChannel에 대해 간략히 살펴보고, Android Native와 통신하는 방법을 알아보겠습니다. Flutter는 MethodChannel을 사용해서 각 플랫폼과 통신할 수 있습니다. 메소드 채널은 비동기방식이며 FIFO 순서를 보장합니다. 1. Flutter -> Android Native 2. Android Native -> Flutter 1. Flutter -> Android Native 먼저 볼 것은 Flutter에서 Android Native의 함수를 호출하는 방법입니다. - Flutter(Dart) Flutter 측면에서 호출하는 방식은 간단합니다. MethodChannel 클래스를 생성하고, 생성자에 채널 이름으로 원하는 문자열을 넣습니다. 그리고 invokeM..

이번 포스팅에서는 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는 ..

이번 포스팅에서는 클래스의 상속, 추상클래스, implements(interface), mixin을 사용하는 방법에 대하여 알아보겠습니다. 1. 상속 Dart는 Java나 Kotlin처럼 extends키워드를 이용해 1개의 클래스만 상속받을 수 있습니다. 이때 상속당하는 클래스가 부모클래스, 상속을 하는 클래스는 자식 클래스라고 합니다. Animal 클래스와 Lion 클래스가 있습니다. Lion 클래스는 extends라는 키워드로 Animal을 상속받고 있습니다. 이때 Animal클래스가 부모 클래스, Lion클래스가 자식 클래스입니다. 자식 클래스는 부모 클래스에 있는 함수와 변수를 사용할 수 있습니다. class Animal { void eat(){} } class Lion extends Animal..

알고 있으면 좋은 문법들에 대해 예제를 추가했습니다. 이중에서 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++ -..

이번 포스팅에서는 List, Map, Set에 대해 알아보겠습니다. 1. List List는 같은 타입의 자료를 여러개 담을 수 있습니다. 순서가 있으며 다른 언어와 다른 점은 Dart에서는 Array(배열)과 List를 구분하지 않고, List를 사용합니다. List의 순서는 0번부터 시작됩니다. 기본적인 선언 형태는 List 변수명 = []; 입니다. 안에 선언해준 타입과 동일한 타입만 List에 넣을 수 있습니다. List listString = ["aa", "bb", "cc"]; List listInt = [1, 2, 3, 4, 5]; List listBool = [true, true, true]; List는 가지고 있는 데이터를 추가, 삭제할 수 있습니다. - 데이터 추가 데이터를 추가할 때 a..

이번 포스팅에서는 If, Swtich, 삼항연산자를 알아보겠습니다. 1. If문 코딩할 때 가장 많이 사용되는 조건문입니다. 특정 값들을 비교해서 다른 이벤트나 UI를 연출하는 등 다양한 상황에서 사용됩니다. 키워드로는 if, else if, else 세가지가 있습니다. 시작은 무조건 if로 해야되지만 if 이후에 else if나 else를 사용하는 것은 자유입니다. else는 마지막에만 올 수 있고, else 이후에 else if나 if를 사용할 수 없습니다. 괄호는 true와 false의 값만 입력할 수 있고, true가 되면 해당 중괄호에 진입할 수 있습니다. 형태는 아래와 같습니다. void conditionalIf() { String value = "d"; if (value == "a") { p..