STFUL Lifecycle
·
Flutter/Flutter
didUpdateWidget()와 setState()의 차이점 didUpdateWidget(): Flutter 프레임워크가 자동으로 호출하는 메서드로, 부모 위젯에서 전달된 속성값이 변경될 때 실행됨. 즉, 이 메서드는 개발자가 직접 호출하지 않고 Flutter가 필요한 시점에 실행하는 생명주기와 관련된 메서드다.setState(): 개발자가 명시적으로 호출하여 위젯의 상태를 변경할 때 사용하는 메서드. setState()를 호출하면 Flutter에게 해당 위젯의 상태가 변경되었음을 알리고 build()를 다시 실행하여 UI를 업데이트 할 수 있게 된다 Dirty와 Clean은 뭐지~?😟 - Dirty: 위젯의 상태나 속성이 변경되어 다시 빌드가 필요한 상태를 말한다. setState()가 호출되면 위..
build method 와 render tree를 모르고 hot reload를 논하지마라
·
Flutter/Flutter
핫리로드가 될 때 화면이 아예 다시 그려지는건가? 라는 의견이 나왔다 아닌 것 같은데 왜 아니지 !!!!!!!!!!!!!설명을 똑바로 못했다 왜 설명을 못했을까. 내 문제점은 다음과 같았다 1.빌드메서드가 정확히 뭘 하는지 몰랐다.2.핫리로드랑 빌드메서드의 연관관계를 몰랐다. 그렇다면 알아보자 ㄱㄱ The framework replaces the subtree below this widget with the widget returned by this method, either by updating the existing subtree or by removing the subtree and inflating a new subtree, depending on whether the widget returned..
abstract, fromMap, abstract
·
Flutter/챗지피티랑놀.기
abstract`abstract`는 11살 아이가 쉽게 이해할 수 있게 이렇게 설명할 수 있어:생각해보면, abstract는 설계도 같은 거야. 예를 들어, 자동차를 만든다고 할 때, 설계도는 "자동차에는 바퀴가 있어야 하고, 핸들이 있어야 해"라고 말해. 하지만 바퀴가 몇 개인지, 핸들이 어떤 모양인지는 알려주지 않아. 그건 실제로 자동차를 만들 때 결정해.즉, abstract는 클래스가 어떤 기능을 가져야 하는지 정해주지만, 그 기능이 정확히 어떻게 동작하는지는 나중에 구현하라는 의미야.abstract는 Dart에서 추상 클래스나 추상 메서드를 정의할 때 사용하는 키워드다. 추상 클래스는 직접 인스턴스화될 수 없으며, 반드시 서브클래스에서 구현되어야 한다.역할:공통 인터페이스 제공: 클래스가 가져야 ..
Little Guardian 앱 목표 기간 스프린트 구성
·
Flutter/새싹
현재 작업이 완료 된 아이들을 포함하여 기간을 조정함.후에 달라질 수도 있지만, 다음과 같은 틀에 벗어나지 않도록 함완성 목표 기간 ~ 10/21스프린트 기준모델 설계와 Firebase 연동 완료핵심 ViewModel 및 UI 설계 완료WebRTC 소리 듣기 기능과 Firebase 연동Push 알림(FCM) 연동 및 최종 테스트테스트 및 디버깅 완료앱 배포 준비 및 최종 마무리스프린트별 목표첫 번째 스프린트: 모델 및 Firebase 연동 완료모델 설계 완료 (Guardian, Child 모델)Firebase 연동 (Firestore 컬렉션 설계 및 기본 CRUD 기능 구현)FirebaseManager 초기 설정 및 데이터 연동 테스트두 번째 스프린트: ViewModel 및 UI 설계, Firebase ..
폴더 구조를 계속 변경하는중... ~ing
·
Flutter/새싹
앱의 폴더구조란, 앱이 어떤 아키텍쳐 혹은 디자인 패턴을 표방하고 있는지 가장 잘 볼 수 있는 곳이라고 생각한다. 처음에 내 폴더 구조는 이랬다.앱 폴더 구조lib/│├── core/ # 비즈니스 로직, 데이터 관리│ ├── models/ # 데이터 모델 클래스들│ ├── services/ # 외부 API, 데이터베이스 서비스│├── ui/ # 화면 관련 코드│ ├── view/ # 화면 UI 구성│ ├── widgets/ # 공통으로 사용하는 위젯│ ├── viewModel/ # UI와 비즈니스..
플러터 프로젝트에서 DI 주입은 어떻게 이루어지는가
·
Flutter/Flutter
이번 프로젝트(리를 가디언) 에서는 DI(Dependency Injection)를 사용해 더 효율적으로 프로젝트를 관리하려고 한다. Firebase가 시그널링 서버로서 작동하지 않을 경우를 대비하고, 앱이 커질 때도 유연하게 대처하기 위해서다. 먼저 간단한 용어설명을 하겠다DI란?DI는 객체들이 서로 의존하지 않고, 외부에서 필요한 객체를 주입하는 방식이다.이를 통해 코드의 결합도를 낮추고, 변경이나 확장이 용이해진다.DI를 사용하는 이유확장성: 앱이 커지거나 다른 서비스로 교체될 때, 코드를 쉽게 수정할 수 있다.테스트 용이성: 의존성 주입으로 Mock 객체를 사용해 테스트를 독립적으로 진행할 수 있다.유지보수성: 객체 간의 강한 결합을 피하고, 코드를 모듈화하여 관리하기 쉽다.흠... 다음과 같은 설..
fromMap을 사용해 map데이터 쉽게 사용하기
·
Flutter/Dart
내가 쓰는 모델 중에 fromMap 이라는 코드가 있다. Map 데이터를 객체로 변환하는데, 이게 무슨말일까? fromMap은 Map형식의 데이터를 객체로 바꿔주는 함수다. Map은 key와 value로 데이터를 저장하는 방식인데, fromMap은 이 데이터를 클래스에 맞게 변환해준다.예를 들어, 서버에서 받은 아이의 정보가 아래처럼 있다면:{ 'id': '123', 'name': '아이 이름', 'photoUrl': 'https://photo.com' }fromMap을 사용해 이 데이터를 Child라는 객체로 변환하고, 그 후에는 child.name, child.id 로 접근해 데이터를 쉽게 사용할 수 있게 된다. 코드를 보며 사용해보자.- models/child.dart class Child { f..
Provider 기초개념정리 + 예제
·
Flutter/Flutter
Provider란?Provider는 상태 관리를 쉽게 하게 해준다. 여러 화면에서 같은 상태를 공유할 수 있고, 상태가 변경되면 UI를 자동으로 업데이트한다.class Counter with ChangeNotifier { int _count = 0; int get count => _count; void increment() { _count++; notifyListeners(); // 상태 변경 알림 }}ChangeNotifier상태가 변경될 때 UI에 알림을 보내 다시 그리도록 한다.class MyModel extends ChangeNotifier { int value = 0; void increment() { value++; notifyListeners(); // U..
2. 앱에 어울리는 애니메이션 구현하기 <AnimationContainer 편>
·
Flutter
Flutter에서 AnimatedContainer 사용법: 애니메이션을 쉽게 구현하는 방법Flutter에서 애니메이션은 사용자 경험을 향상시키는 중요한 요소 중 하나입니다. 그러나 복잡한 애니메이션 코드를 작성하는 것은 때로 부담스러울 수 있습니다. 이때, AnimatedContainer는 애니메이션을 간편하게 구현할 수 있는 매우 강력한 위젯입니다. 이번 글에서는 AnimatedContainer를 사용해 상태 변화를 부드럽게 처리하는 방법을 알아보겠습니다.AnimatedContainer란?AnimatedContainer는 Flutter에서 상태 변화에 따라 Container의 속성들을 자동으로 애니메이션화해주는 위젯입니다. 일반적인 Container와 비슷하지만, 속성 값이 변경될 때마다 그 변화가 애..