본문 바로가기

Dead Code/Flutter_Dart

(64)
[다트] 다트 FACTORY 클래스 샘플코드 플러터 곳곳에서 FACTORY를 만날수 있고, 여러 강좌에서 FACTORY에 대한 설명을 볼수 있다. 낯은 익지만, 정확한 용법은 비전공자에게 납득이 어려운 부분이 있다. 지나치다가 본, 글에 그나마 설명이 잘된게 있어서, 메모해둔다. abstract class Number { factory Number(String type) { if (type == 'myNum1') return MyClass1(1); if (type == 'myNum2') return MyClass2(4); throw 'Can\'t create $type'; } num get myNumber; } class MyClass1 implements Number { final num _number; MyClass1(this._number);..
[플러터] RichText Widget RichText 위젯 사용법입니다. 쉬울듯 하면서도. 의외로 쓸라고 하면 까묵. 구글링도 귀찮아서, 그냥 기재해둡니다. @override Widget build(BuildContext context) { return Scaffold( body: Center( child: RichText( textAlign: TextAlign.center, text: TextSpan( text: 'Hello ', style: ts, children: [ TextSpan( text: 'bold', style: TextStyle( fontSize: 24, color: Colors.black, ), ), TextSpan( text: '\nworld!', style: TextStyle( color: Colors.blue, fon..
[플러터] 구글 폰트 적용하기 폰트를 적용하기 위해서는 - 폰트를 복사하고, - yaml 파일에 등록하고, - 폰트를 불러와야 한다. 귀찮다. 구글 폰트를 사용하면 나아질까? 구글 폰트를 사용하기 위해서는 - yaml 파일에 패키지를 등록하고, - 패키지를 임포트하고, - 폰트를 불러와야 한다. 똑같나? 패키지 내용은 아래와 같다. https://pub.dev/packages/google_fonts 사용은 스타일에서 적용해주면 된다. Text( 'this is this', style: GoogleFonts.pinyonScript(fontSize: 30), ), 그런데, 웹폰트가 그렇듯이.. 가장 느린 데이터 요금을 쓰는 나에게는, 폰트가 적용되기 전까지, 적용안된 텍스트가 보이는 결함을 보인다. 나만 볼꺼니까 상관은 없지만..
[플러터] 내 패키지 라이브러리 업데이트 내 라이브러리를 github에서 불러다가 쓰고 있다고 하자. 라이브러리 코드를 좀 수정했다. 다른 Package는 버전으로 관리가 된다고 하지만, 내껀 그렇지 못한데... Get Package를 하면, 업데이트 된 내용이 마법처럼 적용이 될까? 만약 이게 가능하다면, 다른 패키지들도 구지 버전을 표기하는 방식으로 운영하지는 않지 않을까...? 결론은.. 안된다. 그럼 어찌해야하나.. 의외로 쉽게 stackoverflow에서 찾았는데, 아래 명령어를 터미널에 쳐주면 된다. $ flutter packages upgrade resolved 음.. 정확한 의미는 모르겠지만, 되니까. 됐다. ㅋㅋ
[플러터] Provider 사용해보기(with SharedPreference) 나같은 취미, 초보자가 초반에 마주치는 몇가지 장애물이 있는데, BLoC패턴도 그 중 하나일것이다. 뭔소린지 모르겠고, 귀찮아 보이는데, Provider 패키지가 그 역할을 대신해 줄수 있다고 한다. 물론, 이런 프로그래밍에서 더 귀찮은 것을, 더 귀찮은게, 완전 대체할 수는 없다는거 정도는 안다. 일단, 쉬운걸로 개념을 잡고, 어려운거에... 아~~~~~~~~~~주 나중에 도전을 해보자.
[플러터] 램디스크에서 플러터 빌드를 하면.. 속도 빨라질까? 빌드타임이 비교적 빠른 플러터이지만, 매우 지루한 시간이라는건 변함이 없다. 나같이 후진 PC를 사용하는 사람이라면, 더 그렇겠지만, 이것때문에 PC를 바꾸기는 좀 애매하다. (취미를 게임으로 바꿔야하나....) 유튜브나 블로그에 보면 온갖 귀찮음을 이겨내고 여러가지 테스트를 하시는 분들을 항상 존경해오긴 했지만, 막상 해보니 진짜 귀찮은 관계로 단일 시스템에서 테스트 해보기로 한다. 램디스크는 Freeware인 Softperfect Ram Disk를 사용했다. (램디스크 쳐서 가장 처음에 나오는 걸로 설치) 사용된 PC는 랩탑이고, 8265u CPU, 8GB RAM(눈에 보이는 걸로..), IDE는 VS CODE이다. 사실 8GB에서 1GB를 할당해주는건.. 더 미친짓일 수 있다. 하지만 막연한 기대감..
[플러터] class 이름을 string 값을 참조해서 불러오기 class 이름과 동일한 string 값이 있다. class를 불러올때, 이 string 값을 class 이름으로 사용하고 싶다. 매우 간단할 줄 알았는데, 그냥 하면 안된다. (당연한건가..) 더 재밌는건, 패키지 중에, 이걸 또 변환해 주는 패키지가 있다는 점이다. ClassBuilder 패키지 사용 예시이다. 나의 경우는, MaterialApp 부분에 route를 사용할때, 이름을 사전정의해야하는데, 이게 또 귀찮아서... 불러올 이름들을 stiring리스트로 만들고 불러오기 했다. 발영어는 조심하시길.. 아주 ~~~ 약간 덜 귀찮게 해주는 신박한 패키지.
[플러터] 신박한 패키지 - LiquidSwipe 모든 패키지는 신박하지만, 플러터는 뷰리풀 UI 프레임워크니까... 이런 패키지가 많아졌으면 한다. 힘내라 개발자들! - 빈 페이지로 테스트 - 발영어는 항시 조심
[플러터] 백버튼 두번 눌러서 앱 종료하기 가끔 앱을 끌때, 한번 더 누르라는 토스트 또는 스낵바 메시지가 나오는 때가 있다. 굉장히 단순한 기능인 줄 알았는데, 생각보다 구현하기 귀찮은 거였다... 구글링을 하다가 WillPopScope를 활용한 코드를 한번 테스트 해본다. * 혹시나 아래 영상을 보게 되시는 분이 있으시다면, 발영어는 항상 조심하길 바란다.
[플러터] 내 패키지 만들어서 사용하기(로컬,github) 패키지를 불러오는 일은 개발자들에겐 일상이겠지만, 나같은 사람에게는 그것도 처음엔 생소하다. 가끔 snippet 말고 내가 만든 함수를 불러올 수 있을까 생각했는데, 생각처럼 어마어마한 작업이 아니라, 그냥 불러오면 되는거였다. 로컬에 저장된 패키지와 깃허브에서 불러온 형태인데, 로컬 패키지를 불러오는 형태라면, 남들하고 같이 작업하긴 어려워지겠다. 하지만.. 난 혼자니까. 발영어는 조심하세요
[플러터] AnimatedLIst, PageView 그리고 남이 만든 Custom BottomNavigation의 적용 처음 AnimatedList를 봤을때, 엄청 신기했던 기억이 난다. 물론 어디다 쓸수 있을지는 잘 모르겠지만.. 실제 어플에서 아주 간헐적으로 본 기억이 있는거 같다. (TODO리스트 같은데서) 그것만 있으면 심심하니까. PageView와 남이 만든 BottomNavigation을 연동시키는 작업을 해봤다. 음... 생각보다 애먹었다. 그럼... 발영어를 조심하시길...
[플러터] 필요해서 플러터로 만든 앱 : 시간 기록 앱 가끔 시간을 잴 일이 있다. 또는 어떤 일이 벌어진 시점을 기록해두고 싶을때가 있다. 기본적으로 버튼을 클릭하면, 시간을 기록하고, 기록된 시간과의 시간차를 계산해 주는 어플이다. 가끔 이거 얼마나 걸렸지? 하고 궁금해할 때 요긴하게 쓸 요량으로 만들었었다. 오프라인 상태에서도 써야하기 때문에, firebase 같은 외부 DB는 사용하지 않으고 sqflite로만 만들었다. 나름 고민해서 만들었더니. 뿌듯하다. ㅋㅋ 발영어는 조심해야한다.
[플러터] 페이지뷰 위젯에서 슬라이드 모션 조절과 레이아웃 완료시 실행 페이지뷰 위젯은 평범하지만, 슬라이드 모션을 약간 주게 되면, 좀 더 그럴싸해 보이는 효과가 생긴다. 여기에, 레이아웃 렌더링이 완료된 이후에 실행되는 방법까지 담아 봤다. 발영어는 조심은 필수!
[플러터] 리스트와 함께 사용하는 히어로 위젯 리스트 위젯에 히어로 위젯을 적용하는 테스트 앱을 만들어 봤다. 페이지 전환 속도를 변경해서, 히어로 위젯의 속도를 제어할 수 있음이 핵심이라 할수 있겠다. 발 영어는 항상 조심해 주시길
[플러터] 웹 빌드하기(19.12 기준) 올해 초만 해도, 웹으로 빌드를 하려면 벼라별 생쑈를 다 해야했는데, 이제 몇줄의 명령어로 간단하게 처리가 되는것 같네. 새로 웹 프로젝트를 만드는 건 별로 관심이 없고, 기존 프로젝트에서 웹 프로젝트로 변환하는 방법이 매우 심플해졌다. 아직 안해보신 분들을 위해서, 12월 기준으로.. (업데이트가 미친듯이 되는 부분이니..) 프로젝트를 켜고, 터미널에서, 플러터 업데이트(안한사람만..) * flutter channel dev --> dev 채널로 바꾸라고 하는데, 왜인지 모르겠으니. 그냥 난 master로 진행 $ flutter upgrade 웹 빌드 활성화(안한사람만..) $ flutter config --enable-web 프로젝트에 웹 템플릿 추가 $ flutter create . ** flutt..
[플러터] AndroidX 어쩌고 에러 작업한지 시간이 약간 경과한 앱은 안드로이드 빌드중에 androidX 가 적용되지 않았다는 경고 메시지가 나온다. 당연히 당시에는 없었던 경고문구. [!] Your app isn't using AndroidX. To avoid potential build failures, you can quickly migrate your app by following the steps on https://goo.gl/CP92wY. 구글을 뒤적이다 보면 안드로이드스튜디오에서 androidX로 변경해주면 된다 한다. 해보면... 역시 쉬운일 하나 없다. 아래와 같은 이상한 창이 뜬다. You need to have compileSdk set to at least 28 in your module build.gradle to..
[플러터] COLOR 입력시 HEX 코드 사용하기 함수 플러터에서 컬러를 입력하는 방법은 많지만, 6자리 HEX 코드(?)를 사용하는 방법을 찾지는 못했다. (나의경우) 대부분의 프로그램에서 이 코드를 가지고 작업하기 때문에, R/G/B 입력방식도 그닥 편하지 않다. 그러려니 하던 중, 스택오버플로를 방황하다가 누가 만들어놓은 함수 하나를 발견하게 되었는데, 유용한 것 같다. 스니펫으로 만들어 놓으면 크게 고민하지 않고 사용해도 될 듯 하다.
[플러터] Reorderable list 안드로이드에서 이 기능을 지원하는 앱을 여러번 보긴 했지만, 왜 쓰는건지 도데체 왜 이런 기능을 만들어 놨는지... 알기 애매모호했던, 리스트 순서 바꾸기 기능이다. 그래도 어렵게 찾아냈으니 한번 적어본다.
[다트] Stream 기본 async는 class와 마찬가지로 또다른 장벽이다. 산넘어 산인가.... 뭔 일이든 그래도 기초가 중요하겠지만, 아... 이건 무엇에 쓰는 코드인고?..
[다트] class? mixin? 나같이 취미로 코딩을하는 비전공자에게 class는 큰 장벽이다. 개발자의 편의를 위해 만들었다고는 하지만, 보면 볼수록 그에 함몰되는 느낌이다. 하지만 별수 있나, 개념을 깨우치기 전에 일단 한번 해보는거지.. 그것이 취미의 묘미..
[플러터] Orientation 페이지의 레이아웃의 Orientation을 고정시키고 싶거나, 원하는 방향만 허용할때, 아래 코드를 사용한다. * Widget Builder 위젯 안에서 사용하면 됨. * init 블럭이나, main에서 사용하는 경우도 있는것 같음 * IOS는 안된다고 함
[다트] 리스트 합치기 리스트를 합치는 일. 과연 많이쓸까? 그냥 코드 문법만 공부하면, 익숙해지기 어렵지만 플러터에서는 꼭 필요한 기능이다ㅋ 예를 들어... 다른 함수에서 받아온 두개의 위젯 리스트를 하나의 컬럼 위젯에 넣어줄때..같이...
[플러터] 리스트 정렬 얼마전 dart 에서 배웠던 리스트 정렬기능을 flutter에 적용해본다. 개발새발로 쓴 영어를 조심하시길..
[플러터] 이미지 자르기 코드를 쳐서 이미지에 둥근모서리를 주거나, 맘대로 모양을 만드려면, 은근 귀찮은 과정을 거쳐야한다. flutter는 ui툴이니까.. 편하게 되겠지? 라고 생각하면 오산이다.ㅋㅋㅋ 그래도 생각이 났으니 한번 해봤다.
[다트] 인풋값 체크하기(숫자/영문자) 입력된 문자가 숫자인지 문자(영어)인지 확인할수 있는 함수이다. 정규식을 활용한거 같은데,정규식이 잘 안외워지면 적어놓고 컨닝하는 수밖에 ㅋㅋ 운나쁘게 나의 구글검색에 걸린 코드는 아래 코드... 새로운 티스토리 에디터는 안되는게 참 많네..
[플러터] VS CODE - DART snippet 만들어 쓰기 일일이 코드를 쳐서 UI를 만드는 일이 생산성에 도움이 된다는 이야기를 초보자인 나는 이해를 못하겠다. 하지만, COPY/PASTE를 쉽게 쓸수 있다면 그 또한 파랑새는 아닐지 모른다. VS CODE EXTENSION으로 사용하는 DART 코드 SNIPPET은 좋다. 하지만, 코드가 펼쳐져도.. 내가 사용하지 못하는 코드라면 무용지물. 내가 쓴 코드를 등록해볼까.. Center( child: Text('center widget'), ) 코드를 SNIPPET으로 만들어보자. 일반적으로 아래 위치에 dart.json 파일이 있다. C:\Users\컴퓨터이름\AppData\Roaming\Code\User\snippets 머시라... JSON 이라고라... 보지 않아도 쌍따옴표와 중괄호, 컴마가 빼곡하게 있겠지..
[플러터] asset폴더에 있는 파일명 리스트로 만들기 이미지 폴더에 있는 파일명을 리스트로 만들면, 저장되어있는 이미지나 파일명을 활용해서 리스트뷰로 만들기 쉬울것 같다. 하지만 역시나 세상 쉬운일이 없다. 디렉토리를 접근하기가 쉽지 않다. 스택오버플로우에서 찾아낸 방법은. 타겟 폴더를 asset으로 등록하고, assetmanifest.json 파일을 dart:convert의 json.decode로 불러오는것. ;; json이라... 생각만 해도 끔찍하지만, 배끼는데 돈들지 않기 때문에, 그냥 한다. 아래처럼 images 폴더 안에 그림이 7장이 있고, 버튼을 누르면 리스트가 되어 나온다. 되니까 행복하구나.
[다트] 리스트소팅 with dart sort 리스트 소팅. 간단하게 될줄 알았는데, 역시 세상일 쉬운거 하나 없다. 다행히도 String 값이나. int 값이 같은 코드로 처리가 가능하다.
[플러터] AnimatedContainer 연습 플러터는 잛은 리로드 타임때문에 이것저것 해보기가 수월하다. AnimatedContainer는 공식사이트에 있는 튜토리얼로 잠시 연습. 기본적인거지만, 해놓고 보니. 나름 나쁘지 않다. ㅋㅋ
[플러터] Visibility 연습 네이티브로 앱을 구성할 때 상당히 당황했던 것 중 하나가, 화면 방향이었다. 음. 더 나아진건지 아닌지.... 모르겠지만, 플러터로는 한번 시도해봤다. UI툴이라서 그런가. 확실히 귀찮은 부분은 많이 줄어든것 같지만, 생각은 좀 해야 하나보다. 릴리즈는 아예 꿈도 꾸지 않고 있기 때문에, 나하고 크게 상관은 없겠지만. ㅋㅋ