반응형

분류 전체보기 113

[flutter] Splash페이지 - Go router

하아.... 일단 내가 구현하고 싶었던 것은, 앱을 최초 실행시키면 스플래시 페이지가 뜨고 fade아웃 처리 후에 로그인 화면이 뜨는 것이었다.그런데 내가 router 설정을 잘못한 것인지 계속 에러가 발생하였다.에러 및 해당 코드를 살펴보자면import 'dart:async';import 'package:flutter/material.dart';import 'package:flutter_dotenv/flutter_dotenv.dart';import 'package:flutter_screenutil/flutter_screenutil.dart';import 'package:kakao_flutter_sdk/kakao_flutter_sdk.dart';import 'package:provider/provider..

카테고리 없음 2024.05.09

[개인프로젝트] 지갑전사 - DB설계

요즘 퇴사한 후에도 예전에 돈 쓰던 버릇이 계속 남아있어서 그런지 씀씀이가 너무 크다....신용카드를 사용하다보니 나도모르게 쓱쓱 사용하게 되는데 그래서 생각한 것이 가계부 앱을 만들어서 나의 지출을 획기적으로 줄여보자는 아이디어이다.기본적으로 기존의 앱들은 수입 지출에 대해서 작성은 하지만 금액제한은 따로 없기 때문에 그냥 귀찮아서 안적기도 하고, 요즘 앱들은 자동으로 내 지출내역을 써주기 때문에 그냥 신용카드 슥슥 긁는것과 별다른 차이를 느끼지 못했다.나는 일부로 불편하게 직접 적는 방식을 택할것이고, 하루마다 예산을 잡아서 하루에 내가 얼마나 사용하는지 직관적으로 보여주는 앱을 만들고자 한다.클라이언트는 flutter로 개발할 것이며, 백엔드는 nestjs로 진행, DB는 mysql을 채택하였다.일..

카테고리 없음 2024.05.08

nestjs ) 순환참조

개발하다가보니 갑자기 어떤 한 에러가 떴다......A circular dependency between modules. Use forwardRef() to avoid it. Read more: https://docs.nestjs.com/fundamentals/circular-dependency엥...? 이게 뭐여?나는 뭔지는 모르겠지만 모듈에다가 엔티티랑 다른 곳에서 모듈을 import에 추가했는데도 계속 저런 에러가 발생하는게 아닌가??그래서 구글링을 해보니 해당 에러는 순환참조라고 하는 거시어따!!순환참조는 만약 A 클래스와 B 클래스가 있을 때, A 클래스에서 B를 요구하고, B클래스에서도 A를 요구할 때 발생하는 에러인 것이었다.이는 A가 초기화가 되기 전에 B가 A를 의존하기 때문에 서로 에러..

카테고리 없음 2024.04.25

