본문 바로가기

전체 글

(32)
Riverpod : 리버팟 Provider를 사용하려면 먼저 전체 앱을 ProviderScope로 감싸줘야 한다. void main() { runApp( ProviderScope( // ProviderScope로 감싸줘야 한다 child: MyApp(), ), ); } provider 에서 관리되는 데이터를 읽기 위해 필요한 것 ConsumerWidget WidgetRef ref.watch : UI관련 코드에만 사용할것. provider 값이 변경되면 build 함수를 다시 실행시켜줌. ref.read : 실행순간 단 1번만 provider 값을 가져온다.(단발성) // 사용할 Provider final valueProvider = Provider((ref) { return 0; }); // Stateless --> Comsume..
빈 화면 터치. 키보드(자판) 숨기기 GestureDetector( onTap: () { // 키보드 올라왔을때, 빈곳 터치시 내려가게 설정 FocusScope.of(context).requestFocus(FocusNode()); print('touch'); }, child: // 하위 위젯 부분 Container( child: ?? // 위젯 ) ) GestureDetector로 감싼뒤에 // 키보드 올라왔을때, 빈곳 터치시 내려가게 설정 FocusScope.of(context).requestFocus(FocusNode()); 해당 코드를 적용하면 된다. 그런데 간혹, 코드를 적용했는데도 안되는 경우가 있는데, 하위 부분이 Container 일 경우, color 속성을 적용 후, 코드를 다시 실행시켜 확인해 보길 바랍니다. # 왜 colo..
[GoRouter] Go vs Push GoRouter는 Flutter의 선언적 라우팅에 널리 사용되는 패키지입니다. Navigator 2.0 API를 기반으로 하며, 사용하기 쉬운 API를 바탕으로 딥 링크 및 기타 일반적인 탐색 시나리오를 지원합니다. GoRouter를 사용할 때는 두 가지 별도의 옵션이 있습니다. go push GoRouter 를 사용한 선언적 Routing 두 개의 하위 경로가 있는 하나의 상위 경로로 구성된 간단한 경로 계층 구조 GoRouter( initialLocation: '/', routes: [ // top-level route GoRoute( path: '/', builder: (context, state) => const HomeScreen(), routes: [ // one sub-route GoRout..
싱글턴 패턴 Singleton Pattern 상세 내용은 생략하고, 핵심만 간단히 남긴다. class Singleton { // 1. Private한 생성자 생성 (빈생성자 생성) /// Dart에선 생성자가 없을경우 자동으로 Public한 생성자를 만들어 버린다. /// 이를 막기위해 Private한 생성자를 만들어줘서 자동으로 만들어주는 생성자가 생성 되지 않도록 방지하는 것. Singleton._privateConstructor(); // 2. 생성자를 호출 /// 생성자를 호출하고 반환된 Singleton 인스턴스를 _instance 변수에 할당 static final Singleton _instance = Singleton._privateConstructor(); // Singleton() 호출시에 _instance 변수를 반환 facto..
직렬화(Serializable)란 무엇인가? 보통 Java, Json-Serialization 라는 단어들을 사용하여 직렬화를 이야기 하곤 한다. 위키백과에서의 '직렬화'에 대한 설명 컴퓨터 과학 의 데이터 스토리지 문맥에서 데이터 구조 나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일 이나 메모리 버퍼 에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다. 요약하면 ⇒ 데이터 구조나 Object(객체)를 저장이나 전송에 적합한 다른 데이터 형식으로 변환하는 과정 이러한 과정을 마샬링 이라고도 하는데, 마샬링은 파이썬 표준 라이브러리(Python standard library)에서 "직렬화하다"는 용어와 동일하게 간주되지만, 자바 계열 RFC 2713에서는 동일하게 간주되지 않는다. ..
Flutter 플러터 블로깅 리스트 블로그 기록으로 남겨두어야 한 리스트를 개인저장소에 관리하는 것조차 쉽지 않아 개인 블로그에 작성합니다. 미래의 저에게 더 열심히 노력해야 한다고 이야기 하고 싶네요... 아래의 블로깅 키워드는 계속 변경될수 있습니다. 공개 목록 Unit Test gskinner 플러터에서 자주 쓰이는 Dart 언어 특징들 Dio + Retrofit + JsonSerializable 통한 서버 통신 Flutter Favorite program Dart: isolate 예정 발행 예정 목록 네비게이션 뒤로가기 시점에 무언가 하려면 안드로이드 백버튼 막기 (두번 눌러야 종료) Form을 이용한 로그인 화면 만들기 TextEditingController 를 이용한 텍스트, 커서 제어 Json-Serializeable 의 코드..
2022년 회고 이러한 회고 글은 처음 쓴다. 솔직히 무엇부터 써야 할지 모르겠다. 9월에 퇴사하고 구직 중이 었지만, 좋은 기회가 생겨 구직전에 한번 내가 배워보면서 하고 싶었던 일을 하게 되었다. 잠깐 5월 언저리 까지 이지만, 하고 싶던 일도 하면서, Flutter 개발자로써 조금 부족한 점을 느꼈던 터라 오히려 지금이 기회라고 생각하고 있다. (면접일정이 잡혀 있었으나 취소하게되었습니다. 면접 기회를 주신 각 기업별 담당자님들 감사합니다.) 구직시장에 찬바람이 부는건 맞는거 같지만 그래도 수준높은 수준의 개발자 수요는 줄어 들지 않는것 같다. 사실 이전 직장에서는 제품출시만을 위하여, 그 또한 나를 위한 것이라 생각하고 개발하였지만, 사실 지금 되돌아보면 '아직 그정도 수준으로는 구직시장에서 매력적인 개발 자는 ..
MVP MVC와 유사한 형태를 가지지만, 분명한 차이점이 있다. MVP = Model + View + Presenter Model MVC와 Model과 동일한 개념. 비지니스 모델 개념과 유사하다. 다음의 3가지 개념이 Model 의 핵심이다.(데이터, 상태, 비지니스로직) 만약 당신이 예약 플랫폼 앱을 개발한다면, 예약이 제일 중요한 Model 이 될것이다. 이 예약에는 예약시간 예약하는 사람수 선주문 내역 등등.. 이러한 데이터들을 포함 할것이다. 위의 중 ‘선주문 내역’은 할수도(true), 안할수도(false) 있다. = 상태를 가지고 있다. 위의 중 ‘선주문 내역’은 할지 안할지 물어본다.(비지니스로직) View MVC에서와 마찬가지로 UI 요소를 담당한다. 하지만 이제 Activity와 Fragmen..