일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Three js
- androidId
- Flutter
- typescript
- react
- KakaoMap
- babel
- RouteObserver
- swagger-typescript-api
- Raycasting
- Completer
- Prism.js
- REST API
- webrtc
- node
- userevent_tracker
- jszip
- identifierForVender
- FirebaseAnalytics
- code editor
- Three-fiber
- Redux
- Game js
- Babel standalone
- uint8array
- web track
- Excel
- Image Resize typescript
- uint16array
- methodChannel
- Today
- Total
Never give up
Flutter 2.0 - How to use previous version(1.22.6) 본문
필자의 2번째 앱은 1.22.6버전으로 되어있습니다
그래서 수정 및 배포를 다시해야될 경우 버전을 다운그레이드 해야되는데
Flutter version v1.22.6 <- 이전에 이런식으로 해도 된다는 글을 봤었는데
deprecated되어 현재는 사용할 수 없습니다
대신에 flutter downgrade를 하라고 하는데 2.0.2에서 2.0.1로 내려는 가는데
그 이하로는 내려가지 않는 문제가 발생했습니다
(flutter downgrade로 1.22.6버전을 사용할 수 있으면 그대로 사용하시면 되겠습니다)
그 때 필자가 엄청난 삽질을 하면서 시간을 많이 소비했기에
제가 사용한 방법을 공유해드리고자 포스트를 시작했습니다
더 좋은 방법도 있을 수 있는데 이런 방법도 있다 정도로 알아두시면 좋을거 같습니다
(IDE는 안드로이드 스튜디오 기준입니다)
먼저 공식홈페이지에서 원하는 SDK버전을 다운받습니다
(링크 : flutter.dev/docs/development/tools/sdk/releases)
그리고 원하시는 디렉토리에 SDK를 압축해제해줍니다
그 후 환경변수를 변경해줍니다
그 후 flutter 폴저에서 파워셀을 열고 flutter doctor를 입력하면
Dart SDK 및 필요한 파일들을 다운로드 해줍니다
그 후 안드로이드 스튜디오의 settings부분에서 Dart SDK경로를 바꿔줍니다
이후에 flutter --version을 쳐서 잘 동작하는지 확인해보면 됩니다
이후에 상위버전을 사용할 때에는 환경변수에서 경로를 원래대로 해주고
안드로이드 스튜디오에서 경로 설정을 다시 해주시면 됩니다
그리고 혹시라도 문제가 될 수 있으니 Flutter --version으로 더블체크 하시는것을 권장드립니다
(사실 dart sdk만 낮추면 2.0이상으로 올라가도 null safety를 적용 안할 수 있..)
앞서 말씀드렸다싶이 더 좋은방법이 있을 수 있습니다
- 이하 부분은 필자가 한 삽질과 이유등을 말씀드릴 예정이니 필요한 정보를 다 얻으신 분들은 뒤로가기를 눌러주세요
먼저 마이그레이션을 진행하던 도중 Null safety 가이드라인에 맞게 코드를 수정하던 도중
Cloud firestore에 특정 데이터가 넘어가지 않는 현상이 발견되었고
이는 필자가 Refactoring하던 도중 toJson부분에서 특정 키와 값을 누락했다는것을 확인할 수 있었습니다
혹시나 해서 최종 업데이트 부분에서도 확인해봤는데 동일했습니다..
그래서 거의 완성되가는 2.0버전으로 업데이트를 하려고 했는데
intro slider의 null safety버전이 아직 베타버전으로도 나오지 않았고
더 큰 문제로는 List부분을 조작하는 부분에서 add할 때는
cannot add to a fixed-length list 문제가 나타났고
remove하는 부분에서는 cannot remove from a fixed-length list 문제가 나타났습니다
이전에는 잘 작동하는 코드였는데 말이죠
보통 해당 문제는 Fixed length list를 선언 후 조작할 때 나타는 문제인데
필자가 사용한 방식은 Fixed length가 아닌데 발생했습니다
공식 dart API에 의하면 List를 선언할 때 다음과 같이 하게되는데
//크기 고정은 다음과 같은 방식으로
List<int> fixedLengthList = new List(5);
//크기가 변화할때는 다음과 같은 방식으로
List<int> growableList = [1, 2];
필자가 사용한 방식은 List<String> list = []; 으로 분명히 후자인데 해당 문제가 발생을 했습니다
이걸 문의넣고 답변받고 수정 + introslider부분 처리를 할 바에는
이전 버전으로 빨리 작업하고 앱을 업데이트 하는게 합리적이었고
처리를 하는 과정에서 1.22.6버전으로 다운그레이드가 되지 않아 3시간정도 삽질을 해서
혹시라도 필요하신분들을 위해 포스트를 하게 되었습니다
(사실 dart sdk만 낮추면 2.0이상으로 올라가도 null safety를 적용 안할 수 있..2)
Ps. 더 좋은 방법이 있으시면 공유좀 부탁드리겠습니다(굽신)
추가로 Fixed length list부분은 구현해보니 hive 신버전에 문제가 있는거 같습니다
해당사항은 이미 hive issue page에 문의를 남겼으니 좋은 결과 있길 바랍니다..
'해왔던 삽질..' 카테고리의 다른 글
Flutter - Multi image picker with SQFLite (0) | 2021.04.17 |
---|---|
Flutter - Stepper with a problem (0) | 2021.03.24 |
Flutter 2.0 - Callback Function (0) | 2021.03.13 |
공지 (feat. Flutter 2.0) (0) | 2021.03.04 |
Flutter - Bloc의 이해 with stream (0) | 2021.02.28 |