[flutter] 안드로이드 코틀린 버전 오류(compileDebugJavaWithJavac' task (current target is 1.8) and 'compileDebugKotlin' task (current target is 17) jvm target compatibility should be set to the same Java version.)

일단 글 쓰기 전에 한숨부터 쉬고 들어가겠다.... 하....... 결론적으로 말하면 완벽한 해결법을 찾지는 못했다. 그저 예전에 만들어 놓고 잘 작동하던 코틀린과 그래들 버전을 옮겨 붙여서 임시(?)로 해결을 하였는데 아마 추후에 또 문제가 발생하지 않을까 싶다..... 아무튼, 어제 새벽에 ios로 실컷 테스트 완료하고 이제 안드로이드도 테스트 해볼까 했는데 이게 왠걸.... 에러들이 파파파ㅏ파팍!!!!!!! 그 처참한 에러현장을 보면 Note: /Users/stufit/.pub-cache/hosted/pub.dev/flutter_secure_storage-4.2.1/android/src/main/java/com/it_nomads/fluttersecurestorage/FlutterSecureStora..

카테고리 없음 2024.04.15

[nestjs] flutter + nestjs 소셜로그인 인증 -1(nestjs 코드)

이번에 앱을 만들면서 인증전략에 대해 jwt 토큰 기반 인증을 채택하였다. 먼저, 로직구조는 다음과 같다. 백엔드에서는 플러터에서 소셜로그인 요청을 해서 소셜 서버에서 받은 인가코드(카카오) 또는 액세스토큰(네이버,구글) 을 받아서 해당 엑세스 토큰으로 유저 검색을 한다. 만약 유저가 null 이면 DB에 유저 정보를 담아서 회원가입을 시켜준 후에 엑세스 토큰과 리프레시 토큰을 발급하여 플러터로 전송해준다. 그리고, 엑세스 토큰이 만료되면 플러터 측에서는 TokenStorage에서 리프레시토큰과 엑세스 토큰을 관리하기 때문에 리프레시 토큰을 백엔드 서버로 보내서 백엔드에서는 리프레시 토큰의 유효성을 체크한 뒤 새로운 엑세스토큰을 플러터 측으로 전달해주는 로직이다. 코드는 다음과 같다. /* 유저쪽 컨트롤..

카테고리 없음 2024.04.11

[flutter] provider & GoRouter

1. provider? Provider는 Flutter 앱 전체에서 상태를 더 쉽게 관리하고 액세스할 수 있게 해주는 InheritedWidget의 래퍼입니다. 이는 상태 관리를 더 간단하고 확장 가능하며 재사용할 수 있도록 설계되었습니다. Provider를 사용하면 클래스의 단일 인스턴스를 여러 위젯에 노출할 수 있으며, 해당 인스턴스에 대한 모든 변경 사항은 이에 종속된 위젯의 재빌드를 자동으로 트리거합니다. ChangeNotifier: 변경 알림 API를 제공하는 확장 또는 혼합이 가능한 클래스입니다. 변경이 발생하면 notifyListeners()를 호출하여 모든 청취 위젯에 다시 빌드하도록 알릴 수 있습니다. ChangeNotifierProvider: ChangeNotifier를 수신하고 알리미..

카테고리 없음 2024.04.05

[flutter] 상태(state)란?

UI는 사용자가 서비스와 소통하는 매체를 의미한다. 이때 UI를 만들때에는 선언형과 명령형으로 구분이 가능한대, 명령형 UI는 상태가 되도록 명령하는 부분이고, 선언형 UI는 최종 상태를 선언하는 것이다. 코드로 설명하면 다음과 같다. 명령형 UI ViewA a = ViewA(); ViewB b = ViewB(); a.setColor(red) // 빨간색이 되어라 b.setColor(yello) // 노란색이 되어라 a.add(b) // b는 a의 child가 되어라 선언형 UI // 빨간색 A가 노란색 B를 child로 가지고 있다. return ViewA( color: red, child: ViewB( color: yello, ), ); 정리하자면, 선언형 UI 상태만 선언하면 UI는 자동으로 업데이..

카테고리 없음 2024.03.28

[dart] 가변객체, 불변객체

1. 가변객체란? 메모리에 할당한 뒤 값을 변경할 수 있는 객체이다. 가변객체에는 List, Set, Map, 커스텀 클래스 등이 있다. 가변객체는 값이 변경될 수 있으므로 값이 동일해도 새롭게 생성되는데 이는 항상 다른 메모리 주소를 반환한다. List a = []; a.add(1); // 메모리 주소를 유지하면서 값을 변경 가능함. Set a = {}; a.add(1); // 메모리 주소를 유지하면서 값을 변경 가능함. Map b = {}; b['name'] = '철수'; //메모리 주소를 유지하면서 값을 변경 가능함. A a = A(1); a.value = 2; //메모리 주소를 유지하면서 값을 변경 가능함. class A{ int value; A(this.value); } 2. 불변객체란? 메모리..

카테고리 없음 2024.03.20

스프링 빈과 오토와이어드란?

Spring Beans란? Spring Framework에서 Bean은 애플리케이션의 핵심을 이루는 객체입니다. 즉, Spring IoC(Inversion of Control, 제어의 역전) 컨테이너가 관리하는 객체를 의미합니다. Bean은 보통 애플리케이션의 구성 요소, 예를 들어 서비스, 리포지토리, 컨트롤러 등과 같은 역할을 합니다. Spring에서는 이러한 Bean들을 자동으로 생성하고 관리함으로써 개발자가 직접 객체의 생명 주기를 관리할 필요가 없게 합니다. Autowire란? Autowire는 Spring Framework에서 제공하는 의존성 주입(Dependency Injection, DI)의 한 방식입니다. 객체 간의 의존성을 자동으로 연결해주는 기능을 말합니다. 즉, 개발자가 수동으로 각..

카테고리 없음 2024.03.14

스프링 빈을 등록하는 2가지 방법

스프링에서 빈을 등록하는 방법은 2가지가 존재한다. 1. 컴포넌트 스캔과 자동 의존관계 설정 2. 자바 코드로 직접 스프링 빈 등록하기 먼저, 컴포넌트 스캔과 자동 의존관계를 설정하는 것을 알아보자면 - @Component 어노테이션이 있으면 스프링 빈으로 자동 등록이 된다. - @Controller 어노테이션이 붙으면, 이것 또한 스프링 빈으로 자동 등록되는데 이유는 컴포넌트 스캔 때문이다. @Componet를 포함하는 다음 어노테이션도 스프링 빈으로 자동 등록된다. - @Controller - @Service - @Repository 두번째로는 자바 코드로 직접 스프링 빈을 등록하는 방법이다. @Configuration 어노테이션을 이용하여 직접 빈을 등록한다. @Configuration public..

반응형