Flutter Provider - 꿀팁 ? ~ ? 🎈
·
Flutter
요즘 회사 업무 일이 바빠서 오랜만에 글을 적어봅니다 Flutter에서 Provider를 사용하면서 꿀팁들을 조금 정리해보았습니다. 카운터 앱 제작 dependencies: flutter: sdk: flutter provider: 우선, provider 패키지를 프로젝트에 추가하기 위해 pubspec.yaml 파일에 위와 같은 코드를 추가하고 패키지를 가져옵니다. 1. Flutter pub add provider 2. yaml 파일에 provider : 추가 후 Flutter pub get 두개중 편한대로 사용하시면 됩니다. count_provider import 'package:flutter/material.dart'; class CountProvider with ChangeNotifier { int ..
Flutter - Unit Testing
·
Flutter
플러터 유닛 테스팅 유닛 테스팅 (Unit Testing) 첨엔 핫리로딩의 효율성이 정말 좋다보니 테스팅을 할 필요성을 못 느꼈었는데요. 점차 코드를 추가하다보니 테스트를 해야겠단 생각이 들었습니다. 이번에 테스팅을 공부하면서 다트가 정말 잘 만들어졌구나 하는 걸 느꼈습니다. 사실 다트의 테스팅도 다른 테스트와 비슷합니다. 용어가 조금 다를 뿐이죠. 이번 글을 통해 제가 개발하며 배운 테스팅을 정리해보려 합니다. 플러터에서 쓰이는 테스트 방식은 크게 3가지인데요. 유닛 테스트, 위젯 테스트, 통합 테스트입니다. 뒤로 갈수록 테스팅의 규모가 커지는 대신, 시간이 더 오래걸리죠. 이번 글에선 유닛 테스팅을 알아보도록 할께요. 1. Unit Testing 유닛 테스팅은 메소트나 클래스처럼 작은 단위를 테스트할..
Android - Garbage Collection(GC)
·
Android
Garbage Collection Java는 Garbage Collection(GC)을 이용하여 메모리를 관리한다. 필요에 따라 GC가 실행되고, 그 과정에서 사용하지 않는 객체들을 정리해 준다. Garbage Collection의 동작 원리 아래 기술되는 내용은 GC의 모든 것을 다루지 않는다. 그저 GC라는 것이 있고 그것이 어떤 방식으로 돌아간다- 하는 간략한 요약 정도일 뿐이다. 1. 자바에서는 Garbage Collection(또는 GC)를 이용하여 메모리를 정리한다. 1-1. GC는 더이상 사용되지 않는 쓰레기 객체들을 정리하는 작업을 한다. 1-2. GC는 필요에 따라 자동으로 실행된다. (2-2의 경우에 실행된다.) 2. GC에 의해 관리되는 메모리는 Young과 Old로 나뉜다. 2-1...
Android - Manifest & Components
·
Android
Manifest 안드로이드 시스템이 앱의 코드를 실행하기 전에 확보해야 하는 앱에 대한 필수 정보를 시스템에 제공하는 목록 앱의 패키지 이름 앱에서 사용되는 컴포넌트(액티비티, 서비스, 브로드캐스트 리시버, 컨텐트 프로바이더) 권한(Permission) 앱에서 요구하는 하드웨어와 소프트웨어 특징 1. Package name and Application ID 매니페스트 파일의 Root element() 에는 해당 앱의 패키지 네임이 반드시 기재되어야 합니다. "com.ready.example" 이라는 패키지 네임의 manifest 파일 ... 여기서 manifest의 패키지 네임은 우리가 앱을 빌드하여 APK 를 추출하는 과정에서 Android Build Tool 에 의해 다음 2가지 목적으로 사용됩니다...
Flutter - ListView
·
Flutter
ListView Flutter의 ListView 위젯은 스크롤 가능한 항목 목록을 표시하는 데 사용된다. 한 번에 화면에 맞지 않는 많은 수의 항목을 표시하는 데 사용할 수 있다. ListView 위젯은 세로 및 가로 스크롤을 모두 지원하며 앱의 요구 사항에 맞게 사용자 지정할 수 있다. 'ListView' 위젯은 빌더 함수, 위젯 목록 또는 'SliverChildListDelegate'를 비롯한 다양한 방법을 사용하여 항목으로 채워질 수 있다. 빌더 기능은 일반적으로 데이터베이스 또는 웹 서비스와 같은 일부 데이터 소스를 기반으로 목록 항목을 동적으로 생성해야 하는 경우에 사용된다. ListView 위젯은 바운싱 또는 스냅과 같은 다양한 스크롤 동작도 지원합니다. scrollDirection, item..
Flutter - MaterialApp
·
Flutter
MaterialApp 안드로이드 디자인을 기반으로 앱 작성 (디자인만 적용이라 안드, IOS 둘 다 빌드 가능) CupertinoApp 애플 디자인을 기반으로 앱 작성 (디자인만 적용이라 안드, IOS 둘 다 빌드 가능) MaterialApp의 역할 MaterialApp은 Flutter 앱의 최상위 위젯 앱이 시작될 때 생성되는 첫 번째 위젯. 앱을 구축하는 데 필수적인 몇 가지 중요한 기능을 제공 내비게이션: MaterialApp은 앱의 화면 사이를 쉽게 이동할 수 있는 내장 내비게이션 시스템을 제공한다. 테마: 머티리얼 디자인에는 디자인 언어를 사용하는 모든 앱에서 일관된 모양과 느낌을 만드는 데 사용되는 사전 정의된 색상, 타이포그래피 및 기타 디자인 요소 세트가 있다. MaterialApp은 테마..
Flutter - Android , Ios
·
Flutter
android 빌드 확인 사항 최신 버전의 Android SDK 및 Android Studio를 설치했는지 확인. 프로젝트 보기를 사용하여 Flutter 프로젝트에서 "android" 폴더를 열기. android 디렉터리 아래의 build.gradle 파일에 지정된 Gradle 버전을 확인. 이전 버전인 경우 최신 버전으로 업데이트할 수 있다. app 디렉터리 아래의 build.gradle 파일을 수정하여 minSdkVersion, targetSdkVersion 및 서명 구성과 같은 Android 빌드 설정을 구성한다. 여기에서 종속성과 플러그인을 추가할 수도 있다. Android 매니페스트 파일을 사용자 정의해야 하는 경우 app/src/main 디렉토리에 AndroidManifest.xml 파일을 만..
Flutter - yaml & pubspec.yaml
·
Flutter
yaml 또는 yml YAML(YAML Ain't Markup Language)은 소프트웨어 애플리케이션의 구성 파일에 일반적으로 사용되는 사람이 읽을 수 있는 데이터 직렬화 언어. YAML 파일을 작성할 때 파일이 잘 구조화되고 쉽게 읽고 유지 관리할 수 있도록 몇 가지 규칙을 따르는 것이 중요. 규칙 들여쓰기 사용: YAML 파일은 들여쓰기를 사용하여 중첩 구조를 정의한다. 두 개의 공백을 사용하여 각 수준의 들여쓰기를 파일 전체에서 일관성 있게 들여쓴다. 적절한 구문 사용: YAML에는 데이터 유형을 정의하기 위한 특정 구문이 있다. 키-값 쌍을 정의하려면 "key: value" 형식을 사용 목록 항목을 나타내려면 "-" 형식을 사용 여러 줄 문자열은 "\n" 형식을 사용 문자열에 따옴표 사용: 특..
Flutter - abstract class
·
Flutter
abstract class Flutter의 추상 클래스는 직접 인스턴스화할 수 없지만 서브클래싱해야 하는 클래스이다. 추상 클래스는 다른 클래스가 따라야 할 청사진 역할을 한다. 여러 클래스에서 사용할 수 있는 공통 메서드 및 속성 집합을 제공하여 일관성을 보장하고 코드의 중복성을 줄인다. 추상 클래스는 상속받는 클래스의 종류를 특정한다. ex) 인간과 호랑이는 동물이라는 공통 추상클래스를 가진다. 프로브와 질럿은 프로토스 지상 유닛이라는 공통 추상클래스를 가진다. extends를 사용해서 상속받는다. 상속은 단 하나만 받을 수 있다. class Probe extends ProtossGroundUnit {} 암시적 인터페이스 플러터는 interface 예약어가 없으므로, class 또는 abstract ..
Flutter - 날짜 & 시간
·
Flutter
시나리오 백엔드의 데이터베이스에는 UTC 기준시로 날짜시각을 저장한다. 백엔드와 프론트엔드는 ISO-8601 표준 날짜시각 형식 문자열로 주고 받는다. UTC 기준 마이크로초를 제거한 ISO-8601 표준 형식 예시는 2022-06-24T10:37:34+00:00와 같다. 백엔드에서 생성한 날짜시각 객체는 이력, 로그와 관련된 경우가 많으므로 프론트엔드에서는 출력만 가능할 뿐 변경할 수 없다. 프론트엔드에서 생성한 날짜시각 객체는 사용자의 일정과 관련된 경우가 많으므로 백엔드에 저장 시 폼 검증이 상대적으로 느슨하다. 백엔드에서 날짜시각 문자열을 받아 출력해야 하는 경우 UTC 기준 ISO-8601 문자열을 객체로 만든다. DateTime.parse() final utc = DateTime.parse('..