일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 배움순서
- 플러터 테스트
- 다트 테스트
- 안드로이드
- 2D 그래픽 라이브러리
- 8시간 삽질
- permission_handler
- widget test
- refresh 토큰
- 에러 메시지를 잘보자 ^^
- pubspec
- pubspec.yaml
- 2D graphics library
- dart
- TDD 개발 방법론
- 객체 지향 설계
- Same parameter
- 토큰갱신
- 플러터
- Android
- SOLID 원칙
- retorift
- 테스트 주도 개발론
- Flutter
- 안드로이드를 위한
- 다트
- 인코딩방지
- Parameter specified as non-null is null
- Refresh Tocken
- dart test
- Today
- Total
목록전체 글 (20)
Landroid
플러터에는 크게 3가지의 테스팅 기법이 있습니다. 유닛 테스트, 위젯 테스트, 통합 테스트. 하지만 이것을 가지고 TDD를 작성하기는 매우 어렵습니다. (플러터 TDD 정보가 너무 부족해....) 그래서 해외 자료들과 공식문서, 국내 블로그(특히 티스토리)를 참고하여 플러터에서 TDD를 적용하는 방법에 대해 설명하겠습니다. 1. 유닛 테스트 (UnitTest) 유닛 테스트, 단위 테스트라고 불리는 이 테스팅 기법은 메소드, 클래스 같은 작은 단위를 테스트할 때 쓰입니다. 하지만 서버통신이나 DB 접근이 필요한 테스트일 경우, 의존성 때문에 작성하기 더 어려워집니다. 그래서 Mockito 같은 테스트 프레임워크로 의존성을 줄이고 테스트를 작성할 수 있습니다. 유닛 테스트를 구현하기 위해서는 기본적인 테스트..
보통 토큰을 사용하기 위해서 Access 토큰이 리소스에 접근하고 Refresh 토큰이 Access 토큰을 갱신하도록 만들어야 합니다. Refresh로 토큰을 갱신하는 방법 중에는 Workmanager나 Interceptor 등이 있는데 이번 시간에는 Interceptor로 토큰을 갱신하는 방법을 알아보겠습니다. Interceptor란? 우리가 클라이언트와 서버 사이에서 통신을 합니다. interceptor 해당 네트워크 통신을 하는 중간에 요청과 응답을 보내거나 받거나 간섭하는 역할을 수행합니다. TMI interceptor에는 크게 두 가지가 있는데, Application Interceptor와 Network Interceptor가 있습니다. Interceptor로 응답 확인 internal clas..
선행지식(위젯 트리) 플러터는 어떻게 위젯을 렌더링할까? + 발표 영상 플러터는 어떻게 위젯을 렌더링할까요? UI가 업데이트되었을 때 Widget, Element, Render Object, 3가지 트리가 어떤 방식으로 동작하는지 알아봅시다. medium.com 모든 것은 위젯이다. 라기에는 우리 눈에 굉장히 불편한 위젯이 하나 있습니다. StatefulWidget & State class Some extends StatefulWidget { @override _SomeState createState() => _SomeState(); } class _SomeState extends State { @override Widget build(BuildContext context) { return ...; } ..
안녕하세요. 안드로이드 하다가 플러터로 넘어간 초보 개발자입니다. 플러터를 독학으로 배웠을 당시에는 한국어든 영어든 워낙 자료도 없고 해서 꽤나 애를 먹은 기억이 나네요 (Flutter SDK 설치하는데만 3일 날린 삽질이 아직도 생생합니다 ㅠㅠ) 이 블로그를 작성하고 있는 2021년 3월 30일 기준으로 워낙 다양한 자료, 블로그, 유튜브, 강의 등등등이 나와있지만 아직도 한국어로 된 로드맵이 거의 없거나 덜 알려진 좋은 자료들이 널리 알려지지 않았던 것과 같이 아직 불편한 점들이 여러 가지 있어서 이 글을 작성하려 합니다. ㅎㅎ *주의* 이 글은 개념 설명이 아닌 하나의 로드맵을 작성한 글이기 때문에 모든 내용을 설명하지 않는다는 점 참고 바랍니다. Dart 먼저 플러터 하기 전에 해당 프레임워크가 ..
github에서 .gitignore를 추가하면 template 에는 flutter가 없습니다. 하지만 이미 플러터에서 플러터 전용 gitignore가 있습니다. flutter/flutter Flutter makes it easy and fast to build beautiful apps for mobile and beyond. - flutter/flutter github.com 그래서 이걸 이제 어떻게 사용하느냐 우선 프로젝트를 생성할 폴더에서 아무것도 쓰이지 않은 .gitignore를 만듭니다. 1. github에서 .gitignore를 추가한 채 생성, 클론 후 로컬에 저장 2. 프로젝트를 생성할 폴더에서 git init 한 다음, .gitignore 생성 이제 비어있는 .gitignore를 생성하셨..
추상 팩토리 패턴은 객체의 생성과 조합을 캡슐화하여 일관된 객체를 생성하고 프로그램 구조에 영향을 크게 받지 않는 패턴입니다. 간단하게 Dart로 만든 클래스들을 가지고 설명하겠습니다. 참고로 scottt2.github.io/design-patterns-in-dart/ 에서 가져와서 수정한 코드입니다. 더보기 Dart를 선택한 이유 객체지향의 대표주자인 자바는 Dart와 문법적으로 그렇게 큰 차이는 없습니다. 있다면 자바의 interface와 다트의 mixin정도 있겠네요 ^^. 그리고 자바에 불필요하게 붙는 코드들로 인해 코드 보기 어려울 수 있다고 판단해서 Dart로 설명하려 합니다. abstract class Edible { void grab(); } class Chicken implements E..
Future 함수를 Future Builder를 통해 호출하시는 경우가 있습니다. 하지만 정작 실행해보면 함수에서 호출될 값까지 가져오기 까지 여러번 호출되는 것을 보실 수 있습니다. 이는 자원 낭비로 이어질 수 있기 때문에 가능하면 해결하시는 것이 좋습니다. Future Builder에서 함수를 중복 호출 방지하는 방법이 2가지 있습니다. 하나는 initState로 Future 함수를 변수에 저장하는 방법입니다. class FutureSample extends StatefulWidget { // Create instance variable @override _FutureSampleState createState() => _FutureSampleState(); } class _FutureSampleSta..
Skia is an open source 2D graphics library which provides common APIs that work across a variety of hardware and software platforms. It serves as the graphics engine for Google Chrome and Chrome OS, Android, Flutter, Mozilla Firefox and Firefox OS, and many other products. Skia는 다양한 하드웨어 및 소프트웨어 플랫폼에서 공통 API를 제공하는 오픈 소스 2D 그래픽 라이브러리입니다. 구글 크롬, Chrome OS, Android, Flutter, Firefox, Firefox OS 등 많..
플러터로 테스트와 디버깅하는 방법에 대해 설명하겠습니다. 테스트 종류 앱 테스트하기(플러터 공식문서) 유닛 테스트: 단위 기능, 방법 또는 클래스를 테스트합니다. 위젯 테스트 : 단일 위젯을 테스트합니다. 통합 테스트 : 완성된 앱이나 앱의 상당 부분을 테스트합니다. 1-1. 유닛 테스트 단위 테스트 소개 Mockito 우선 pubspec.yaml 파일에서 dev_dependencies에 test 라이브러리를 추가합니다. dev_dependencies: test: 그다음 테스트할 클래스나 메서드가 있으면 가져다가 테스트 코드에 작성하시면 됩니다. 저는 공식 페이지에 있는 예제를 그대로 가져다 쓰겠습니다. // lib/counter.dart class Counter { int value = 0; void ..
"테스트 주도 개발" 테스트 코드를 먼저 작성한 후, 구현 코드 작성 단계와 리팩토링 단계를 짧은 주기로 반복하여 개발하는 '테스트 주도 개발 방법론' 테스트 작성 : 실패하는 테스트 코드를 작성한다. 개발 코드 작성 : 방금 실패한 테스트 코드를 통과하기 위해 코드를 작성한다. 테스트 통과 : 작성한 코드를 다시 테스트하여 테스트를 통과한다. 리팩토링 : 통과한 코드에서 불필요한 부분을 제거하고 가독성을 높여 코드를 개선한다. 반복 TDD를 사용하는 이유? 1. 객체지향적인 코드 생산 2. 개발, 테스트, 재설계, 디버깅 시간 단축(이건 사람마다 다르다.) 3. 기능 추가 개발에 용이함 +반대로 사용하지 않는 이유?) 생산성 저하로 우리는 그동안 개발 코드 먼저 테스트는 나중에 했지만 갑자기 테스트 먼..