Pageview swipe gesture 감지하기
·
개발/Flutter
아래 코드는 GetXController와 NotificationListener를 styled widget 형식으로 변환해서 사용한 예제입니다.스크롤이 시작할 때 현재 페이지를 변수로 저장하고 끝났을 때 페이지를 확인해서 페이지가 변경된 경우 로그를 쓰는 예제입니다..scrollNotification((ScrollNotification notification) { if (notification is ScrollStartNotification) { // dragDetails가 null이 아니면 사용자가 스와이프를 시작한 것임. if (notification.dragDetails != null) { // talker // ..
안드로이드 스튜디오에서 invalid java_home 에러 처리
·
개발/Flutter
윈도우 안드로이드 스튜디오로 빌드하다보면 java 없다고 나옵니다. 1. android suido가 설치된 위치로 가서 jre 폴더를 먼저 삭제합니다. 2. PowerShell 실행 후 아래 명령어를 입력하여 jbr 폴더에 대한 심볼릭 링크를 생성합니다. cmd /c mklink /D "jre" "jbr" 그리고 빌드하면 빌드가 잘됩니다.
async 함수 순차로 실행하기
·
개발/Flutter
검색해보면 여러가지 방법이 있는데 그중 stream 사용하는게 제일 편해서 아래와 같이 사용합니다. 주로 Getx을 사용하다 보니 mixin 형태로 만들어서 사용하고 있으며 아래 코드 보면서 필요한 위치에 코드를 추가하면 됩니다. mixin SequentialRunMixin on GetxController { final orderedFuturesController = StreamController(); late final StreamSubscription orderedFuturesSubscription; @override void onInit() { super.onInit(); orderedFuturesSubscription = orderedFuturesController.stream .asyncMap(..
xcode 13.4.1에서 iOS 빌드시 버그 해결하기
·
개발/Flutter
xcode 베타 버전으로는 앱출시가 안된다는 것을 이제서야 알게 되었습니다. 맥OS를 최신 베타버전을 사용하고 있어서 몬터레이로 내리고 xcode도 13.4.1로 다시 설치를 했습니다. 그리고 빌드를 했는데 오류가 발생합니다. 대충 다음과 같은 메시지로 시작을 하죠. compileswiftsources normal arm64 com.apple.xcode.tools.swift.compiler 검색을 해보고 이것저것 다 해봤는데 에러가 사라지지 않더군요. xcode 버전을 이전 버전(13.2)으로 내려서 사용하면 된다고 하더군요. xcode를 여러개 설치해서 특정 버전을 사용할 수 있도록 해주는 도구가 있어서 설치를 했습니다. https://github.com/RobotsAndPencils/xcodes Gi..
xcode 14 베타 사용시 Invalid Bundle로 배포 안되는 버그 수정
·
개발/Flutter
xcode 14 베타를 사용 또는 베타 버전을 업그레이드 할 때마다 아래와 같은 오류가 나타나는 겁니다. Invalid Bundle. The bundle Runner.app/Frameworks/App.framework does not support the minimum OS Version specified in the Info.plist. 에러 메시지를 제대로 확인 안하고 몇가지 보이는 단어만 보고 OS 버전이 등록이 안된건가 하는 말도 안되는 생각을 하고 하루 이틀 기다렸는데 나중에 하면되더라고요. 그래서 크게 신경을 안쓰고 있었는데 이번 베타6 설치한 후로는 이게 안되네요. 그래서 에러 메시지를 다시 잘 읽어봤더니 최소 os 버전 지원을 안한다는 겁니다. 속으로 이상하네 둘다 12 버전으로 맞춰놨는데..
캐러셀 리스트뷰 만들기
·
개발/Flutter
Flutter에서는 간단하게 캐러셀 형식의 리스트뷰를 사용할 수 있습니다. 리스트 뷰 위젯에 physics를 PageScrollPhysics()로 설정해주면 됩니다. ... return new ListView.builder( padding: EdgeInsets.all(0.0), physics: const PageScrollPhysics(), controller: scrollController, scrollDirection: Axis.vertical, itemCount: length + 1, itemBuilder: (BuildContext context, int index) { if (index == length) { // 마지막 return new SnapStatusLoadingItem( title: b..
배경이 투명한 페이지 만들기
·
개발/Flutter
Swipe to close 기능을 만들기 위해 Dismissible 위젯을 이용해 페이지를 구성했는데 이전 화면이 안나오는 것입니다.Scaffold의 배경색을 투명으로 해도 그렇더군요. 찾아보니 MaterialPageRoute는 기본 불투명으로 되더군요.그래서 MaterialPageRoute 클래스 소스를 가져와 opaque를 false로 변경 후 적용했습니다. class TransparentMaterialPageRoute extends PageRoute { TransparentMaterialPageRoute({ @required this.builder, RouteSettings settings, this.maintainState = true, bool fullscreenDialog = false, })..
링크 모음
·
개발/Flutter
Flutter로 개발을 시작한 이후 참고한 문서들입니다. 한글 문서가 별로 없으니 영문 문서를 보는 게 생산적일 겁니다. Curationawesome-flutter: 카테고리별로 잘 정리된 문서입니다.Flutter Awesome: 썸네일이 있어 보기 편합니다. PackageFlutter Packages: 공식 사이트에서 제공하는 package directory입니다. ToolsDartPad: 온라인 에디터로 간단한 코드 테스트할 때 사용합니다.Regular Expression Tester: 정규 표현식을 빠르게 테스트할 수 있습니다.JSON to Dart: json data로 class를 만들 때 사용합니다. SamplesAn open list of apps built with Flutter: flutt..
키보드 show/hide 감지하기
·
개발/Flutter
아래 라이브러리를 사용하시면 됩니다. https://pub.dev/packages/flutter_keyboard_visibility flutter_keyboard_visibility | Flutter Package Flutter plugin for discovering the state of the soft-keyboard visibility on Android and iOS. pub.dev 이전 내용 키보드 감지는 SatelessWidget에서는 불가능하고 StatefulWidget에 WidgetsBindingObserver를 추가해서 이벤트를 감지할 수 있습니다. 추가적으로 textfield에 focusNode를 추가하여 textfield에 focus가 있는지 여부도 같이 확인합니다. class Co..
상태바, 내비게이션 바 보이기/감추기
·
개발/Flutter
상황에 따라 화면을 전체 화면 등으로 변경해야 하는데 이럴 때는 간단하게 SystemChrome.setEnabledSystemUIOverlays를 사용하면 됩니다. SystemChrome.setEnabledSystemUIOverlays([]); // 상태바, 내비게이션 감추기(fullscreen) SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values); // 모두 보이기(일반 화면) SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom]); // 상태바 감추기 SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.top]); // 내베기에..
상태바 투명하게 만들기
·
개발/Flutter
iOS의 경우 상태바 영역이 투명이지만 안드로이드는 반투명 색상이 들어가 있습니다. 전 iOS와 같이 상태바 영역이 투명한 것을 선호해서 앱 개발시 항상 상태바를 투명하게 만듭니다. 안드로이드 개발할때는 이것저것 해야할게 많았었는데 flutter는 간단하게 구현이 가능합니다. void main() { ... SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark.copyWith( statusBarIconBrightness: Brightness.light, statusBarColor: Colors.transparent, )); ... } SystemChome 클래스는 OS에서 제공하는 인터페이스 관련 부분을 제어하는 클래스입니다. 상태바 아이콘이나 ..