Flutter로 처음 앱을 만들면 특별한 설정 없이도 flutter화면이 정상적으로 잘 나오는 것을 확인할 수 있다. 그리고 보통은 그 첫번째 화면에서부터 앱을 만들어 가기 시작한다. 사실 android에서 flutter화면을 띄우기 위해서 어떤 일을 하는지 알지 못해도 우리가 앱을 개발하고 실행하는데 아무런 문제가 없다. 하지만 Flutter가 구동되는 원리를 조금만 더 이해하고 개발한다면 Android Native와 Flutter을 유연하게 구성해서 다양한 요구사항을 처리할 수 있다. FlutterEngine의 생성 FlutterEngine를 생성하는 기본 코드를 확인하면 각 OS에서 Dart의 코드를 어떻게 실행하게 되는지 알수 있다. 이를 알면 FlutterEngine을 좀더 다양하게 설정해서 사..
Immutable? 불변의 객체 이걸 왜 사용해야 할까? Dart로 클래스를 만들면 기본적으로 mutable하다. 하지만 이런 객체(특히 Model)를 사용하게 되면 원하지 않는 데이터의 변경이 발생하는 경우가 있다. 아래 코드를 한번 보자 class Document { String id; String title; Document({required this.id, required this.title}); } void main() { final document = Documet(id:’1234’, title:’개발자놀이!’); final isValidTitle = checkTitleValidation(document); print(‘${document.title}: ${isValidTitle}’); } b..
많은 프로그램 언어들이 열거형을 지원한다. Dart도 물론 enum 타입을 사용할 수 있는데 보통 그룹화해 사용할 수 있는 상수 값들을 하나의 묶음으로 만들기 위해서 사용한다. 프로그램 언어들 마다 enum을 다양하게 활용할 수 있는 기능을 제공하는데 dart에서는 enum에 추가적인 기능을 정의할 수 없고 오직 단순한 선언과 사용만을 지원한다. (dart 2.17부터는 enum도 일반 클래스 처럼 쉽게 기능을 정의하고 사용할 수 있게 되었다 - 본문 마지막 참고) enum의 기본 사용법 예를 들어 아래와 같이 공지사항 게시판, 자유게시판으로 게시판이 타입이 구분된다고 가정해보자 enum을 사용하면 아래와 같이 선언해서 사용할것이다. enum BoardType { notice, free, undefine..
Google I/O 2022에서 Flutter 3.0이 발표 되었습니다. 1년 전쯤 flutter 2.0으로 업데이트 된 이후 1년 만에 메이저 버전이 업데이트 되었는데 개인적으로 의미 있는 것들이 있어 정리해 보고자 합니다. https://medium.com/flutter/introducing-flutter-3-5eb69151622f Introducing Flutter 3 The culmination of our journey to multiplatform UI development on phone, desktop, and web medium.com 1년 전 flutter 2.0는 Dart 2.12.0 적용으로 Null Safety대응 문제로 flutter 1.x와 전혀 호환이 되지 않았습니다. 2.0..
팀에서 여러 개발자와 함께 앱을 개발할 때 가장 먼저 결정해야 하는 것이 바로 코딩 컨벤션이다. 팀에서 결정한 규칙에 따라서 코드를 만들어야 하고, 규칙을 정했으면 개발자들은 그 규칙에 따라 코드를 만들어야 하지만 개발을 하다보면 이런저런 핑계로 잘 지켜지지 않을 때가 많다. 조금은 강제적으로 이런 규칙을 적용해야 할 때가 있고, 가능하면 자동으로 포메팅정도는 해주면 좋을 것 같다. 그래서 등장한 것이 Lint이다. 대부분의 언어에서 Lint기능을 확장 프로그램으로 지원하는데 Flutter개발에서도 당연히 Lint를 적용할 수 있다. 현재 Flutter진영에서 사용하는 Lint는 크게 두가지로 나뉘는데 커뮤니티 중심으로 만들어진 lint패키지와, Dart에서 공식적으로 출시한 lints와 이를 flutt..
Java를 사용해본 개발자라면 equals 와 hashCode 메소드를 override해보았을 것이다. 이 두함수는 객체가 같은지를 비교하고, HashMap이나 HashSet등에서 hash된 값을 사용하기 위해 접근하는 함수이다. hashCode를 이용해서 동일한 객체가 있는 지를 비교하고, 적당한 위치에 데이타를 저장하게 된다. 특히 data클래스들은 이 함수들을 잘 override해주어야 한다. kotlin에는 data class가 equals와 hashCode를 별도의 추가 작업 쉽게 사용할 수 있도록 자동화 되어 있는데, dart에서 kotlin의 data class에 해당하는 기능을 제공하는 라이브러리가 Equatable이다. 아래 java, kotlin, dart의 코드를 비교해보자 java에..
요즘 앱들은 다국어 지원이 필수라고 할 수 있다. 안드로이드와 iOS에서는 자체적인 다국어 처리 방법을 잘 제공하고 있지만 flutter에서는 flutter_localizations이라는 라이브러리를 이용해서 다국어 처리를 한다. Flutter에서 국제화 기본 설명은 아래 링크를 참고 하기 바란다. https://docs.flutter.dev/development/accessibility-and-localization/internationalization Internationalizing Flutter apps How to internationalize your Flutter app. docs.flutter.dev 기본 다국어 처리는 flutter_localizations를 이용해서 할수 있다. 기본 사..
DI DI (Dependency injection) 와 테스트 코드에 대한 설명은 서로 연관성이 많기 때문에 함께 해야 할것 같다. 안드로이드 개발자라면 DI에 대해서는 많이 들어 보았을 것이다. 안드로이드 진영에서는 Dagger가 거의 DI의 국룰처럼 사용되고 있기 때문에 한번쯤은 사용해 보았을거라고 생각 한다. 사실 DI라는 것은 특정 라이브리리 없이도 적용이 가능하다. DI가 라이브러리에 의존적인 기능이 아니라 개념 적인것이라는걸 먼저 강조하고 싶다. 특히 처음 앱을 개발하는 개발자들이 범하는 오류 중 이런 개념적인 요소들을 특정 라이브러리(Dagger)에 의존적인 기능이라고만 생각하기도 하는데 DI를 왜 사용해야 하는지를 먼저 알고서 사용하기 바란다. 개인적으로 앱 개발을 할때 DI가 필요한 가장..
- Total
- Today
- Yesterday
- RenderObject
- flutter 다국어처리
- Widget Tree
- flutter_secure_storage
- navigator
- Element LifeCycle
- DART
- dart 2.17
- python3
- flutter l10n
- flutter i18n
- json_serializable
- widget element
- Android
- Route
- Flutter3.0
- Mutiple Flutter
- MVVM
- freezed
- Flutter
- Flutter TDD
- dart enum
- flutter2.0
- enum member
- Flutter LifeCycle
- flutter element
- FlutterEngine
- LocalKey
- flutter mvvm
- StatefulWidget LifeCycle
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |