묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[2025 리뉴얼]플러터플로우로 코딩 없이 한달 안에 앱 만들기
이미지 업로드 버튼 클릭시
이미지를 실제 올려보려고 하는데,업로드 버튼을 클릭하면 로딩 화면에서 더 이상 변화가 없습니다.테스트, run 모드 다 마찬가지인데요.뭔가 더 설정을 해줘야 하나요?
-
해결됨[2025 리뉴얼]플러터플로우로 코딩 없이 한달 안에 앱 만들기
Stack 안에 Container를 절반만 채우고 싶습니다.
[2025 리뉴얼] Container, Stack으로 프로필 페이지 만들기 여기에서 Column 안에 Stack 넣고 꽉차게 flex 옵션 선택한 상태에서container, circle을 추가했습니다.궁금한것이 있는데 파란색 container를 컬럼의 딱 절반만 채우고 싶어서 height를 50% 지정했습니다.그런데 아무리 봐도 50% 이상 대략 60 ~ 70% 정도 인거 같습니다. circle은 화면 정 가운데 배치를 했구요.원래 그런건지요? 딱 절반은 못채우는 걸까요?
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
코딩 작성 순서 관련 질문
안녕하세요. 강의로 정말 많은 걸 배우고 있습니다. 막상 실전으로 넘어가려 하면 되게 막막하게 느껴지는게 코딩을 어디서부터 시작해야 할지 고민입니다. 강의에서는 학습자의 의도적인 시행착오를 통해서 학습 시킬려는 점은 도움이 되었지만 실제로 강의에서 만든 앱을 만들게 된다면 플러터로 어디서부터 만들어야 할지 감이 안 잡힙니다. 강의에서도 이런 부분을 딱히 알려주지 않은 것 같습니다. 실제로 개발을 하게 된다면 어디서부터 차례로 만들어야 할지 간략하게 나마 설명해주시면 감사합니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
에어코리아 포스트맨 에러 발생
247. Postman으로 API 테스트하기에서 GET 요청하는데 에러 나는것 같네요.강의하고 실제 환경공단 화면이 조금 틀리는데 url 을 End Point 내용을 넣었습니다.500 Internal Server Error 인데 아마 보내는 코드가 어디가 틀린것 같아서 에러 나는것 같네요.첨부 사진 올립니다.
-
미해결Flutter 중급 3편 - 의존성 주입 가이드
마스크 json url이 안보여서 공유합니다
https://gist.githubusercontent.com/junsuk5/bb7485d5f70974deee920b8f0cd1e2f0/raw/063f64d9b343120c2cb01a6555cf9b38761b1d94/sample.json 강의 자료에 따로 없는것 같아서 공유드립니다!
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
ProductCard factory 관련 문제 질문
안녕하세요 강의 정말 유용하게 듣고 많이 배우고 있습니다. "92. Product Tab Pagination" 강의에서 코드팩토리님은 ProductCard에 factory을 2개 생성하여 강의를 진행하셨을때 가능하면 일반화 해서 사용하라고 하셔서 직접 구현하여 올바른 방향인지 질문 올립니다. 일반화한 Factory 생성자 IModelWithProductCard 각각 RestaurantModel과 ProductModel에 IModelWithProductCard을 implements한 모습기존에 IModelWithId을 implements한 모델(RestaurantProductModel)은 IModelWithProductCard로 대체한 대신 IModelWithProductCard에 IModelWithId을 implements 하였습니다. 코드 팩토리님 이라면 어떻게 일반화 했을지 궁금하여 직접 질문 올려드립니다.
-
미해결Flutter 초입문 왕초보편
구글지도 사용에서
build.gradle에 서 minSdkVersion 21로 바꾸는거요 저는 minSdk = flutter.minSdkVersion이렇게 나와 있는데 minSdk = 21로 바꾸나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
기술 블로그에 코드팩토리님 강의 내용 정리
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 강의 잘 듣고 있는 수강생 중 한 명입니다. 다름이 아니라 기술 블로그를 간단하게 작성하고 있는데 혹시 코드팩토리님 강의로 공부한 내용을 정리해서 올려도 괜찮을까요?? 유료 강의인만큼 당연히 프로젝트에 관련된 코드들을 올리는 것이 아닌 위젯 사용법 정도를 올리려고 합니다. 보니까 깃헙에도 코드가 공개되어 있길래 질문드립니다..! 좋은 강의 만들어 주셔서 너무 감사합니다! 좋은 하루 보내세요!
-
미해결Flutter 초입문 왕초보편
todo리스트 강의중에서..
hive 사용준비 강의에서 [WARNING] source_gen:combining_builder on lib/todo.dart: 이런 워닝이 뜨는데요 어떻게 해결 해야 하죵?
-
미해결Flutter 초입문 왕초보편
강의가 오래 된거 같은데
저는 플러터 완전 아무 것도 모르고 들어온 사람인데요 이렇게 옛날 버전으로 되어 있으면 지금 안드로이드 스튜디오도 처음인 사람에게는 너무 버겁거든요안드로이드 스튜디오 설치하는것도 제대로 된것도 없고 옛날 강의 들을려고 이렇게 비싼 가격을 주고 하지는 않을거 같은데 같은 내용으로 지금 버전으로 다시 찍으셔야 하는거 아닐까요? 아니면 가격을 낮춰서 오래된거라도 볼려면 봐 이렇게 하시는게 맞지 않을까요? 유투브를 돌아다니면서 이것저것보는거 보다 인강을 제대로 돈주고 보자 해서 듣는건데 이건 너무하는거 아닌가 싶네요
-
미해결Flutter 초입문 왕초보편
const 적용
노란불도 안나오구요 alt+enter에 const 적용하게 되어 있지도 않는데 제가 안드로이드 스튜디오를 잘못 설치한걸까요? 그리고 keyboardtype도 적용안됩니다 에뮬레이터 상에서 인풋박스를 선택하고 글을 쓸려고 하면 키보드가 올라와야 하는데 안올라와요 ㅠ_ㅠ
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
web
안녕하세요 강사님, 강의 잘 듣고 있습니다.질문이 하나 있는데요, 저는 현재 웹과 앱을 모두 개발해야 하는 상황입니다. 예를 들어 쇼핑몰이나 ERP, 관리자 페이지 같은 경우 대부분 웹도 필요하고 앱도 함께 제공하는 경우가 많잖아요.그래서 Flutter로 앱과 웹을 한 번에 개발하면 생산성이 높지 않을까 생각하고 있는데, Flutter Web의 한계점(SEO, 초기 로딩 속도, 웹 전용 UX 등)도 있다는 이야기를 들어서 고민이 됩니다.강사님께서는 웹과 앱을 모두 만들어야 하는 경우, Flutter 하나로 통합해서 개발하는 걸 어떻게 보시는지 궁금합니다. 실무에서는 어떤 방식을 추천하시는지도 듣고 싶습니다.
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
getter랑 setter
OOP 부분 수강하고 있는데 getter랑 setter은 클래스의 메소드가 아닌가요? 왜 main 에서 게터를 사용할 때 blackPink.firstMember()이나 blackPink.firstMember('코드팩토리') 이런식으로 안하는 건가요?
-
미해결Flutter 초입문 왕초보편
soundpool 라이브러리가 없습니다
실로폰 만들기 강의 듣고 있는데 soundpool 라이브러리가 지원 종료된거 같습니다...
-
미해결Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
DTO 작성시 freezed 3.0 변경 부분 문의
이전 강의에서 freezed 3.0 변경점으로 default 사용시 일반 생성자 초기화하듯 사용하는 방법으로진행해도 된다고 하셨는데 @JsonKey 사용법도 기존 생성자 작성과 동일하기 하고 아래 *참고소스1과 동일하게 진행해도 되는지 문의드립니다. 참고소스1import 'package:freezed_annotation/freezed_annotation.dart'; part 'company_info_dto.freezed.dart'; part 'company_info_dto.g.dart'; // ignore_for_file: annotate_overrides @freezed @JsonSerializable() class CompanyInfoDto with _$CompanyInfoDto { @JsonKey(name: 'Symbol') final String? symbol; @JsonKey(name: 'Name') final String? name; @JsonKey(name: 'Description') final String? description; @JsonKey(name: 'Industry') final String? country; @JsonKey(name: 'Country') final String? industry; const CompanyInfoDto({ this.symbol, this.name, this.description, this.industry, this.country, }); factory CompanyInfoDto.fromJson(Map<String, dynamic> json) => _$CompanyInfoDtoFromJson(json); Map<String, dynamic> toJson() => _$CompanyInfoDtoToJson(this); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[플러터플로우] 실전! 앱 출시를 위한 끝장 노하우!
구글 로그인 구현 관련
안녕하세요! 카카오 로그인 강의를 보고 많은 도움을 받은 개발자 입니다!현재 플러터 플로우에서 기본으로 제공하는 구글 로그인은 구현을 완료하였습니다. 다만 구글에서 제공되는 기본 사용자정보에서 제가 개발하는 앱에서는 성별,출생연도 등을 추가로 받아오고 싶은데, 구글 클라우드에서 Oauth 동의화면이 안들어가지네요... 혹시 구글 oauth로그인으로 추가 사용자 정보를 받아오려면 봐야하는 문서나 정보가 있으시면 알려주시면 감사하겠습니다!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
geolocator 가 import 가 안되는데 어떡하죠?
코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM geolocator 가 import 가 안되는데 어떡하죠? 오류는 아래와 같이 나오구요. Target of URI doesn't exist: 'package:geolocator/geolocator.dart'. 소스는 아래와 같습니다. import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:geolocator/geolocator.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State<HomeScreen> createState() => _HomeScreenState(); } class _HomeScreenState extends State<HomeScreen> { final CameraPosition initialPosition = CameraPosition( target: LatLng( 37.5214, 126.9246 ), zoom: 15, ); checkPermission() async{ final isLocationEnabled = await Geolocator.isLocationServiceEnabled(); } @override Widget build(BuildContext context) { return Scaffold( body: Column( children: [Expanded(child: GoogleMap(initialCameraPosition: initialPosition))], ), ); } } pubspec.yaml 은 아래와 같이 되어 있습니다.name: chool_check description: "A new Flutter project." # The following line prevents the package from being accidentally published to # pub.dev using `flutter pub publish`. This is preferred for private packages. publish_to: 'none' # Remove this line if you wish to publish to pub.dev # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. # Both the version and the builder number may be overridden in flutter # build by specifying --build-name and --build-number, respectively. # In Android, build-name is used as versionName while build-number used as versionCode. # Read more about Android versioning at https://developer.android.com/studio/publish/versioning # In iOS, build-name is used as CFBundleShortVersionString while build-number is used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html # In Windows, build-name is used as the major, minor, and patch parts # of the product and file versions while build-number is used as the build suffix. version: 1.0.0+1 environment: sdk: ^3.7.2 # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions # consider running `flutter pub upgrade --major-versions`. Alternatively, # dependencies can be manually updated by changing the version numbers below to # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: flutter: sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.8 google_maps_flutter: ^2.6.0 geolocator: ^14.0.0 dev_dependencies: flutter_test: sdk: flutter # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^5.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter packages. flutter: # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in # the material Icons class. uses-material-design: true # To add assets to your application, add an assets section, like this: # assets: # - images/a_dot_burr.jpeg # - images/a_dot_ham.jpeg # An image asset can refer to one or more resolution-specific "variants", see # https://flutter.dev/to/resolution-aware-images # For details regarding adding assets from package dependencies, see # https://flutter.dev/to/asset-from-package # To add custom fonts to your application, add a fonts section here, # in this "flutter" section. Each entry in this list should have a # "family" key with the font family name, and a "fonts" key with a # list giving the asset and other descriptors for the font. For # example: # fonts: # - family: Schyler # fonts: # - asset: fonts/Schyler-Regular.ttf # - asset: fonts/Schyler-Italic.ttf # style: italic # - family: Trajan Pro # fonts: # - asset: fonts/TrajanPro.ttf # - asset: fonts/TrajanPro_Bold.ttf # weight: 700 # # For details regarding fonts from package dependencies, # see https://flutter.dev/to/font-from-package
-
미해결Flutter로 메신저앱 만들기
채팅목록 스크린에서 ref.listen ()말고 ref.watch().when()을 쓰는 이유는?
채팅목록화면을 만들때 final chatListProvider = StreamProvider.autoDispose<List<ChatModel>>((ref) { final currentUserModel = ref.watch(authProvider).userModel; return ref.watch(chatRepositoryProvider).getChatList( currentUserModel: currentUserModel, );});ref.watch(chatListProvider).when()을 사용하여 채팅목록화면을 만듭니다. when 문을 쓰게 되면 데이터 변화가 있을때마다 getChatList 함수가 실행됩니다. 매번 데이터에 변화가 있을때마다 getChatList함수가 실행이되면 너무 많은 데이터를 불러올 것으로 생각이 되어집니다. 여기서 궁금한 건, 채팅화면에서는 페이지네이션을 적용해서 초기화면을 조회할때는 limit를 설정해서 몇개의 데이터만 불러오고 화면을 올렸을때 lastid를 기준으로 데이터를 추가적으로 불러오는 형태로 화면을 구상하였는데, 채팅목록도 마찬가지고 처음에는 몇개의 데이터만 가져오고 사용자가 화면을 스크롤했을때 추가적으로 데이터를 불러오게 하면 안 되는건가요...?
-
해결됨Flutter 앱 개발 실전
수강 기간 연장 요청
수강 기간 연장 요청을 드리고 싶습니다...
-
미해결Flutter 중급 1편 - 클린 아키텍처
sealed class 사용시 기능은 동작하지만 Radio위젯에 선택 표시가 안되는 부분 질문
sealed class 사용시 Radio위젯에 선택 표시가 안되는 이유는 Radio위젯에 value == groupValue 값이 같아도 객체 참고가 다르기 때문에 발생되는 것으로 확인했습니다. orderType비교시 == 값이 같은 경우 가능하도록 내용을 수정했는데 제대로 수정했는지 궁금해서 문의드립니다. *참조코드 2 내용 1.*참조코드 2 내용 수정이 잘되었는지 확인2.freezed 사용시 자동으로 만들어 주는 부분인데 seald 클래스 사용시 팁이 있는지 궁금합니다. 3.copyWith 부분도 추가하는 형태도 궁금합니다. 참조코드 1import 'package:flutter/material.dart'; import 'package:flutter_note_app/domain/model/util/note_order.dart'; class OrderSection extends StatelessWidget { final NoteOrder noteOrder; final Function(NoteOrder noteOrder) onOrderChanged; const OrderSection({ super.key, required this.noteOrder, required this.onOrderChanged, }); @override Widget build(BuildContext context) { return Column( children: [ Row( children: [ Radio<NoteOrder>( value: NoteOrder.title(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.title(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('제목'), Radio<NoteOrder>( value: NoteOrder.date(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.date(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('날짜'), Radio<NoteOrder>( value: NoteOrder.color(noteOrder.orderType), groupValue: noteOrder, onChanged: (NoteOrder? value) { onOrderChanged(NoteOrder.color(noteOrder.orderType)); }, activeColor: Colors.white, ), const Text('색상'), ], ), ], ); } } 참조코드 2import 'package:flutter_note_app/domain/model/util/order_type.dart'; sealed class NoteOrder { final OrderType orderType; const NoteOrder(this.orderType); factory NoteOrder.title(OrderType orderType) = NoteOrderTitle; factory NoteOrder.date(OrderType orderType) = NoteOrderDate; factory NoteOrder.color(OrderType orderType) = NoteOrderColor; @override bool operator ==(Object other) { return runtimeType == other.runtimeType && other is NoteOrder && other.orderType == orderType; } @override int get hashCode => Object.hash(runtimeType, orderType); } class NoteOrderTitle extends NoteOrder { NoteOrderTitle(super.orderType); } class NoteOrderDate extends NoteOrder { NoteOrderDate(super.orderType); } class NoteOrderColor extends NoteOrder { NoteOrderColor(super.orderType); } - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.