🐦 Flutter 25

AES-256 암호화

회사 프로젝트에서 AES-256 암호화 방식을 사용하여 다른 업체와 유저 정보를 주고 받아야 하는 업무가 있었다 좀 더 자세히 말하자면 다음과 같은 과정이 진행되어야 했다 Client : 유저 정보를 AES-256 암호화하여 @@업체의 url 의 parameter 에 포함시켜 웹뷰로 띄움 @@업체 : 유저의 액션을 받을 시, 유저의 정보를 우리 Backand 에 request parameter 에 담아서 전달 (유저의 정보는 Client -> @@업체 -> 백엔드 이렇게 넘어가게 된다는 뜻) Backand : @@업체에서 받은 유저 정보를 AES-256 복호화하여 유저의 정보를 파악 가능 업체의 요구사항은 다음과 같다 UserKey 값은 매체사 회원의 개인정보 및 중요한 회원정보 값이 그대로 넘어오는 것..

🐦 Flutter 2023.04.01

[Flutter] RenderFlex children have non-zero flex but incoming height constraints are unbounded

"RenderFlex children have non-zero flex but incoming height constraints are unbounded" 이 에러는 대체 언제 나는 것일까? 자주 마주친 에러였지만 늘 그때마다 뭔가 시도해봤고 잘 되었고 넘어가고.. 그랬었다. 이제는 이 에러의 원인을 확실히 알아둘 때라고 느꼈다 또 다시 마주칠 때는 헤매이는 시간 없이, 수정 시간을 줄이기 위해. 한 번 정리할 시간이 필요하다고 느꼈다 이 에러의 메세지를 직관적으로 해석해보면 높이 제약이 제한되어 있지 않다고 한다. 예시를 통해 알아보자 Screen → Column → Column → Expanded → ERROR 보통 위와 같은 위젯 트리일 때 이 에러가 발생한다 위의 위젯 트리를 좀 더 자세히 알아보..

🐦 Flutter 2023.02.03

[Dart] Factory Constructor

Factory Constructor Factory Constructor 는 특이하게도 메서드처럼 바디가 있음 무조건 현재 클래스의 인스턴스를 반환해줘야 함 void main(){ final parent = Parent(id: 1); print(parent.id); final child = Child(id: 3); print(child.id); } class Parent { final int id; Parent({ required this.id, }); factory Parent(int id) { return Parent(id: id); // error } } class Child extends Parent { Child({ required super.id, }); } 하지만 에러가 나는 것을 볼 수 있다..

🐦 Flutter 2022.12.11

[Dart] 슈퍼 이니셜라이저

Dart 2.17 부터 새로운 단축 구문을 사용하여 생성자 매개변수를 슈퍼클래스에 전달할 수 있습니다. 참고로 이전 구문은 다음과 같습니다. class Person { Person(this.name); final String name; } // Old way: before Dart 2.17 class Employee extends Person { Employee(String name, this.salary) : super(name); final int salary; } 즉 부모 생성자에 인수를 전달하기 위해 super 를 명시적으로 호출해야 했습니다. Dart 2.17 부터 다음과 같이 할 수 있습니다. // New way: Dart 2.17 and above class Employee extends P..

🐦 Flutter 2022.12.11

[Flutter] 푸시 알람 눌렀을 때 다른 페이지로 이동

먼저 푸시 알람은 기본적으로 앱의 상태 즉 포그라운드, 백그라운드, 종료 상태에 모두 다르게 핸들링하게 된다.이것은 flutterfire 에 더 자세히 써져있고 친절하니 공식 문서를 참고하는 것이 좋다.정리해보면    To listen to messages whilst your application is in the foreground, listen to the onMessage stream. final localNotification = Get.find();FirebaseMessaging.onMessage.listen((RemoteMessage rm) async { dev.log("FCM.onMessage.listen()"); dev.log(rm.notification?.title ?..

🐦 Flutter 2022.11.17

[Flutter] Statusbar color 화면마다 다르게 적용

와이파이, 시간, 배터리가 표시되어 있는 상태바 Color 를 변경하는 방법 1. 안드로이드 appBar 안에 다음 코드를 넣는다 systemOverlayStyle: const SystemUiOverlayStyle( statusBarColor: Colors.white, statusBarIconBrightness: Brightness.dark, ), 배경 흰색, 아이콘들은 검정색 2. iOS appBar 안에 다음 코드를 추가한다 systemOverlayStyle: const SystemUiOverlayStyle( statusBarColor: Colors.white, statusBarIconBrightness: Brightness.dark, statusBarBrightness: Brightness.ligh..

🐦 Flutter 2022.09.26

[Flutter] part 와 import 차이를 알아보자

Part 와 import 차이 3개의 파일의 간단한 예시를 통해 알아보겠습니다. 1. library_main.dart library counter; export 'package:flutter/material.dart'; part 'library_part.dart'; class Counter extends AbstractCounter { // we can access library private variable _count even though it is in a different // file because we made it part of the same library reset() => _count = 0; } 첫번째 줄은 이 라이브러리의 이름을 명시해줍니다 -> counter 이것은 part 로부터..

🐦 Flutter 2022.08.20

[Flutter] 자동 생성 JSON 직렬화 코드와 비교

모델 클래스에서 JSON 직렬화 User Class 모델을 사용해보겠습니다. User Class 모델에는 map 구조에서 새로운 User 객체를 생성하기 위한 생성자인 User.fromJson() 생성자 User 객체를 map 구조로 변환하기 위한 메서드인 toJson() 메서드 class User { final String name; final String email; User(this.name, this.email); User.fromJson(Map json) : name = json['name'], email = json['email']; Map toJson() => { 'name': name, 'email': email, }; } 코드 생성 라이브러리를 통한 JSON 직렬화 여러 다른 라이브러리들..

🐦 Flutter 2022.08.20

Dart Named Constructor

Named Constructor Dart 에서 한 class 는 여러 constructor 를 가질 수 있는데, 특이한 점은 각 constructor 에 이름을 붙인다는 것이다. 명명된 생성자를 사용하여 클래스에 대해 여러 생성자를 구현하거나 추가 명확성을 제공한다. class MyPoints { final int accumulatedPoint; final int usedPoint; final int expirePoint; MyPoints({ required this.accumulatedPoint, required this.usedPoint, required this.expirePoint, }); MyPoints.initial({ this.accumulatedPoint = 0, this.usedPoint..

🐦 Flutter 2022.08.12

Flutter 생명주기

Flutter Life Cycle Widget 이론 플러터에는 Widget 단위로 개발이 된다. 이 Widget 은 불변의 법칙을 갖고 있으며 변경이 필요하면 기존 위젯을 삭제해버리고 완전히 새로운 위젯으로 대체한다. 이것이 플러터의 기본 원칙이다. Container(color: Colors.red) Container(color: Colors.blue) 예를 들어, 위처럼 Container 위젯의 color 를 red -> blue 로 바꿔었다고 해서 이는 기존 위젯을 바꾼 것이 아니라 삭제 후 새로운 위젯으로 만든 것이다. Life Cycle 이란 "생명 주기" 라는 단어 뜻에서 볼 수 있듯이 플러터에서는 위젯이 생성되고 사라질 때까지의 주기 를 관찰 해볼 것이다. 플러터에서는 대표적인 위젯 State..

🐦 Flutter 2022.07.05