본문 바로가기

전체 글

(730)
[Flutter] Dialog 콜백 값 핸들링 아래와 같이 플러팅 버튼을 누를때, 다이얼 로그 에 대한 노출을 한다. floatingActionButton: FloatingActionButton( onPressed: ((){ showDialog( context: context, builder: (BuildContext context){ return AlertDialog( content: CreatePopup(), ); }) 이후에 값을 받아올때는 아래와 같이 구현한다. showDialog( context: context, builder: (BuildContext context){ return AlertDialog( content: CreatePopup(), ); }).then((value) { setState(() { reportList = valu..
[Flutter] initState 이전 데이터 세팅 State 하위 메서드에서는 아래와 같은 메서드를 오버라이드 해서, 초기 세팅을 할 수 있다. @override void initState() { super.initState(); } 근데 비동기 함수를 중간에 넣으면 잘 동작을 안하는 경우가 있다. supser.initState가 위 함수 완료 이전에 진행되면 빈화면이 노출된다. 방법은 크게 생성자와 비동기 함수 동작이다. 생성자는 다른 포스팅에서 많이 다뤄서 아래와 같이 다른 방법을 공유한다. @override void initState() { asyncMethod(); super.initState(); } asyncMethod() async { dataInterface.init().then((value) => { setState((){ reportL..
[Kafka] 파티셔너 프로듀서 에서는 파티셔너를 제일 많이 쓴다. 총 2개의 파티셔너에 대한 지원을 해준다. UniformStickyPartitioner, RoundRobinPartitioner 2개의 파티셔너를 제공한다. 카프카 클라이언트 라이브러리에서 파티셔너를 지정하지 않는 경우, UniformStickyPartioner가 파티셔너로 기본 설정된다. 1. 메시지 키가 있을 경우 동작 UniformStickyPartioner와 RoundRobinPartitioner 둘다 메시지 키가 있을때는 메시지 키의 해시값과 파티션을 매칭하여 레코드를 전송한다. 동일한 메시지키가 존재하는 레코드는 동일한 파티션 번호에 전달 된다. 만약 파티션 개수가 변경되는 경우,메시지키와 파티션 번호 매칭은 깨지게 된다. 즉 메시지키가 있는 경우,..
[Kafka] 프로듀서 카프카 토픽을 사용할때 가장많이 사용하는 도구이다. 프로듀서 애플리케이션을 개발해서, 토픽에 메시지를 발행하고 일반적인 환경에서는 Producer 애플리케이션을 개발해서 토픽에 메시지를 넣는다. 카프카의 데이터는 시작점이 프로듀서이다. 프로듀서 애플리케이션은 카프카에 필요한 데이터를 선언하고 브로커의 특정 토픽의 파티션에 전송한다. 프로듀서는 리더 파티션이 있는 브로커와 통신하게 된다. 즉 프로듀서는 토픽의 리더파티션을 가지고있는 브로커와 통신하고 다른 팔로워 파티션은 이를 복제한다. 또한 이런 애플리케이션이 자바가 아닌 라이브러리를 사용하면, 공식적으로 지원하는 라이브러리가 아니기떄문에 문제가 발생할 수 있다. 따라서 자바로 개발하는게 좋다. 파티셔너,배치생성 단계를 거치고 데이터를 브로커로 전송하게 ..
[Flutter] Chip 사용 태그 같은 느낌으로 사용하고싶었고, 필요했다. 유틸성 클래스를 작성했고, 사용방법은 아래와 같다. import 'dart:ui'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; class Chipbuilder{ static Widget build(String label, Color color) { return Chip( labelPadding: EdgeInsets.all(0.1), label: Text( label, style: TextStyle( color: Colors.white, ), ), backgroundColor: color, elevation: 6.0, shadowColor: Colors.gre..
[JPA] ElementCollection Entity 에서 properties로 아래와 같이 저장하고싶을때가 있다. List tags 이를 해결하고 JPA는 어떻게 관리하는 지 알아보자 우선 내가 사용하는 Entity 타입이다. package com.boiler.flutterbackend.app.group.dto; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.AllArgsConstructor; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import java.time.LocalDateTime; import java.util.List; @AllArgsConstructor @NoArg..
[Flutter] 팝업 구현 팝업창은 간혹 필요하여 모듈로 구현하면 편하다. showDialog( context: context, barrierDismissible: true, // 바깥 영역 터치시 닫을지 여부 builder: (BuildContext context) { return AlertDialog( content: CreateGroupPopUp(userId: userId), insetPadding: const EdgeInsets.fromLTRB(0,80,0, 80), ); } ); 단순히 이렇게 하고, content 클래스를 구현해주면 된다. import 'package:flutter/material.dart'; import 'package:flutter_form_builder/flutter_form_builder.dart..
[Flutter] 다양한 FormBuilder,FormValidator 다양한 폼 빌더를 구현했다. 사실 UI 와, 폼 빌더의 동작방식에 대한 내용인데. 어느 폼같이 비슷비슷하기때문에 정리용으로 작성한다. 폼은 formkey로 동작한다. final _formKey = GlobalKey(); @override Widget build(BuildContext context) { return SingleChildScrollView( child: Column( children: [ FormBuilder( key: _formKey, // enabled: false, onChanged: () { _formKey.currentState!.save(); }, autovalidateMode: AutovalidateMode.disabled, initialValue: const { 'gender..