일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 플러터 개발
- Flutter
- JPA스터디
- 기술면접공부
- 자바공부
- nestjs스터디
- 스프링부트
- nestjs공부
- JPA공부
- K8S
- 스프링 공부
- 기술공부
- 스프링
- Axon framework
- Kafka
- 알고리즘공부
- 카프카
- 스프링부트공부
- 코테준비
- JPA
- 스프링공부
- 코테공부
- DDD
- 플러터 공부
- JPA예제
- querydsl
- JPA 공부
- 프로그래머스
- nestjs
- 자료구조공부
- Today
- Total
목록[Mobile] (84)
DevBoi
1. 패키지명 일괄 변경 필요 package: -> pagekage: 2. flutter sdk 설정 필요 3. flutter upgrade, flutter pub get 필요 4. Podfile 내 ios build target 11주석 해제 필요 5. Podfile 내 RunnerTest 삭제 필요 [계속 업데이트 예정 + 메모용]
상태 변화나 다른 위젯간의 데이터를 전달할때 생성자로 매번 전달해줘야 할까...? 그건 아니다. 전역으로 Provider에 값을 넣고, 필요한 위젯에서 꺼내어 쓸수있다. 로컬 데이터베이스는 아니고. 앱이 시작할때 넣어놓고 변경 및 사용이 가능한 느낌이다. 대신 , 앱을 끄면 사라지는 데이터임은 명심해야한다. 로그인 사용자에 대한 정보, 인가가 끝난 userId에 대한 정보를 해당 Provider에서 관리를 해야겠다 어렵지 않다. https://pub.dev/packages/get get | Flutter Package Open screens/snackbars/dialogs without context, manage states and inject dependencies easily with GetX. p..
리스트뷰는 문제가 없는데, Future로 관리를 하고싶은, 함수에 대해서는 동작을 하지 않는 이슈가 있다. 예를 들면 데이터가 업데이트되어 다시 위젯으로 돌아왔을때 해당 아이템에 대한 갱신이 되지않았다. 이문제로 꽤 긴시간을 보내면서 정리를 하게 된다. child: FutureBuilder( future: groupList, builder: (context,AsyncSnapshot snapshot){ if (snapshot.hasData && snapshot.connectionState == ConnectionState.done) { print(snapshot.toString()); return ListView.builder( padding: EdgeInsets.symmetric(horizontal: 2..
아래와 같이 플러팅 버튼을 누를때, 다이얼 로그 에 대한 노출을 한다. 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..
State 하위 메서드에서는 아래와 같은 메서드를 오버라이드 해서, 초기 세팅을 할 수 있다. @override void initState() { super.initState(); } 근데 비동기 함수를 중간에 넣으면 잘 동작을 안하는 경우가 있다. supser.initState가 위 함수 완료 이전에 진행되면 빈화면이 노출된다. 방법은 크게 생성자와 비동기 함수 동작이다. 생성자는 다른 포스팅에서 많이 다뤄서 아래와 같이 다른 방법을 공유한다. @override void initState() { asyncMethod(); super.initState(); } asyncMethod() async { dataInterface.init().then((value) => { setState((){ reportL..
태그 같은 느낌으로 사용하고싶었고, 필요했다. 유틸성 클래스를 작성했고, 사용방법은 아래와 같다. 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..
팝업창은 간혹 필요하여 모듈로 구현하면 편하다. 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..
다양한 폼 빌더를 구현했다. 사실 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..
FormBuilder는 폼을 관리하기 위해 편하게 제공해주는 모듈이다. 특정 액션시 Form의요소를 동적으로 변경해보자 우선 동적 요소 추가를 해주기 위한, 위젯이다. Expanded( child: MaterialButton( color: Theme.of(context).colorScheme.secondary, child: const Text( "Add Score", style: TextStyle(color: Colors.white), ), onPressed: () { setState(() { fields.add( NewScore( name: 'score_${fields.length}', )); }); }, ), ), 해당 버튼을 클릭하면, fields에 NewScore라는 위젯이 추가가 된다. 그리고 ..
플러터의 데이터 개념은 조금 복잡하다 자바에 익숙한 나로서는, 순차처리나 동기식 처리가 익숙한데, 플러터는 모든 변수에 Nullable한 처리를 해줘야 하고, 위젯간의 데이터를 넘길때도 잘못처리하게 되면, 빈값이 넘어가게 된다. 이는 비동기식으로 값을 추출하는 것 때문에 발생되는게 주로 이유인데, 아래 소스를 보자 기존에는 아래와 같이 코딩되어 변수 초기화 시점의 이슈가 많았고, const Friend(String userId){ this.userId; } Friend(userId); 아래 처럼 바꿨다. class RecommendFriend extends StatefulWidget { final String userId; RecommendFriend({required this.userId}); @ove..