본문 바로가기
  • 포르쉐타고싶다

분류 전체보기93

[flutter] 에러명: "Could not run build/ios/iphoneos/Runner.app on 68bd22b2230c55763eee72ab745a940e3daec7c1.Try launching Xcode and selecting "Product > Run" to fix the problem: open ios/Runner.xcworkspace" 해결 여러 이유에서 Could not run build/ios/iphoneos/Runner.app on 68bd22b2230c55763eee72ab745a940e3daec7c1. Try launching Xcode and selecting "Product > Run" to fix the problem: open ios/Runner.xcworkspace 라는 에러가 뜨면서 빌드는 success 하지만 새로 설치가 되지 않는 경우가 있다. 대표적인 케이스가 또하나 있는데 바로 중간에 signing 문제때문에 xcode에서 Bundle Identifier를 변경하게 되었을 때 기존에 기종에 설치되어있던 동일 어플이 그대로 존재한 채 다시 run을 하게되면 그 둘이 겹쳐서 위와같은 오류가 발생하게 된다 해결법: Bu.. 2020. 10. 21.
[flutter] CachedNetworkImage precaching : 미리 캐싱하여 다음 뷰에 바로 나타날 수 있게 하기 Hero를 이용하는데 이전화면 -> 이후화면으로 들어갈 때 이전화면에서 List에 들어있는 이미지들은 Caching문제로 resizing된 이미지를 보이고 있고 이후화면에서는 원본화질을 보이고싶었다. Hero로 넘어가지만 이후화면에서의 원본의 Caching 타이밍이 너무 길어 원본사진 공간에서 Caching하는 동안의 빈공간화면이 노출된다. placeHolder에서 resizing된 이미지를 보이려고 하지만 빈공간이 보여지는 순간은 사라지지 않는다. 그래서 이전화면의 리스트에서 한 아이템를 눌렀을 때 해당 원본 이미지를 미리 캐싱(precache)하고 완료된 이후에 다음화면으로 보내게 하였다. 이때, 단순히 url만 보내면 안되고 preCache된 이미지의 imageProvider를 갖고있다가 이후화면의.. 2020. 10. 20.
[flutter] bottomNavigationBar위에서 Hero 구현 : Hero와 Navigator의 관계(HeroController Observing) bottomNavigationBar를 사용하고있고 그 안에서 네개의 탭이 각각의 Navigator를 가지고 있다. 그렇게 각각의 Navigator를 부여한 이유는 rootNavigator과 분리해야 rootNavigator에 존재하는 bottomNavigatorBar의 형태를 유지시킬 수 있기 때문이다. 하지만 각 탭에 새로운 Navigator를 '생으로' 적용하면 Navigation의 기능과 관련된 기능들이 사용되지 않을 수 있다. 내가 겪은 예는 바로 Hero이다. Hero는 Navigation 도중 적용되는 기능 중 하나다. 하지만 생으로 만든 Navigator위에서 routing될 때 사용하면 적용되지 않는다. 그에 반해, Navigator.of의 속성안에 rootNavigator: true 를.. 2020. 10. 7.
[flutter] initstate에 Provider 사용하기 : WidgetBinder 전 화면의 이미지를 다음 화면에 가져와 initState에서 Provider로 widget.[데이터]를 공급해야 할 일이 있다. 하지만 생으로 initState에 @override void initState() { // TODO: implement initState super.initState(); Provider.of(context).set(); } 이렇게 사용하면 'package:flutter/src/widgets/framework.dart': Failed assertion: line 4233 pos 12: '!_dirty': is not true. Either the assertion indicates an error in the framework itself, or we should provide.. 2020. 8. 13.
[flutter] /bin/sh: ~~~/flutter/packages/flutter_tools/bin/xcode_backend.sh:Operation not permitted 에러해결 Operation not permitted 에러는 위와같이 전체 디스크 접근 권한에 해당 앱(xcode)을 추가함으로써 해결할 수 있다. 2020. 7. 31.
[flutter] showModalBottomSheet() 테두리 수정 1.문제 showModalBottomSheet에서 테두리를 수정할 때 가장 안쪽의 Container의 테두리를 수정하면 아무 변화도 나타나지 않는다. 2. 해결 바깥에 Container를 한번 더 감싸준 다음 바깥 Container의 color을 기본 modalBottomSheet의 그림자 색깔인 Color(0xFF737373) 으로 설정하면 바뀐 모습을 볼 수 있다. showModalBottomSheet( context: context, builder: (context) { return Container( height: _width, color: Color(0xFF737373), child: Container( decoration: BoxDecoration( color: Colors.white, bor.. 2020. 7. 6.
[flutter-error] 에러 flutter: Error: Could not find the correct Provider<...> above this ~~ 해결 에러: flutter: Error: Could not find the correct Provider above this HotPlacePage Widget To fix, please: * Ensure the Provider is an ancestor to this HotPlacePage Widget * Provide types to Provider * Provide types to Consumer * Provide types to Provider.of() * Ensure the correct `context` is being used. 해결 MainPage.dart에서 Multiprovider에 해당 Provider를 ChangeNotifierProvider로 등록한다 2020. 6. 19.
[flutter] Row긴한데 기본적인 정렬이 들어가야할 때 : Stack + Align 1. 배경 Flutter에서는 정말 많은 위젯들을 제공하고 그 사용법 또한 간단하기 때문에 알기만 훨씬 효과적으로 ui를 짤 수 있어 아는것이 힘인 프레임워크라고 할 수 있다. 하지만 위젯이 많은 만큼 그 많은 위젯을 모두 외우기 힘들고 특정한 상황에서 어떤 위젯이 가장 어울리는지 결정하는것 또한 하나의 일이될 수 있다. 특정 상황에 걸맞는 위젯이 존재하는데도 그 당시에는 알지못하여 다른 위젯들을 사용하여 겨우겨우 구현해냈다가 걸맞는 위젯을 나중에서야 알게되어 '아..진작이 이 위젯을 알았다면..'하고 현자가 되는 경우가 다반사이다. (물론 필자같이 입문한지 얼마 안 된 개발자에 한해!) 아까말한대로 Flutter는 수많은 위젯들을 제공하지만 필자가 의외로(?) 고생한 부분이 '레이아웃'부분이다. Flu.. 2020. 6. 19.
[flutter] Flexible Flexible의 fit 속성 - FlexFit.tight: 아래 child의 높이가 뭐든 상관없이 다른 Flexible과 같은 비율을 차지하게 된다 import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; class MyWidget extends StatelessWidget { @override Widget build(BuildContext context) { return Column( children: [ Flexible( flex: 1, fit: FlexFit.tight, //아래 child의 높이가 뭐든 상관없이 다른 Flexible과 같은 비율을 차지하게 된.. 2020. 6. 18.
[flutter] Future, 그리고 async await Flutter를 시작한 지 얼마되지 않은 개발자분들 중 필자같이 Future와 async await의 관계 혹은 차이에 대해 헷갈리는 분들이 있을 수 있다. 그 관계, 그리고 차이에 대해 예제와 함께 알아보겠다. 핵심은 다음과 같다 1. Future함수, async함수들을 모두 await하지 않았을 때 2. Future함수를 await! 3. async함수를 await! 4. Future함수를 갖고있는 변수의 Type결정(Future형 vs T형) 기본적으로 사용하는 예제는 다음과 같다 void main() { print('Main program: Starts'); printFileContent(); print('Main program: Ends'); } printFileContent() { Future.. 2020. 6. 18.
[flutter] Stack 에서 center horizontal 구현 1. 배경 이미지 위에서 텍스트들을 구현해야 할 일이 생겨 Stack을 사용하였는데 맨 위 중간(center_horizontal)에 제목을 구현해야했다. Stack의 children 안에서 어떤 Widget을 사용해야 Stack 안에서 center-horizontal을 구현할 수 있을까 2. 개념 Align: https://www.youtube.com/watch?v=g2E7yl3MwMk 3. 해결 Stack( . . ., Align( alignment: Alignment.topcenter, child: Container( margin: ..., child: [위젯] ) ) ) 이렇게 Stack안에서의 center_horizontal를 구현할 수 있다. 2020. 6. 16.
[flutter] CupertinoButton 사이즈 조정하기 1. 배경 CupertinoButton의 사이즈를 조정하려면 어떻게 해야할까. 2. 개념 CupertinoButton은 defualt로 설정되어있는 최소 사이즈(minSize)와 패딩값(padding)이 상당해서 처음 사용하는 사람들은 그 사이드를 조정하는데 애를 먹는다. 2. 해결 CupertinoButton 사이즈를 육안으로 설정하기 위해서는 1) 최소사이즈를 최대한 줄여주고(최대한 작게 0으로 설정하면 좋다) 2) 버튼 그 모습 자체 갖고있는 공간 외에 버튼이 차지하고 있는 공간 => padding값을 없애주어야 한다. 예시: CupertinoButton( minSize: 0.0, padding: EdgeInsets.all(0), child: Icon(...), onPressed: () {...},.. 2020. 6. 16.
[flutter-error] 에러 [SEVERE] Conflicting outputs were detected and the build is unable to prompt ... 해결 1. 배경 flutter에서 통신에서 가져오는 데이터의 모델에 대해 json 모델의 자동 직렬화를 위해 @JsonSerializable 를 사용하는데 factory [Model].fromJson(Map json) => ...); 에서 수동으로 일일이 매칭하는 것이 아닌 build_runner에게 맡기고 factory [Model].fromJson(Map json) => _$SearchFromJson(json); 이렇게 _$SearchFromJson을 넣고 flutter pub run build_runner build 명령어를 입력하면 build되면서 json파일의 직렬화 과정의 코드가 자동으로 생성된다. 이 과정에서 [INFO] Found 1 declared outputs which already exi.. 2020. 6. 14.
[javascript] 문자열 Byte단위로 자르기 1. 배경 어플리케이션의 ui를 고도화 하다보면 거쳐야 하는 자잘한 관문들이 굉장히 많다. 그 중 하나가 바로 텍스트의 줄바꿈이다. ui에서 제한된 텍스트 상자 안에 임의의 길이의 텍스트가 들어가기 때문에 적절한 크기로 줄바꿈을 해주지 않으면 보기에 상당히 불-편해 보일 수 있다. 개행(줄바꿈)도 단순히 음절의 개수(subString)으로 자르면 안된다. 영어와 한글은 낱말 하나의 Byte크기가 다르기 때문에 같은 개수의 subString으로 자를 시 영어는 같은 낱말갯수의 한글 길이의 반 정도 되는 위치에서 줄바꿈이 되는 현상을 초래한다. 결국 낱말의 개수가 아닌 Byte의 크기를 단위로 잘라야 하는 것이다. 2. 문제 그렇다면 한 string값을 특정 Byte 크기만큼에서 자르려면 어떻게 해야할까 3.. 2020. 6. 9.
[flutter] 에러명: "No file or variants found for asset: ~" 해결 1. 배경 나의 플러터 프로젝트가 가끔 No file or variants found for asset: assets/ 라는 에러를 내뱉으면서 프로젝트의 assets의 파일들을 불러오지 못하는 경우가 있다. 여러 해결하는 경우의 수가 있지만 assets폴더 안에서 폴더링했을 때의 상황에 대해서 대표적인 해결책 하나를 살펴보자 2. 해결 pubspec.yaml안에서는 띄어쓰기도 조심해야 한다. 필자의 경우 이렇게 assets폴더를 폴더링 해놓은 상태에서 pubspec.yaml 파일을 보면 이렇게 설정을 해놓아야 한다. 포인트는 - assets/icons/ // 총 2번의 띄어쓰기(맨처음, 하이픈 뒤에)가 들어가며 마지막은 /로끝나야 한다 를 유념해야 한다 2020. 6. 3.