지금 회사에서 플러터를 거의 마무리하면서, 내가 토이 프로젝트를 하지 않는 이상 이제 플러터와는 살짝 멀어지면서, 네이티브에 더 집중할 것으로 예상이 된다. 오늘은 이전 글이었던, 2021.10.04 - [Programing/Android Studio With Kotlin] - flutter/dart /JSON과 직렬화 api 서버통신 자동으로 만들기 / retrofit, dio, retrofit_generator, build_runner, json_serializable /TIL # 64 flutter/dart /JSON과 직렬화 api 서버통신 자동으로 만들기 / retrofit, dio, retrofit_generator, build_runner, json_ 오늘은 api 서버통신에 대한 글을 작성..
오늘은 api 서버통신에 대한 글을 작성하려 한다. 참고 자료는 코딩 팩토리님의 영상과 아래 공식 문서를 참고했다. https://flutter-ko.dev/docs/development/data-and-backend/json JSON과 직렬화 어느 시점부터 웹 서버와 통신하지 않거나 구조화된 데이터를 적절하게 보관하지 않는 모바일 앱을생각하기 어려워졌습니다. 네트워크와 연결된 앱을 제작할 때, 결국에는 제법 괜찮은 JSON을사 flutter-ko.dev 우선 이 직렬화를 자동으로 쓰지 않으면 생길 수 있는 문제점에 대해서 설명하겠다. 보통 우리가 서버에서 api를 통해 json 데이터를 받아오는데, 모델 클래스를 만들어 받는 경우가 흔하다. class User { final String name; fi..
이 글은 코딩 팩토리님의 equatable 강의를 바탕으로 참고했습니다. 이제 회사에서 새로운 앱을 만들기 앞서, 필요한 플러터 지식을 쌓기 위해 고전해야겠다고 생각이 들어 필요할 것 같은 플러그인을 찾고 있는 중이다. 그중에 Formz라는 로그인 기능 구현 시 유용한 플러그인을 발견하게 되었는데, 같이 사용할 수 있는 Equatable이라는 플러그인을 알게 되었다. Formz를 배우기 앞서 Equatable에 대한 개념을 잡고 가고자 한다. 객체의 인스턴스 우선 인스턴스에 대해 알아볼 필요가 있다. 객체의 인스턴스에 대한 개념은 지난 싱글톤 글에 대해서 설명한 적이 있다. 2021.07.11 - [Programing/Android Studio With Flutter(Dart)] - flutter/Dar..
이따금씩 플러터 앱을 실행하면 이러한 오류가 뜬다 영어 뜻대로 flutter를 실행하기 위한 cocoaPods의 저장소가 오래되어, 종속성을 충족하기 어려워 Pod 레포지터리 업데이트를 해주세요. 라는 뜻이다. 그렇다면... 해줘야지.. 우선 왼쪽에 프로젝트 창에서 ios 안에 Podfile.lock을 지워준다. 저기 연두색 Podfile.lock을 우선 지워준다. 그러고 나서 터미널 창에 다음과 같은 명령어를 입력해준다. cd 내 앱이 있는 경로/ (ex test앱이라 가정할 때, folder/test) 입력한다. 그다음에는 cd test/ios를 입력하여 ios로 들어가 준다. pod install --repo-update 라고 입력하고, 앱을 실행해 보자. 만약에 아래와 같은 오류가 뜬다면 지정된 ..
안드로이드 네이티브 개발자들에게는 익숙한 바텀 내비게이션 탭 바에 대해서 글을 작성하려고 한다. 갓러터에서 이와 비슷한 패키지가 있다. 따로 외부에서 가져오지 않아도, 내부 패키지에 있기 때문에 그대로 사용해도 된다. 바로 DefaultTabController이다. 위에 사진은 내가 간단한 프로젝트를 위해 사용한 탭이다. 위와 같은 탭바를 코드로 살펴보자. 사용법 나같은 경우는 main.dart에서 맨 처음 앱 화면에서 사용하기 때문에 (보통 이런식으로 한다) Scaffold를 DefaultTabController로 감싸준다. return DefaultTabController( length: 3, child: Scaffold( ... ) ... ); length는 총 아이템에 개수를 이 메서드에게 알려주..
오늘은 애니메이션 처리에 대해 글을 쓰려고 한다. 여러 유용한 패키지가 있었지만, 기존 flutter가 가지고 있는 AnimatedContainer를 한번 사용해 보려고 한다. 우선 flutter ui가 나는 아직 미숙하므로, 조잡한 예시를 보여주겠다. 정말 조잡하다. 하지만 실전에서는 아래와 같이 사용했다. 위에 방법은 기본적인 코드만을 짰기 때문에 나온 것이다... 아래 영상처럼 사용할 수도 있겠다. 헤헤 내가 만들었다. 물론 Gif를 사용하는 패키지를 포함시킨 거라 중간중간 Duration을 삽입하는 애를 많이 먹었다. 그렇다면 코드를 보자 사용법 우선 dart파일 두 가지를 준비한다. main.dart이다. import 'package:flutter/material.dart'; import 'an..
참으로 오랜만에 글을 쓴다. 오랜만에 글을 쓴다는 말도 자주 사용하는 말이다. TIL은 매일매일 써줘야 하는데 최근에 회사 업무에 집중한 나머지.. 역시나 아직 나는 부족한가 보다. 오늘은 flutter에서 외부 음악(유튜브 음악, 멜론 음악)이 재생될 때, 앱 내에서의 재생(음성, 음악)을 실행하면, 외부음악이 잠시 꺼지고, 앱 내의 음악이나 음성을 모두 다 재생하고 끝냈을 때, 외부 음악이 다시 켜지는 이 복잡한 과정을 컨트롤할 수 있는 패키지를 소개하겠다. 첫 번째 패키지는 https://pub.dev/packages/audio_session audio_session | Flutter Package Sets the iOS audio session category and Android audio at..
늦게까지 회사에서 공부한 뒤 방금 줄넘기 2000개를 마치고, 샤워를 하고 나왔다. 회사에서 오늘 회의를 밤늦게 하는 바람에 오늘 배운 내용을 적을 수는 없어.. 시간도 늦고 간단하게 오늘 자바 환경변수 설정에서 헤매던 도중 알게 된 오류 해결법을 올려두겠다. 해결법 general error during semantic analysis: unsupported class file major version 60 이러한 오류가 떴다. 이 오류는 아직 gradle이 자바 16 버전을 지원하지 않는 뜻이라고 한다. 그러므로, 자바 15 버전을 다운로드하여 적용하면 된다. 너무 간단히 끝났다. 그렇다. 이렇게 하면 된다. 뭐 추가로 다운받는법과 환경변수를 추가하는 방법도 올리겠다. https://www.oracle..
오늘 하루도 마무리하면서 알게 된 내용을 정리해보려고 한다. 이 글을 다 쓰고 난 뒤에는 패스트캠퍼스 강의를 하나 들을 생각이다. 회사에서 운영중인 패스트 캠퍼스 아이디라.. 이번에 처음 써보게 되는 거라 설렌다. 우선 역시나 지금 앱을 개발하면서 앱 버전 정보를 가져오려 했으나, 안드로이드에서 앱 버전, 아이폰에서 앱 버전을 각각 가져와야 한다는 에러가 발생했다. 기존에는 이 패키지를 사용하였다. https://pub.dev/packages/package_info_plus package_info_plus | Flutter Package Flutter plugin for querying information about the application package, such as CFBundleVersion..
요즘 뜻대로 코드가 잘 짜여서 기분이 좋다. 오늘은 회사앱에도 적용 SmartRefresher이라는 패키지에 대해서 소개해 볼까 한다. https://pub.dev/packages/pull_to_refresh/install pull_to_refresh | Flutter Package a widget provided to the flutter scroll component drop-down refresh and pull up load. pub.dev 우선 이곳에 smartRefersher를 dependencies에 추가시켜주자. dependencies: pull_to_refresh: ^2.0.0 다음은 홈페이지에서 가지고 온 예제이다. 주석 처리를 하면서 천천히 설명을 하는 시간을 가져보고자 한다. 그렇다..
flutter 공부 한창이다. 오늘 사용한 함수는 sort라는 함수이다. 보통 List 함수에 있는 리스트의 여러 인자들을 오름차순이나 내림차순으로 정렬하기 위해 사용된다. 기본 적인 사용 방법을 보자. 사용법 int type 오름차순 void main(){ List numbers = [400, 59, 13, 7264]; numbers.sort(); print(numbers); } numbers라는 배열에다가 그냥 sort() 함수를 사용하면, 작은 인자부터 큰 인자까지 배열을 바꾸어 준다. //numbers = [13, 59, 400, 7264]; 그러면 반대로 내림차순을 알아보자. int type 내림차순 void main(){ List numbers = [400, 59, 13, 7264]; numb..
참고 문헌 https://flutter-ko.dev/docs/cookbook/persistence/sqlite SQLite에 데이터 저장하기 로컬 디바이스에 많은 데이터를 저장하고 쿼리를 요청해야 한다면, 로컬 파일이나 키-값 저장소 대신 데이터베이스를사용해보세요. 일반적으로 데이터베이스는 다른 로컬 솔루션보다 더 빠른 flutter-ko.dev 마침내 오랜만에 글을 쓰게 되었다. 오늘도 채팅 작업을 잘 마무리하고 그동안 유용하게 써왔던, sqlite에 대한 사용법을 작성할 생각이다. 9시 50분에 차를 타고 퇴근을 해야 하기 때문에 다소 간략하게 쓸 수도 있지만, 집에 가서도 쓰면 되니 뭐.. 간단하게 내부 디비를 왜 써야 하는지 설명하겠다. 내부 데이터베이스(sqlite)의 필요성 보통 우리는 데이터..
출처 책 (처음 배우는 플러터 - 유동환) 오늘 알아볼 것은 flutter에서 사용하는 Dart의 장점 중에 장점 역할을 맡고 있는 녀석을 소개한다. 선택 인자와 이름 있는 인자이다! 1. 선택인자(positional optional parameter) 이름이 상당히 깁니다. 선택인자는 자신이 선택할 수 있는 인자입니다. 한 마디로 이 인자를 선택해도 되고, 안 해도 되는 것입니다. 예제를 보면서 살펴 보겠습니다. //선택인자(positional optional parameter) int num1 = 100; int num2 = addNumber(100) //inc = 1 대입 int num3 = addNumber(100, 20) //inc = 20 대입 // 넣은 인자 값들을 더해서 int 값으로 반환..
제목:플러터를 배워가는 중 새로운 회사를 들어가는 일도 얼마 남지 않았다. 많은 시행착오를 겪고, 이제는 새롭게 시작할 일만 남았다. 새로운 회사에서는 플러터를 요구를 했기 때문에, 현재 열심히 강의를 들으면서 공부 중이다. 다행인 건 생각보다 어렵지 않아서 즐기면서 배우는 중이다. 그러다 보니 한 번에 정리하지 못하고 요즘 글을 많이 못 쓴 것 같다. 게다가 최근에 오랫동안 보지 못했던 친구들을 보니, 시간적 여유가 많음에도 불구하고, 많이 접하진 않았다. 하지만, 플러터 책도 사고, 코딩 셰프 강의도 거의 다 들은 상태이다. 할 건 해두고 하는 스타일을 유지하고 싶다. 하지만 이렇게 주구장창 강의만 듣는 다고 실력이 늘지는 않는다는 것을 알고 있다. 프로젝트를 하나 하고 싶은데, 그전에 우선 회사에서..
여자 저차 해서 Java -> Kotlin -> Flutter 순서대로 개발언어를 배우게 되었다. 점점 복잡해지는 느낌이지만 오히려 좋다. 더 폭넓게 배우기도 하고, 다른 언어도 같이 병행하면서 배우고 있어서 지루한 느낌이 없다. 아직은 배우고 있지만, 그래도 어느 정도 배운 것을 정리하는 차원에서 글을 써보려고 한다. 이 글을 쓰기전에 Flutter 설치 법을 쓰려고 했는데, 터미널 사용법에서 잠깐 막혀서 화나서 꺼버렸다 헤헤.. 설치가 중요하긴 한데, 이미 인터넷에 많은 자료가 나와 있으니, 내가 배운 것을 정리하는 것이 더 중요하다는 것을 파악했다. 우선 나 같은 경우는 코딩셰프님의 영상을 보며 익힌 점을 정리하므로, 출처는 남긴다. 정리 Widget 오늘 배운 것은 여러 가지이지만, 크게 두 가지..