본문 바로가기

Flutter35

[Flutter] 플러터 인앱(in_app_purchase) 결제 상품 구매 구현하기 플러터(Flutter)를 사용하여 앱 내에서 상품을 구매하고 소비하는 인앱 결제 기능을 구현하는 방법을 소개합니다. 인앱 결제는 사용자가 앱에서 콘텐츠, 기능, 서비스 등을 구매할 수 있도록 하는 강력한 기능입니다. 이 글에서는 플러터에서 인앱 결제를 구현하는 방법을 간단하게 설명합니다. 먼저, 진행하기 전에 가장 궁금하신 게 결제자를 어떻게 판별하고 관리하는지 궁금하실 거예요. 구글에서 전체적으로 관리를 제공해주지 않기 때문에 별도로 백엔드를 구현하셔서 주문 고객 등 관리를 별도로 해주셔야 합니다. 필요한 패키지 설치 플러터 인앱 결제를 구현하기 위해 필요한 패키지를 설치하려면, pubspec.yaml 파일에 아래와 같이 in_app_purchase 패키지를 추가하세요. in_app_purchase |.. 2023. 3. 19.
[Flutter] 어노테이션(annotation) `@` 사용해보기 어노테이션은 개발자가 소스 코드를 정적으로 분석하여 추론할 수 없는 의도를 표현하는 데 사용할 수 있는 주석입니다. 어노테이션 종류 @alwaysThrows 해당 함수가 항상 예외를 던진다는 것을 나타내는 어노테이션입니다. 이 어노테이션이 붙은 함수를 오버라이드하는 함수도 동일한 계약을 준수해야 합니다. @doNotStore 해당 메서드, 게터, 혹은 최상위 게터나 함수에서 반환된 값을 필드나 최상위 변수에 저장하지 말아야 한다는 것을 나타내는 어노테이션입니다. @experimental 해당 라이브러리나 클래스의 API가 실험적이며 언제든지 변경될 수 있다는 것을 나타내는 어노테이션입니다. 이 어노테이션이 붙은 API가 변경되어도 해당 패키지의 버전이 업데이트되지 않아도 됩니다. @factory 해당 인.. 2023. 3. 19.
[Flutter] Gradlew signingReport를 이용한 SHA1 및 SHA256 키 확인 간편 가이드 Gradlew signingReport를 사용하여 SHA1과 SHA256 키를 쉽게 확인하는 방법을 소개합니다. 명령어 실행 각 프로젝트 폴더에서 터미널로 `/android` 폴더로 이동하여 아래 명령어 실행 gradlew signingReport 아래와 같이 `Config: debug`, `Config: release`으로 `SHA-1`, `SHA-256` 값을 확인할 수 있습니다. 2023. 3. 18.
[Flutter] Error (Xcode): 34 duplicate symbols for architecture arm64 해결하기 위 오류의 문제는 관련 패키지 혹은 라이브러리가 잘못되었을때 발생하는 문제가 많습니다. 따라서 pod를 초기화하고 다시 설치해주시면 됩니다. pod 초기화 `ios` 폴더에서 명령어 실행 pod deintegrate pod cache clean --all pod install 2023. 2. 14.
[Flutter] IOS Update to recommended settings 경고 끄기 Xcode에서 프로젝트 항상 경고 문구가 뜨는데 바로 Update to recommended settings라고 뜹니다. 이 경고를 끄기 위해서는 Podfile에 코드 한 줄을 넣어주면 무시할 수 있습니다. 경고 무시하기 `ios/Podfile` 하단에 inhibit_all_warnings! 추가 후 빌드와 Xcode 재시작 해주면 사라집니다. target 'Runner' do use_frameworks! use_modular_headers! inhibit_all_warnings! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) end 2023. 2. 9.
[Flutter] "Fatal signal 11 (SIGSEGV)" 오류 해결하기 `Fatal signal 11 (SIGSEGV)`오류는 프로그래밍에서 흔히 발생하는 오류이며 분할 위반이라고도 하는 분할 결함을 나타냅니다. 위치가 존재하지 않거나(NULL 포인터 역참조) 프로그램이 액세스 할 수 없도록 보호되어 있기 때문에 프로그램이 액세스가 허용되지 않은 메모리 위치에 액세스 하려고 시도할 때 발생합니다. 오류 메시지의 'in tid 18280 (1.io), pid 18247 (ital.parkinsons)' 부분은 오류가 발생한 스레드 ID(tid) 및 프로세스 ID(pid)를 나타냅니다. 이 오류는 다음과 같은 여러 요인으로 인해 발생할 수 있습니다. 오류 발생요인 초기화되지 않은 포인터에 액세스 (Accessing an uninitialized pointer) 이미 해제된 포인.. 2023. 2. 5.
[Flutter] Android "Unable to find bundled Java version" 오류 해결하기 위 문제는 이번 안드로이드 `Electric Eel` 버전의 프로그램 버그로 보입니다. 우선 해당 안드로이드 폴더인 `C:\Program Files\Android\Android Studio`로 이동하여 `jbr` 폴더의 내용을 `jre`에 덮어쓰기 해주세요. 만약, 위 문제가 해결되지 않는다면 `jre` 폴더 자체를 삭제해 보시면 될 것 같습니다 2023. 2. 4.
[Flutter] 임펠러(Impeller) 사용해보기 Kaleidoscopia는 임펠러로 그래픽 성능을 개선한 예를 보여주는 데모 임펠러는 Flutter의 새로운 렌더링 런타임으로 Flutter 3.7 Impeller는 Flutter 프레임워크의 최신 버전에서 추가된 기술입니다. Impeller는 성능, 그래픽 품질, 호환성, 개발 효율 등을 개선하는 기술로, 플러터 개발자가 더 높은 효율성으로 애플리케이션을 개발할 수 있도록 돕습니다. 사전 컴파일된 셰이더를 사용하여 보다 예측 가능한 성능을 제공하며, 실행 시 셰이더 컴파일로 인한 프레임 손실을 완화합니다. iOS와 Android의 최신 로우 레벨 API인 Metal과 Vulkan의 프리미티브를 활용합니다. 또한 동시성을 효과적으로 활용하여 스레드에 단일 프레임 워크로드를 분산합니다. 셰이더 활용 2023. 1. 31.
[Flutter] 플러터 GetX에서 Hero 위젯 사용하기 플러터에서 GetX에서 Hero를 사용하려면, 제대로 작동이 안 되는 것을 볼 수 있습니다. 해당 이미지가 Init 시점보다 먼저와 야하기 때문인데요. GetX 패턴을 사용하다 보면 사실상 사용하기가 까다롭다고 볼 수 있습니다. 그래서 GetX에서 사용할 수 있는 방법을 소개합니다. 예시 class ListWidget extends GetView { const ListWidget({super.key}); @override Widget build(BuildContext context) { return Column( children: List.generate( controller.data.length, (index) { return CardWidget(index: index); }, ), ); } } cla.. 2022. 12. 30.
[Flutter] 플러터 개발속도 향상을 위한 VSCODE 가이드 라인 설정하기 플러터로 개발하다 보면, 선언형 때문에 코드 위치 및 구조를 파악하기 어려울 때가 있습니다. 물론, 코드량이 많아지기 전에 별도로 클래스로 나눠주면 문제가 없겠지만, 명시적으로 도트라인이 보이면 더 좋을 것입니다. 설정방법 우선, `VSCODE 설정`으로 들어갑니다. `Preview Flutter Ui Guides` 항목을 활성화시켜 주세요. 그리고, 오른쪽 상단에 아이콘 클릭하여 `OpenSetting JSON` 형태로 열어주세요. 위에 2가지 항목을 추가해 주시고, `VSCODE를 완전히 종료`했다가 다시 열어주세요. 저 같은 경우 재부팅하고 바로 적용이 안되고 조금 있다가 적용이 되더라고요. 2022. 12. 26.