
AVAudioPlayer vs AVPlayer AVAudioPlayer 백그라운드 여러개 재생, data 재생 가능하고 AVPlayer보다 간단한 오디오 재생 관련 기능만 제공한다 AVPlayer 실시간 스트림 기능 제공, 한 플레이어당 하나의 플레이 아이템에 대한 playback 정보를 제공하기 위해서 하나의 아이템만 재생함. (ios 버전마다 다르지만) 한 화면에서 여러개의 객체가 생성이 가능하지만(ios 버전마다 다르지만) 애플의 궁극적인 목적은 AVPlayer는 한 화면에서 하나만 생성하는게 정상적인 것으로 보이고 player에 playerItem을 교체해 주는것이 맞을것으로 보임. AVPlayer 사용법 1. AVPlayer 생성 // 여러 가지 재생할 때 let player = AVPlayer..
HTTP란? HyperTextProtocol (HyperText 타입의 데이터의 전송을 돕는 프로토콜의 일종) 웹 브라우저, 서버 웹 어플리케이션 모두 사용하는 인터넨 송용어 신뢰성 있는 데이터 전송 프로토콜로 사용함. 인터넷의 결함 및 약점에 대한 걱정 없이 기능 구현 가능. 웹 클라이언트와 서버 크게는 WWW의 기본 요소들 - 웹서버: 인터넷의 데이터 저장 및 HTTP 클라이언트가 요청한 데이터를 제공함. - 웹 클라이언트: 웹 서버에 HTTP를 요청함 리소스(웹 서버가 관리하는 웹 콘텐츠의 원인) MIME(Multi Purpose Interner Mail Extendsions, 다목적 인터넷 메일 확장) HTTP는 수천개의 데이터를 다루기 때문에 MIME이라는 "데이터 포멧 라벨"을 웹에서 전송되는..
Provider의 확장판. flutter_hooks와 결합하여 사용이 가능하고 dart, flutter 둘 다에서 사용이 가능함. 어디서든 변경을 감지할 수 있는 상태 관리 객체 사용 하는 이유 어디서든 상태 값에 접근 가능 다른 상태값(Provider)과 결합하여 사용이 용이함 상태 변화에 영향을 받는 부분에 대해서만 부분 렌더링이 가능. 로깅 등 다른 feature와 결합하여 사용 가능. // weatherProvider가 city를 참조함. final cityProvider = Provider((ref) => 'London'); final weatherProvider = FutureProvider((ref) async { final city = ref.watch(cityProvider); retur..

Flutter에서 전역 상태를 관리하거나 위젯간에 상태를 공유하기위하 사용함. widget간 데이터 공유가 가능하기는 하지만 한가지 상태 변화로 인해 트리 구조에서 state가 전달되기 때문에 불필요한 위젯들이 Rebuild 되면서 성능이슈가 나타나고 이를 provider가 해결해준다. 1. Provider 특징 코드 역할별(UI, API 요청, 모델 관리 등)로 클래스를 나눌 수 있음 데이터 공유 eg. 인증정보, 장바구니정도 등 앱 전반에서 사용 될 데이터 공유 좀 더 간단한 코드(bloc과 비교했을 때,,) 2. Provider 사용하기 기본적인 Provider 사용법 - 데이터의 생산과 소비 Provider.value( // int 타입 데이터 생산 value: 5, child: Container..

플루터는 Animation을 값의 변화와 시간을 통해 표현함. ex) opacity 1.0->0.0으로 변할때 2초가 걸린다 하면, 2초라는 정해진 시간 값(duration)동안 duration 변화(animation)을 구현하는 것. 1. package 추가 import package:flutter/animation.dart 2. Animation class Flutter의 Animation 시스템은 Animation 클래스를 기반으로 구성되어있음. value: animation의 현재 값, Animation라고 선언하는데 이 value의 타입이 T이다. status: AnimationStatus(animation의 상태를 나타내는 enum 타입) 타입으로 진행 방향(forward, reverse)과 ..
1.Json Serialization(직렬화) 웹서버와 통신하여 데이터를 주고받을 때 사용 수동 직렬화 dart의 jsonDeode()를 사용해서 디코드 할 수 있음. 모델 클래스 내에서 JSON 직렬화 class User { final String name; final String email; User(this.name, this.email); User.fromJson(Map json) : name = json['name'], email = json['email']; Map toJson() => { 'name': name, 'email': email, }; } // 사용 할 때 디코딩 Map userMap = jsonDecode(jsonString); var user = User.fromJson(use..