Android 84

[Flutter] 플러터 ChangeNotifierProvider를 통해 Provider 구현

이번에는 ChangeNotifierProvider를 통해 Provider를 구현해보자. ChangeNotifier는 Flutter SDK에 포함된 클래스로 청취자에게 변경 알림을 제공해주는 것이다. 즉, ChangeNotifier를 통해 변화에 대해 구독할 수 있다. Provider는 이전에 간단하게 알아보았으므로 구현하는 방법에 대해서 바로 알아보자. [Flutter] 플러터 Bloc 패턴과 Provider 패턴 Flutter 앱을 개발하다 보면 자주 등장하는 Bloc 패턴과 Provider 패턴에 대해서 간단하게 알아보자. Bloc 패턴은 Google 개발자가 권장하는 Flutter의 상태 관리 시스템이다. 프로젝트를 관리하는데 도움 fre2-dom.tistory.com 라이브러리 아래 링크에 들어가..

Develop/Flutter 2021.12.22

[Flutter] 플러터 Bloc 패턴과 Provider

Flutter 앱을 개발하다 보면 자주 등장하는 Bloc 패턴과 Provider 에 대해서 간단하게 알아보자. Bloc 패턴은 Google 개발자가 권장하는 Flutter의 상태 관리 시스템이다. 프로젝트를 관리하는데 도움이 되며 프로젝트의 중앙 위치에서 데이터에 액세스 할 수 있다. 이 아키텍처는 다른 아키텍처와도 연관시킬 수 있다. 예를 들어 MVP와 MVVM이 있으면, 여기서 Bloc이 MVVM에 ViewModel로 대체 가능하다. 하지만 간단한 로직 하나 구현하는데도 패턴을 적용하면 최소 4개의 클래스를 작성해야 하는 불편함이 있다. 그래서 등장한 것이 Provider 이다. Provider 는 Bolc 패턴보다 쉽게 적용할 수 있어, 데이터 공유와 로직의 분리를 좀 더 간단하게 할 수 있다. P..

Develop/Flutter 2021.12.21

[Flutter] 플러터 비동기 Future 와 Stream

앱 개발을 하면서 비동기는 아주 중요한 개념이라고 생각하여 Flutter에서 주로 사용되는 비동기인 Future와 Stream의 개념을 다시 한번 집고 넘어가려고 한다. 비동기란 동기 처리가 끝난 후에 실행되며 Firebase 같은 DB에서 데이터를 가져오거나 API, 크롤링 등 외부에서 데이터를 가져오는 경우와 반응형 프로그래밍을 할 때 쓰인다. Flutter에서 비동기 처리를 하기 위해서는 Future와 Stream에 대해서 잘 알아야 한다. Future는 이전에 설명했듯이 앨범에서 이미지 가져오기, 현재 배터리 표시, 파일 가져오기, http 요청 등 일회성 응답에 사용된다. Stream은 위치 업데이트, 음악 재생, 스톱워치 등 일부 데이터를 여러 번 가져올 때 사용된다. 즉, 계속해서 데이터의 ..

Develop/Flutter 2021.12.20

안드로이드 앱(행운복권) 기술서

프로젝트명 행운복권 프로젝트기간 2020.11 ~ 2021.01 (3개월간) 참여인력 개인 프로젝트 사용한 기술스택 Kotlin, Android Studio, MVVM 디자인 패턴 프로젝트 소개 군 전역 후 관심이 있던 코딩에 대해서 제대로 배우고자 했고 그 중에서 하고싶었던 앱 개발을 하기로 했다. Kotlin을 공부하면서 앱 개발과 배포를 목표로 정했기 때문에 기안을 복학 전인 2021년 3월 전까지로 잡아 공부했다. 군대에 있을 때부터 복권에 관심이 많았는데 미국 복권에 대한 정보는 없는 것 같아 한국 복권과 미국 복권에 대한 정보를 전부 알려주는 앱을 개발하고자 했다. 그런데 미국 복권에 대한 정보를 찾기에는 쉽지 않았고 미국 복권에 경우 대행 업체로 사고 판다는 것을 알게 되었다. 그래서 미국 ..

Devfest Korea 2021 Android Jetpack Compose Codelabs

Devfest Korea 2021을 참여하면서 Android Jetpack Compose Codelabs 세션이 있는 것을 보고 코틀린의 새로운 기술을 배울 수 있는 기회라고 생각하여 참여하게 되었다. Devfest Korea 2021 - Compose Codelab 🤔 Jetpack Compose를 배워야 하는지 고민이신가요? sites.google.com Compose는 코틀린 언어를 사용하여 효율적인 코딩 경험을 제공하는 선언형 UI 툴킷이다. 분리된 플랫폼을 통해 OS와 관계없이 짧은 간격으로 업데이트가 진행되며, Android 5.0 이상의 버전에서 어떤 기기든 동일한 UI를 구현할 수 있다. 트위터를 포함한 2,000개가 넘는 앱이 Compose를 이미 적용하고 있다고도 한다. 11월 1일부터..

