Flutter

    [플러터 이슈해결] upgrade시 흔히 발생하는 오류

    [플러터 이슈해결] upgrade시 흔히 발생하는 오류

    오류 Because no versions of firebase_auth match >0.18.4+1 < 0.19.0 and firebase_auth 0.18.4+1 depends on firebase_auth_web... .. So, because project depends on both flutter_localizations any from sdk and firebase_auth ^0.18.4+1, version sloving failed. 발생 및 해결 플러터를 업그레이드 한 후 언급한 오류가 발생하곤 한다. 간단하게 현재 플러터의 버전과 패키지가 지원하는 플러터의 버전이 호환되지 않아 발생하는 문제로 해당 오류 메시지에서 언급된 패키지의 버전을 최신으로 변경하거나 위의 오류 메시지처럼 부등호가 있..

    [플러터] 파일을 cache 저장소에 저장하기

    앞서 이미지를 캐시 저장소에 저장하고 빠르게 불러오는 방법을 포스팅했다. [플러터] 이미지를 cache 저장소에 저장하기 스마트폰을 사용하다보면 앱의 저장공간에 캐시라는 공간이 별도로 존재하는 것을 보았을 것이다. cache(캐시)라고 불리는 것에는 cache 저장소와 cache memory 2가지가 있다. cache란 데이터를 빠르게 muhly.tistory.com 이번에는 파일을 캐시 저장소에 저장하는 방법을 포스팅하겠다. Cache 저장소 (파일) 앞선 포스팅에서 이미지를 캐시 저장소에 저장할 때 사용했던 패키지는 'cached_network_image' 로 오늘 소개할 패키지의 일부분으로 이미지만을 위해 편리하게 사용하게끔 분리시켜놓은 패키지이다. 따라서, 이 포스팅의 패키지로 이미지의 캐시 저장..

    [플러터] initState, dispose를 불러오지 않는 경우

    이슈 플러터에서 동일한 위젯(클래스) 2개 이상을 다른 속성 값으로 정의하고 위젯들을 순서대로 호출하여 화면에 출력하는 경우, 2번째부터 위젯이 갱신이 되지 않는 경우가 발생하곤 한다. 이를 디버깅 해보면 2번째 부터 위젯에서 initState와 dispose를 호출하지 않는다. 즉, 위젯을 랜더링 하지 않는다는 것이다. 해결을 위한 과정 해외 포럼에서는 해당 이슈가 widget dispose not called라고 되어있는데 답을 보면 navigator.pop()과 같이 navigator을 사용하여 위젯을 전환하는 경우에는 이러한 이슈가 발생하지 않는다고 되어있다. 하지만 나는 아래의 코드와 같이 navigator를 사용하는 것이 아니었기에 근본적인 해결책이 될 순 없었다. List list = [ C..

    [플러터] 플러터 웹에 대한 Q&A 모음

    [플러터] 플러터 웹에 대한 Q&A 모음

    Flutter web에 관한 관심은 많지만 그에 대한 정보가 많이 보이지않아 간단히 작성해보았다. 플러터로 웹 개발을 할 수 있나요? 본론만 말하면 그렇다. 미심적은 부분이 있긴해도 웹을 플러터로 개발이 가능하다. 웹 개발을 배우려고 합니다. 플러터를 배워도 괜찮을까요? 아니요. 플러터는 당장은 앱 개발만을 위한 프레임워크라고 생각해야한다. 개발한 앱을 웹 브라우저에서 돌려볼 수 있다는 정도로 생각해야하며, 웹 개발과 앱 개발을 동시에 원한다면 리액트를 배우는 것을 추천한다. 다만, 리액트와 플러터를 함께 사용하는 현직자분들 중에는 앱 개발은 플러터가 훨씬 편리하다는 의견이 많았다. 플러터 웹은 어떤 점이 문제인가요? 퍼포먼스의 부족 https://gallery.flutter.dev/#/ 링크는 구글이 ..

    [플러터] 위젯의 크기&위치를 반환받는 법

    플러터에서 특정 위젯의 크기와 위치를 반환 받는 방법은 아래와 같다. 코드 //GlobalKey를 선언한다. GlobalKey _viewKey = GlobalKey(); void initState(){ //Build가 실행되어 위젯이 그려진 후 해당 함수가 실행된다. WidgetsBinding.instance.addPostFrameCallback((timeStamp) { _getSize(); }); } _getSize(){ //위젯 key로 RenderBox를 정의한다. RenderBox _viewBox = _viewKey.currentContext.findRenderObject(); Offset offset = _viewBox.localToGlobal(Offset.zero); //위젯의 좌표를 반환받는..