전체 글 67

[Flutter] get API 사용 시 obx 컴파일 에러 발생 시 해결법

오늘은 제가 직면한 문제에 대해서 간단하게 정리만 하고 넘어가려 합니다. 플루터에서 리엑티브한 동작을 위해 사용하는 get API를 사용하던 도중 아래의 에러를 만나게 되었습니다. The getter 'obs' isn't defined for the type 'ScrollController' 문제를 해결하고자 이곳저곳을 돌아다녀 봤지만 그럴듯한 해결책이 없었습니다. https://stackoverflow.com/questions/57158458/flutter-error-the-getter-x-isnt-defined-for-the-class Flutter - Error: The getter X isn't defined for the class I have a class TripController that ..

[내가만든앱] ZZAL(짤) 소개

안녕하세요. 오늘은 신규로 제작한 앱을 소개하고자 글을 작성해봅니다. 이번에 개발한 앱은 플루터로 만든 ZZAL(짤) 이라는 앱입니다. ZZAL은 주변에 온라인상 일상대화에서 이야기하고자하는 바를 함축적인 의미를 담은 짤로 표현하곤 하는 현황에 영향을 받아 개발하게 되었습니다. 사용자는 짤 앱을 통해 적절한 상황에 맞는 짤을 키워드를 통해 찾아보고 본인이 원하는 짤을 다운로드 하거나 공유하기를 통해 타 앱에서 공유할 수 있습니다. 다음과 같이 말이죠 ! 시중에 동일 컨셉의 다양한 앱이 있었는데요, 차별점을 두기 위해 키워드 다중 검색, 원본 출처 표기와 같은 기능을 별도로 추가하였습니다. 적절한 상황에서 센스있는 짤을 사용하시는 멋진 분들이라면 이 앱을 통해 좀 더 자신의 의사표현을 원활하게 할 수 있을..

내가만든앱 2022.09.27

[Flutter] 플루터 화면 이동하기

안녕하세요. 오늘은 지난시간에 이어 플루터에서 화면이동을 하는 방법에 대해 알아보겠습니다. (지난 실습은 아래 URL에서 확인하실 수 있습니다.) https://in-idea.tistory.com/63 [Flutter] 플루터 리스트뷰 만들기 안녕하세요. 오늘은 플루터 리스트뷰 예제를 가지고 왔습니다. 대부분의 상용 앱은 동일한 형태의 아이템(또는 객체)를 나열하기 위해 리스트뷰를 사용합니다. 쇼핑몰의 상품 리스트, 커뮤니티 in-idea.tistory.com 안드로이드에서 엑티비티가 쌓이는 방식과 마찬가지로 플루터에서도 Navigator를 이용하여 화면 즉 Screen을 스택구조로 쌓아 관리할 수 있습니다. 화면을 쌓는 메소드는 Navigator.push메소드로, 쌓을 화면을 정의할 Screen을 생성..

[Flutter] 플루터 리스트뷰 만들기

