목록[Flutter] (37)
민프
이번 포스팅에서는 Flutter에서 IOS 인앱결제 하는 부분을 다뤄보려고 합니다. IOS 인앱결제에 궁금하신 분들은 아래 포스팅을 참고하시길 바랍니다. https://minf.tistory.com/entry/IOS-AppleIOS%EC%9D%98-%EC%9D%B8%EC%95%B1-%EA%B2%B0%EC%A0%9C%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90 [IOS] Apple(IOS)의 인앱 결제에 대해서 알아보자 이번 포스팅에서는 IOS 인앱 결제 관련 지침에 대해서 다뤄보겠습니다. IOS를 출시할 때 비지니스에 대해서 명확하게 정의가 되어있어야하고, 관련 기능 구현이 되어야 출시가 될 수 있습니다. 즉 minf..
이번 포스팅에서는 애플 로그인 구현을 해보겠습니다. 현재 회사에서 개발하고 있는 앱에 SNS로그인이 있는데, 이 경우 애플 ID로 로그인하는 기능이 같이 있어야만 검사가 통과되어서 이번에 애플 로그인을 구현해보려고 한다. 애플 개발자 문서를 참고하여 애플 로그인 구현을 진행하겠습니다. ServiceID, KEY ID 등..은 Android에서 쓰이는 부분인데 다음 포스팅에서는 해당 ID값들을 가지고 Android에서 애플 로그인을 구현해보는 포스팅을 해보겠습니다. 1. App ID 등록 && KEY 설정 이전에 포스팅했던 부분을 참고하셔서 만들어주시면 됍니다. [IOS] IOS 배포하기 4. App ID 등록 안녕하세요 이번 포스팅에서는 App ID를 등록하는 부분을 다뤄보겠습니다. 1. Xcode에서 ..
이번 프로젝트에서 같이 일하는 팀원분의 코드를 보는 도중 모든 유저의 정보(Token 값들 포함)를 SharedPreferences다 넣고 사용하는 것을 목격했습니다.. 그래서 이런 부분은 SharedPreferences보다는 android-KeyChain, IOS - KeyStore로 적용하는게 보안적으로 더 좋다고 말씀드렸고, 리펙토링을 진행하여 수정을 완료했습니다. 그럼 왜 SharedPreferences말고 SecureStorage를 사용해야 하는걸까요? Flutter에서 정보를 저장하기 위해서 일반적으로 SharedPreferences 패키지를 많이 사용합니다 근데 토큰과 같이 민감한 정보 or 로그인 정보 or 유저정보 들이 쉽게 노출이되기에 보안에 취약하므로 개인정보는 SecureStora..
이번 포스팅에는 Flutter와 블록 라이브러리를 사용하여 사용자가 스크롤할 때 네트워크를 통해 데이터를 가져오고 로드하는 앱을 구현하겠습니다. API로는jsonplaceholder를 데이터 소스로 사용합니다 . (https://jsonplaceholder.typicode.com/posts?_start=0&_limit=2) 이번 프로젝트에서 패키지로 Equatable, Bloc Concurrency 가 있는데 사전 지식이 있으면 본 포스팅에 이해가 됨으로 참고하시길 바랍니다. 그럼 프로젝트 구조부터 알아보겠습니다. 프로젝트 구조 애플리케이션은 기능 기반 디렉터리 구조를 사용합니다. 이 프로젝트 구조를 통해 자체 포함된 기능을 통해 프로젝트를 확장할 수 있습니다. 이 예제에서는 단일 기능(게시 기능)만 있..
먼저 Stream에 대한 사전 이해가 있어야 합니다. Stream에 대해서 모르시는 분은 이전 포스팅을 참고해주시면 될 것 같습니다. 라이브러리 공식 홈페이지를 보면 Steam의 일반적인 변환 연산자를 추가하는 확장 방법 이라고 나와있습니다. 이 패키지를 사용하면 스트림의 데이터를 쉽게 수정, 필터링, 조합할 수 있습니다. 예를 들어, 특정 시간 동안 스트림의 이벤트를 묶거나, 스트림의 데이터를 변환하거나, 여러 스트림을 하나로 병합하는 등의 작업을 수행할 수 있습니다. 예제 코드를 보면서 설명해드리곘습니다. 예제 코드로는 stream_transform 라이브러리에서 제공하고 있는 debounce, buffter, throttle에 대해서 정리해보겠습니다. Debounce debounce는 스트림에서 연..
이번 포스팅은 Flutter Bloc의 비동기 이벤트 처리방식에 도움을 주는 Bloc Concurrency 라이브러리에 대해서 알아보겠습니다. 소개 Bloc Concurrency 공식홈페이지 설명에 따르면 bloc_concurrency 패키지는 ember concurrency에서 영감을 받아 만들어진 사용자 정의 이벤트 변환기를 제공하는 Dart 패키지입니다. 이 패키지는 bloc 상태 관리 패키지와 함께 사용되도록 설계되었습니다. bloc_concurrency는 bloc에서 이벤트를 처리하는 방식을 관리하는 데 도움이 되는 이벤트 변환기를 제공합니다. ember concurrency에서 영감을 받았다고 하는데 ember concurrency는 무엇일까요? ember concurrency는 쉽게 말해 비..
이번 포스팅에서는 Equatable 라이브러리에 대해서 알아보곘습니다. 결론적으로 Equatable는 Dart에서 객체의 동일성을 쉽게 비교할 수 있게 해주는 패키지입니다. 이를 확장하면 == 연산자와 hashCode 메서드를 자동으로 오버라이드할 수 있어, 객체의 동일성 비교를 간편하게 수행할 수 있습니다. 아래 소스코드와 함께 설명을 해보곘습니다. import 'package:equatable/equatable.dart'; class Person { final String name; final int age; Person({required this.name, required this.age}); } void main() { final person1 = Person(name: 'Alice', age: ..
이번 포스팅은 BLoC 패턴을 적용한 카운터 앱에 간단하게 적용해보겠습니다. 참고 예제는 공식홈페이지 예제를 참고하였습니다. https://bloclibrary.dev/#/fluttercountertutorial Bloc State Management Library Official documentation for the bloc state management library. Support for Dart, Flutter, and AngularDart. Includes examples and tutorials. bloclibrary.dev 해당 예제에서는 Cubit이라는 개념이 등장하는데 간단하게 BLoC와 장단점을 비교해보겠습니다. Cubit의 장점 간결성: Cubit은 간단하게 상태와 상태를 변경하는 ..
이번 포스팅에서는 BLoC에 대해서 알아보겠습니다. 먼저 개념에 대해서 정리하고 다음은 예제 코드를 통해서 알아보겠습니다. 소개 BLoC는 공식홈페이지에 보면 아래와 같이 나와있습니다. Bloc makes it easy to separate presentation from business logic, making your code fast, easy to test, and reusable. 해석해보면 Bloc 패턴은 프레젠테이션과 비즈니스 로직을 분리하여 코드를 빠르고, 테스트하기 쉽고, 재사용 가능하게 만드는 데 도움이 된다고 합니다. 그렇다면 BLoC의 핵심은 무엇일까요? Simple: Easy to understand & can be used by developers with varying skil..
이번 포스팅에서는 FadeInImage Widget을 사용하여서 위 GIF와 같이 이미지가 로딩되는 동안의 이미지 (새 사진)와 이미지가 완료 된 후 이미지 (산 사진)를 애니메이션과 함께 적용해보려고 합니다. FadeInImage는 아래 사진과 같이 2가지 옵션을 가집니다. assetNetWork는 네트워크에서 최종 이미지를 로드하는 동안 asset폴더에 저장된 이미지를 사용하는 위젯을 생성하는 것이고, memoryNetwork는 네트워크에서 최종 이미지를 로드하는 동안 메모리에 저장된 이미지를 사용하는 위젯을 만드는 것 입니다. 적용한 코드는 아래와 같습니다. FadeInImage.assetNetwork( fit: BoxFit.cover, placeholder: "assets/images/placeh..