목록flutter (14)
HIT해

retrofit | Dart package retrofit | Dart packageretrofit.dart is an dio client generator using source_gen and inspired by Chopper and Retrofit.pub.dev pubspec.yamldependencies: retrofit: '>=4.0.0 =7.0.0 =2.19 build_runner: '>=2.3.0 json_serializable과 함께 사용하면 좋다는 것을 알 수 있다,기존의 Json 통신구조를 살펴보자.Future함수를 통해 http통신을 진행해 변환되지않은 JSON코드 받아오기JSON코드를 모델에 담아 직렬화직렬화된 JSON을 FutureBuilder에 담아 실행.FuterBuilde..

json_serializable | Dart packagejson serializable 은 json 직렬화 역직렬화 도구입니다. 자동 코드 생성:json_serializable을 사용하면 JSON 직렬화/역직렬화를 위한 boilerplate 코드를 자동으로 생성할 수 있습니다.이를 통해 개발자가 직접 fromJson(), toJson() 메서드를 작성할 필요가 없어집니다. 간편한 사용:클래스에 @JsonSerializable() 어노테이션을 추가하면 json_serializable이 자동으로 필요한 코드를 생성합니다. 이를 통해 JSON 처리 로직을 쉽게 구현할 수 있습니다. 유연한 설정:JsonSerializable 어노테이션에는 다양한 옵션을 설정할 수 있습니다. 예를 들어 필드 이름 매핑, 기본..

의존성 주입(Dependency Injection, DI)이란?의존성 주입은 객체지향 프로그래밍에서 자주 사용되는 소프트웨어 디자인 패턴 중 하나로, 객체가 필요로 하는 의존성을 외부에서 주입받는 방법을 의미한다. 이를 통해 코드의 결합도를 낮추고, 테스트와 유지보수가 용이해지는 장점이 있다.의존성 주입의 개념의존성(Dependency): 객체가 정상적으로 동작하기 위해 필요한 외부 객체나 자원을 의미한다. 예를 들어, 클래스 A가 클래스 B의 기능을 사용해야 한다면, 클래스 A는 클래스 B에 의존하고 있다고 할 수 있다.주입(Injection): 의존성을 외부에서 제공하는 행위다. 객체가 필요한 의존성을 직접 생성하지 않고, 외부에서 주입받음으로써 코드의 유연성을 높일 수 있다.의존성 주입의 장점결합도..

1. 내 애플리케이션 > 앱설정 > 플랫폼Android 패키지명, 키해시 설정2. 내 애플리케이션 > 앱설정 > 앱키네이티브 앱 키, REST API 키 복사 후import 'package:flutter/material.dart';import 'package:flutter_riverpod/flutter_riverpod.dart';import 'package:flutter/services.dart'; // SystemChrome을 사용하기 위해 필요import 'package:kakao_flutter_sdk_user/kakao_flutter_sdk_user.dart';import 'common/view/splash_screen.dart'; // SplashScreen의 경로에 따라 수정해주세요.void m..
백엔드와 통신으로 값을 받고 그 값들중에서 키값이 일치하는 값들만 받아서 저장해야하는 상황이 있었다. 내가 해결한 방식은 저장된 값의 길이만큼 반복문을 돌고 해당하는 키값을 배열에 저장하는 방식으로 해결했다. 해결방식 var pushData = context.watch().pushData; var matchedData = []; for (var i = 0; i < pushData.length; i++) { if (pushData[i].containsKey(ownPillId.toString())) { matchedData.add(pushData[i][ownPillId.toString()]); } } pushData에는 전체 값이 들어가있고 matchedData에는 빈 배열이 들어가있다. pushData가 ..
setState는 호출하면 해당 StatefulWidget과 하위 위젯들이 변경되고 watch 메서드는 ChageNorifier 상태 변화를 감지하고 호출 위치부터 하위의 모든 위젯들이 재빌드 됩니다. 그리고 두가지 모두 하위에 변화가 없는 위젯이 있다면 변화없는 위젯들은 재빌드되지 않습니다. Flutter는 효율적인 렌더링을 위해 위젯 트리를 비교해 실제 변화가 있는 위젯만을 재빌드하기 때문이죠. 별다른 차이가 없어보이는데 공통된 부분이 있는데 어째서 공존하는걸까? 사용 방법과 동작 방식에 차이가 존재한다. setState는 새로운 상태를 설정하고, 그 후 Flutter 프레임워크에게 위젯의 build 메서드를 다시 호출하도록 요청합니다. 따라서 setState를 호출하는 것은 상태가 변경되었음을 Fl..
Provider를 사용하다보면 렌더링이 지속적으로 반복하는 경우가 있습니다. 우선 Provider 사용법을 알아봅시다. watch -> Provider 변화를 감지해 데이터를 얻고 해당 메소드가 포함된 위젯을 재빌드 read ->Provider의 데이터를 읽고 변경할 수 있다. select -> watch와 유사하게 변화를 감지하고 위젯을 재빌드하지만 Provider내의 특정 속성의 변화만을 감지할 수 있다. select 예시다 class User { User({required this.name, this.age}); final String name; final int age; } class MyWidget extends StatelessWidget { @override Widget build(Build..
팝업 내부의 버튼을 누르지 않고 외부를 눌렀을때 팝업이 꺼지면서 네비게이터 이동을 하는 방법은 간단하다. showDialog의 barrierDismissible을 true로 바꿔주고 WillPopScope 위젯은 사용해 팝업창이 닫힐 때(pop이 발생할 때) LoginScreen으로 이동하게한다. onWillPop을 팝업창이 닫히려고 할때 호출되는 함수다. 아래에 예시 코드가 있다. void corretDialog(context) { showDialog( context: context, barrierDismissible: true, builder: (context) { return WillPopScope( onWillPop: () async { Navigator.push(context, MaterialP..