안녕하세요. 오늘은 플루터 리스트뷰 예제를 가지고 왔습니다. 대부분의 상용 앱은 동일한 형태의 아이템(또는 객체)를 나열하기 위해 리스트뷰를 사용합니다. 쇼핑몰의 상품 리스트, 커뮤니티의 게시글 리스트 등 다양한 상황에서 사용되죠! 그러면 플루터에서는 어떻게 리스트뷰를 만드는지에 대해 알아보도록 하겠습니다. 상황설정을 위해 도서리스트를 나열하는 예제를 작성해보았습니다. 우선, Book 객체를 정의해줍니다.(예제에서는 main.dart에 모든 클래스를 넣었습니다.) class Book { int id; String title; String imgSrc; Book({required this.id, required this.title, required this.imgSrc}); Map toMap() { ret..

[Flutter] 플루터 이미지 불러오기 중 오류현상

안녕하세요. 최근 플루터를 공부하면서 직면한 오류를 공유하고자 합니다. 한 페이지 내에서 여러가지 이미지를 불러오는 프로젝트를 진행하던 중 아래의 두 에러를 만나게 되었습니다... unhandled Exception: SocketException: Connection reset by peer (OS Error: Connection reset by peer…) Unhandled Exception: Connection closed before full header was received 이미지 불러오기는 png, jpg, gif의 확장자까지 모두 취급하였습니다. 카테고리를 나누어 메인페이지에서 최초 로딩 시 약 두번의 서버콜백 과정이 있었고 (객체지향적으로 봤을때 A라는 객체의 리스트를 한번 불러오고 해당 ..

Hilt 적용기 1

안녕하세요. 오늘은 DI를 위한 Hilt를 적용하며 겪은 문제에 대해 공유하려 합니다. 그동안 Dagger2 라이브러리를 사용하여 의존성 주입(DI)를 수행하던 중 3일동안 찾아다녀도 도저히 컴파일오류의 원인을 찾기 못하게 되어 너무 화가 난 나머지 Hilt라이브러리가 적용하기 굉장히 편리하다는 소문을 듣고 찍어먹어보기 위해 라이브러리 공식 홈페이지 및 여러 블로그를 돌아다녀 봤습니다. 참고한 사이트 https://developer.android.com/codelabs/android-hilt?hl=ko#7 Android 앱에서 Hilt 사용 | Android 개발자 | Android Developers 이 Codelab에서는 Hilt를 사용하여 종속 항목 삽입을 실행하는 Android 앱을 빌드해 보겠습..

[안드로이드] Notification이 발생하지 않는 오류

안녕하세요. 오늘은 안드로이드의 알람생성을 위한 Notification을 사용할 때 주의할 점에 대해서 알아보겠습니다. 분명히 며칠전까지만해도 정상적으로 작동하던 알람이 언젠가부터 동작하지 않는 문제가 있어서 코드를 면밀히 살펴본 결과 Noficiation Channel이 notification과 연결되지 않고 있었습니다.(무언가 단축키도 한줄을 날려버린것 같습니다...ㅜㅜ) 안드로이드 Oreo버전 이후로 Notificaion을 발생시키기 위해서는 Notification Channel이 필요하다는 것을 다들 알고 계실거라고 생각합니다...ㅎㅎ 모르신다면 아래 URL을 참고해주세요 ! https://developer.android.com/training/notify-user/channels?hl=ko 알림..

[안드로이드] receiver 사용 시 주의할 점

안녕하세요. 오늘은 제가 AppWidgetProvider를 사용하면서 겪은 고충을 공유하고자 합니다. 일반적인 broadcast receiver를 사용할 때에도 이러한 문제가 발생할 수 있는데요 제가 겪은 문제는 다음과 같습니다. 저는 앱 위젯을 사용하여 흡연주기를 체크하는 앱을 개발하고 있었습니다. 기본적으로 타이머의 기능을 수행하려다 보니 위젯에 progressbar를 두고, 버튼을 만들어 버튼 클릭 시 progressbar를 초기화하는 기능을 만들었습니다. 문제는 버튼 클릭 이벤트와 1분단위로 위젯을 초기화하는 이벤트 총 두가지 broadcast를 송수신하는 부분에서 발생하였습니다. 아래는 제가 작성한 AppWidgetProvider입니다. class WidgetProvider:AppWidgetPr..

[안드로이드] AlarmManager 사용 시 주의할 점

안녕하세요. 오늘은 며칠째 말썽을 부린 알람매니저와 관련한 내용으로 찾아왔습니다. 일정한 시간을 기준으로 실시간으로 업데이트되는 기능을 만들기 위하여, 브로드캐스트리시버와 알람매니저를 함께 쓰고자 하였는데, 코드를 아무리 수정해도 알람매니저가 동작하지 않는 문제가 있었습니다. 나중에 알고보니 웹서핑으로 얻은 지식의 한계를 맞이한 것이더라구요...ㅎㅎ 제가 작성한 코드는 다음과 같습니다. fun makeAlarmUpdate(context:Context?, time:Long){ val alarmManager = context?.getSystemService(AppCompatActivity.ALARM_SERVICE) as AlarmManager val alarmIntent = Intent(context, Wi..

[Retrofit] java.lang.IllegalStateException: Expected Android API level 21+ but was 29 에러 해결

애플리케이션을 개발하는 동안 전혀 발생하지 않았던 다음 에러가 스토어에 출시하자마자 발생하였습니다. java.lang.ExceptionInInitializerError at okhttp3.internal.platform.Platform.get(Platform.java:85) at okhttp3.OkHttpClient.newSslSocketFactory(OkHttpClient.java:263) at okhttp3.OkHttpClient.(OkHttpClient.java:229) at okhttp3.OkHttpClient$Builder.build(OkHttpClient.java:1015) at com.myhome.smoketimer.repository.retrofit.RetrofitAPI.(RetrofitA..