본문 바로가기
반응형

전체 글334

CustomPainter를 redraw 하는 방법 https://api.flutter.dev/flutter/rendering/CustomPainter-class.html CustomPainter class - rendering library - Dart API The interface used by CustomPaint (in the widgets library) and RenderCustomPaint (in the rendering library). To implement a custom painter, either subclass or implement this interface to define your custom paint delegate. CustomPainter subclasses must impl api.flutter.dev 공식문서에서는.. 2024. 3. 15.
덩치가 커진 위젯의 rebuild 플러터를 하다보면 하나의 위젯이 덩치가 어마어마하게 커지는 경우가 있다. 이때 setState를 하면 어마어마한 퍼포먼스 문제를 야기한다. 헌데 위젯을 하나하나 따로 빼서 끊어주고 생성자 뚫고 해주는게 여간 쉬운일이 아니다. 이럴 때 사용하는 팁을 적어본다 1. 프로파이더 사용 너무나 당연한 얘기이지만 프로바이더를 사용하면 커다란 빌드 함수 안에서 특정 위젯만 리빌드 할 수 있다. 다만 코드 작성하기가 여간 귀찮다 2. 스트림 컨트롤러와 스트림 빌더 사용 가장 쉬운 방법이다. 특정부분만 리빌드 하고 싶은 부분을 스트림 빌더로 감싸준다. 그리고 스트림컨트롤러르 생성한 뒤 스트림을 스트림빌더에만 내려준다. 즉 특정부분만 setState 하는 효과를 가지게 된다. 3. ChangeNotifier와 Listen.. 2024. 3. 8.
iOS에서 로그 볼때 OR, NOT 필터 거는법 XCode에서 로그를 볼 때 안드로이드와 다르게 iOS에서는 필터를 걸면 죄다 and이거나 죄다 OR로 설정할 수 있다. Match any conditions로 설정하면 로그필터 조건들이 죄다 OR로 설정된다 Match all conditions 로 설정하면 로그필터들이 죄다 and로 설정된다 이건 좀 짜증나네.. 반면 Device and Simulator에 들어가서 로그를 보면 서로다른 항목에 대해서는 AND로 동작하고, 같은 항목에 대해서는 or로 동작한다 가령 PROCESS Runner MESSAGE msg1 MESSAGE msg2 라고 하면 프로세스가 Runner이고 메세지가 msg1 msg2 이거 둘중 하나를 포함하는걸 필터링 하라 이다 2. Not 필터 거는법 Xcode에서 필터 설정후 옆에 .. 2024. 2. 8.
[iOS] Static Library만들기와 사용 1. 프로젝트 만들기 Xcode에서 Static 라이브러리를 선택하고 언어를 선택한다. 오브젝트C는 언어가 그지같으니 스위프트 선택 그럼 이렇게 프로젝트가 생성되는데 열심히 코드를 작성해주자 2. 빌드하기 빌드 타겟을 정해주고 Product->build 혹은 Start버튼으로 빌드 해주자. 여기서 주의할건, iOS, iOS 시뮬레이터, 아이패드, 맥북등 타겟마다 다 따로 설정해줘서 빌드해야 한다. 본인이 원하는 타겟에 따라 적절히 선택해주자 빌드가 완료되면 Product -> show Build Folder in Finder를 선택해주자. 그럼 아래와 같이 파일들이 나온다 여기서 봐야할건 .a 파일과 swiftmodule이다. 둘다 사용되므로 다 챙기자! 3. 다른 프로젝트에서 사용하기 먼저 아래에 Bu.. 2024. 2. 8.
iOS에서 상하단에 색이 생길 때 해결방법 1. 문제의 원인 아주 간단하다. Scaffold 바로 위에 SafeArea를 설정하면 아이폰에서 상하단에 흰색이나 검은색이 생긴다 2. 해결방법 SafeArea를 body로 옮겨주자 2024. 2. 3.
PageRouteBuilder에서 iOS backSwipe가 안될 때 https://github.com/flutter/flutter/issues/47441 Cupertino back gesture are disabled when using PageRouteBuilder · Issue #47441 · flutter/flutter Use case I am using PageRouteBuilder to add fade transition to some of my routes. I've noticed however that the swipe to go back on IOS is not working when doing so! Which is something I'm used to ... github.com 1. 문제점 PageRouteBuider를 이용해 화면전환시 애니메이션을 .. 2024. 2. 3.
Bottom에서 Pull to refresh하기 방법을 찾아보다가 결론은 직접 만들어서 써야 한다. 아이디어는 다음과 같다. 스크롤 컨트롤러의 position값을 추적해 offset을 구한다 offset을 0에서 1.1 사이로 nomarlize한다 refresh indicator를 partially하게 0.1단위 간격으로 값을 보내어 위젯을 다시 그리도록 한다 1.1이 될 경우 데이터를 불러오고 refresh indicaotr를 full로 그린다. 대충 코드로 설명하는게 편할듯 먼저 일단 나의 위젯이 사이즈가 너무 커져서 그냥 setState할경우 디버그모드에서 버벅이는게 보였다. 고로 하위 위젯만 rebuild 될 수 있도록 StreamController와 StreamBuilder를 활용하기로 하였다. double _bounceProgress = 0.. 2024. 1. 31.
3차원 회전행렬 구하기 및 캘리브레이션 가속도 센서를 캘리브레이션 할 일이 생겨서 만들어 보았다. 지피티는 신이다. 아래 함수들 전부 검증해보고 제대로 동작하는 것 확인하였다. data class Vector3D(val x: Double, val y: Double, val z: Double) fun normalize(vector: Vector3D): Vector3D { val length = sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z) return Vector3D(vector.x / length, vector.y / length, vector.z / length) } fun dotProduct(vector1: Vector3D, vector2: Vector3D): .. 2024. 1. 26.
Flutter와 파이어베이스로 게시판 만들때 부딪힌 경험들 게시판 만들 일이 있어서 flutter와 파이어베이스로 만들고 있다. 직접 처음부터 전부 만들어보니 생각보다 많이 어렵다. 게시판 만들 때 이렇게나 많은 것들을 고려해야 할 줄 누가 알았을 까... 아래는 개발하면서 부딪힌 문제들 1. 제목과 내용의 데이터는 분리해야 한다 어찌보면 너무 당연한 내용이다. 제목은 짧고, 내용은 크다. 두 데이터를 한꺼번에 묶는다면 쿼리하는데 속도 문제가 생길 것 이다. 그러면 어떻게 해결할 것 인가? 정답은 내용을 subCollection으로 두는것 이다. 파이어베이스는 doc을 가져올 때 doc 안에 subCollection이 있다면, 이 subCollection안의 데이터는 가져오지 않는다. subCollection안에 데이터까지 가져오면 쿼리 속도에 문제가 생기기 때.. 2024. 1. 25.
반응형