[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
안녕하세요 먼저 강의는 잘보고있습니다. Gorouter에 대해 다시 정리하는 도중 하나 궁금한게 생겨서 질문드립니다. 이론에서 사용하셨던 프로젝트 기준으로 만약 이런식으로 context.go('/one'); Home -> one로 이동한다고 가정했을때 Home에 print build One에 print build를 해두면 flutter: One Screen build flutter: HomeScreen didChangeDependencies flutter: HomeScreen build 이렇게 찍히더라구요 (Home은 ful위젯으로 바꿔서 찍어봤습니다) 제가 의문인건 Home -> One 이동하는건데 왜 Home이 다시 빌드가 되며, 이는 메모리 낭비라고 생각하는데 다른 대안이나 원래 구조상 이렇게 짜여져있는건가요? 기존방식이었던 Navigator.of(context).push( MaterialPageRoute(builder: (_) => OneScreen()) ); 이런식으로 이동을 한다면 기존스택은 남아 제가 원하는 대로 flutter: One Screen build만 찍히는데, 감사합니다.
자바가 느려서인지, 아니면 제가 첨부터 접근을 잘못한건지 모르겠습니다. ㅠㅠ package lecture4; import java.util.*; public class Prob1062 { static List<Set<Character>> sets = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); if(k<5){ System.out.println(0); return; }else if (k==26){ System.out.println(n); return; } List<String> list = new ArrayList<>(); for (int i = 0; i < n; i++) { // 문자열 입력 받기 String str = sc.next(); list.add(str); Set<Character> set = new HashSet<>(); // 각 문자열의 문자들을 Set에 저장. for (char c : str.toCharArray()) { set.add(c); } sets.add(set); } List<Set<Character>> filtered = new ArrayList<>(); for (int i = 0; i < n; i++) { // K 보다 많은 알파벳으로 이루어진 경우 제외 if(sets.get(i).size()<=k){ filtered.add(sets.get(i)); } } List<Integer> masks = new ArrayList<>(); for (Set<Character> set : filtered) { // Set의 각 알파벳을 대응되는 비트마스크로 표현 masks.add(setToMask(set)); } int mask = 1; int max = 0; while (mask < (1<<26)-1){ // 모든 경우의 수 탐색 if(Integer.bitCount(mask)>k){ // 비트마스크의 1 개수가 k 보다 크면 다음 경우로 넘어가기 mask++; continue; } int count = 0; for (Integer m : masks) { // 문자열을 비트마스크로 표현한 것을 비교해서 읽을 수 있는건지 개수 샘 if((mask & m) == m){ count++; } } max = Math.max(max,count); // 최대값 저장 mask++; } System.out.println(max); } private static int setToMask(Set<Character> set){ int[] num = new int[26]; for (Character character : set) { num[25 - (character-'a')] = 1; } StringBuffer sb = new StringBuffer(); for (int i : num) { sb.append(i); } return Integer.parseInt(sb.toString(),2); } }
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요. 강의 너무 잘 듣고 있습니다. 다름이 아니라 구조적인 부분에서 질문을 한가지 드리고 싶습니다. HomeScreen이 StatefulWidget으로 정의되어있고 선택된 날짜가 변경될때마다 _ScheduleList가 변경되며 rebuild되는 구조를 가지고 있는데 이렇게 될 경우 _ScheduleList 안에 StreamBuilder가 다시 initialize되는 것을 확인하였습니다. 따라서 print( snapshot.data ) 시 에도 두번 연속적으로 값이 뜨게 됩니다. 물론 문제는 없지만, 실 앱 실행 시 stream에서 재연결을 계속 반복하게 되는데 문제가 없는지 궁금합니다.
2회차 강의 도중에 질문드립니다 fit: BoxFit.cover를 이용해서 이미지 비율을 유지하면서 잘라주는데, 원하는 부분만 잘라서 보여줄 수 없는건가요? 처음부터 가운데 고정이 되어있는 상태로 이미지가 잘리는 것 같아서 (왼쪽 정렬, 오른쪽 정렬로 이미지 자르는 방법도 알고 싶습니다)
[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안녕하세요, Hello world 를 찍는 강의에서 runApp 메소드는 binding.dart 파일에서, Scaffold 는 scaffold.dart 에서 참조해서 가지고 오더라구요. 다만 이 파일들은 import 한적이 없는데 코드에서는 어떻게 참조하여 사용할 수 있는 건가요? 감사합니다.
수업 유용하게 잘 듣고 있습니다^^ 이렇게 안드로이드 스튜디오 안에서 어뮬레이터를 실행하면 실행에 이상이 없습니다. 이렇게 어뮬레이터만 밖에서 실행하거나 비쥬얼 스튜디오 코드에서 어뮬레이터 실행하면 어뮬레이터가 잘 돌아가지가 않습니다. 구글링 해서 문의했는데 전원 버튼을 누르거나 디바이스 'wipe data'도 했는데 똑같이 어뮬레이터가 실행이 안됩니다. 그래서 어뮬레이터를 삭제한 뒤 다시 만들었는데 안되네요. 강사님께서 "재설치시 안드로이드 os 버전도 올려보시길 권장드립니다." 하셨는데 제가 코린이라 os버전 어떻게 하는지 어렵네요 ㅠㅠㅠ
[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
보너스 강의가 약간 더 남았습니다~ 조금만 기다려주세요! Optimistic Response + Form + 글로벌 캐시관리를 한번에 보여주는 "리뷰 작성 페이지" 강의가 9월이 가기전에 추가될 계획입니다! 기대해주세요! (지금까지 배운 내용을 한번에 조합하는 강의입니다!) 이렇게 글을 쓰셨던데 빨리 배워보고 싶네요 ㅠㅠ 강의가 너무 좋아서 그런데 중급 이상강의 혹시 하나더 나올 계획은 없나요? 이 강의보단 조금더 복잡한... 너무 기다려집니다 ㅠㅠ 항상 감사합니다.
이렇게 안드로이드 스튜디오 안에서 어뮬레이터를 실행하면 실행에 이상이 없습니다. 이렇게 어뮬레이터만 밖에서 실행하거나 비쥬얼 스튜디오 코드에서 어뮬레이터 실행하면 어뮬레이터가 잘 돌아가지가 않습니다. 구글링 해서 문의했는데 전원 버튼을 누르거나 디바이스 'wipe data'도 했는데 똑같이 어뮬레이터가 실행이 안됩니다. 어떻게 해결해야 할까요?