스타트 업(Matrios) 안드로이드 앱 개발 아웃소싱

🔗 Link MATRIOS Hi, We’re MATRIOS 상상 속의 기술을 실현시켜 세상에 긍정적인 변화를 일으키고자 하는 스타트업, 매트리오즈입니다. Study Hard, Really Hard 국내 유일의 On-device 시선추적 AI 기술 보유 스타트업 Deep-tech matrios.co.kr ℹ️ Info 매트리오즈는 AI 기반의 모바일 아이트래킹 프로그램을 개발 중인 스타트업으로, 아이트래킹 기술을 별도 기기 없이 내장 카메라가 달려 있는 컴퓨터, 핸드폰 등에서 프로그램을 다운만 받으면 작동가능하도록 시도했고 기술 개발에 성공했습니다. 진행기간 : 21.07.01 - 21.11.30 주최 : Matrios ✏️ Activity Android 개발 협업 진행(Android 개발자, 인공지능 개..

Project/Outsourcing 2021.11.25

[kotlin] 코틀린 Android 코루틴(Coroutine) 활용

이번에는 코틀린에서 자주 사용되는 코루틴(Coroutine)에 대해서 알아보도록 하자. 코루틴은 스레드와 기능적으로 비슷하지만 하나의 스레드 내에서 여러 개의 코루틴이 실행되는 개념으로 비동기 프로그래밍에 권장하는 동시 실행 설계 패턴이다. 이전에 알아보았던 MVVM 패턴에서도 코루틴을 사용하여 텍스트를 DB에 저장할 때 사용된 것을 확인할 수 있다. 코루틴은 단일 스레드 내에서 여러 개의 코루틴을 실행할 수 있기 때문에, 많은 양의 동시 작업을 처리할 수 있으면서 메모리 절약의 장점이 있다. 쉽게 생각해서 하나의 스레드 내에 여러 개의 코루틴을 통해 작업을 할 수 있는 것이다. 코루틴에 대해서 간단하게 알아보았으니 활용하는 방법에 대해서 알아보도록 하자. Gradle 설정 우선 프로젝트를 하나 생성하고..

Develop/Kotlin 2021.11.19

[Flutter] 플러터 FutureBuilder를 사용한 비동기 처리

이전에 Dart 문법에 대해서 알아보면서 비동기 처리에 대해서 다뤄보았다. 이번에는 이전에 다뤘던 비동기 처리의 개념 중 자주 사용되는 FutureBuilder에 대해서 알아보자. [Flutter] 플러터 Dart(다트) 문법 정리 이번에는 플러터에서 사용되는 Dart 문법에 대해서 알아보자. DartPad dartpad.dev Dart 언어만을 다루기 때문에 위 링크를 통해 Dart 문법에 대해서만 확인하면서 진행하도록 하자. var와 dynamic Dart에서 Ja fre2-dom.tistory.com 비동기 처리에 대해서 잘 모른다면 위 링크를 통해 한번 읽어보고 오면 이해하기 더 좋을 것 같다. FutureBuilder는 Future를 사용하는 이유와 같이 데이터를 모두 다 받기 전에 먼저 데이터..

Develop/Flutter 2021.11.16

[Flutter] 플러터 Dart(다트) 문법 정리

이번에는 플러터에서 사용되는 Dart 문법에 대해서 알아보자. DartPad dartpad.dev Dart 언어만을 다루기 때문에 위 링크를 통해 Dart 문법에 대해서만 확인하면서 진행하도록 하자. var와 dynamic Dart에서 Java와 비슷하게 변수를 선언하지만 Java와 다르게 타입 추론이 가능하다. String name = '준장'; var friend = '준혁'; // 타입 추론 변수 name은 String으로 타입을 명시해주었지만 변수 friend 같은 경우, 타입을 var로 지정하여 타입 추론을 하게 했다. 여기서 주의할 점은 var 타입으로 변수를 선언할 때 초깃값을 참조하여 해당 변수의 타입을 추론하기 때문에 한번 var로 선언한 변수는 다른 타입의 값으로 넣어서는 안 된다는 것..

Develop/Flutter 2021.11.09

[Flutter] 플러터 Bottom Navigation Bar 구현

이번에는 앱 개발에 많이 쓰이는 Bottom Navigation Bar를 구현해보자. Bottom Navigation Bar는 동적으로 화면이 변화하므로 Stateful Widget을 통해 구현해야한다. main.dart import 'package:flutter/material.dart'; import 'package:flutter_application_1/home.dart'; void main() => runApp(MyApp()); // 프로그램을 실행할 때 MyApp 부터 실행하겠어! // StatelessWidget은 변화지 않는 화면을 작업할 때 사용. // 변화는 화면을 작업 하고싶을 경우에는 StatefulWidget을 사용. class MyApp extends StatelessWidget ..

Develop/Flutter 2021.11.05