묻고 답해요
129만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Sqlite 백업과 복원하는 방법 좀 강의해 주세요.
Sqlite를 백업과 복원하는 방법 좀 강의해 주세요.구글에 계정이 있으면 구글에 백업이 되고나중에 다시 복원할 수 있는 방법이 필요합니다.아니면, 자신의 다른(네이버, 다음...)의 이메일 계정이있으면 백업해 두었다가 나중에 복원하는 방법이필요합니다.아니면 다른 방법이 있으면 그것도 괜찮습니다. 아시다시피 휴대폰을 변경한다든지,초기화를 하고 다시 앱을 설치하면데이터가 다 사라짐으로...다시 복원이 필요합니다. 여기 강의에 안되면 님의 유튜브에 올려주시면 감사하겠습니다.Drift로 Sqlite 앱을 만들었는데,백업과 복원이 문제입니다. 감사합니다.
-
해결됨[플러터플로우]코딩 없이 한 달 만에 앱 만들기
화면 밖을 벗어나는 큰 이미지 사용에 대한 문의
안녕하세요건축도면을 화면에 표시하며 각 객체(계단,문 등)를 누르면 사양이 표시되게끔 앱을 만들 계획중입니다.강의를 보고 화면 내에서 쓸 수 있는 작은 크기의 이미지는 문제가 없지만 도면처럼 큰 이미지는 어떻게 넣어야 할 지 모르겠습니다.보라색 창이 화면이라고 보고 이처럼 큰 이미지를 손으로 드래그, 스와이프 해서 보려고 합니다.정리하자면1. 화면 사이즈보다 큰 이미지를 넣으면 화면에서 잘린 상태로 움직이지 않는 문제2. 화면 밖으로 나간 이미지에 버튼을 넣는 방법어떻게 해결해야 할까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
유저 변경 시 장바구니 리셋하기
장바구니가 현재 프로바이더를 통해서 불러오는 방식을 사용중인데, 이렇게 하는 경우 처음 유저가 로그아웃 하고, 다음 유저가 들어왔을 시에 프로바이더 값이 그대로 유지되어서 이전 유저의 장바구니를 열람할 수 있는 문제가 생기는데, 이런 경우를 대비해서 로그인 시에 모든 프로바이더 값들을 초기화시키고 싶은데, providerscope 안에 있는 모든 프로바이더들을 쉽게 초기화시킬 수 있는 방법이 있을까요? 감사합니다
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
개정된 미세먼지앱 강의 item[regionStr] 에러 뜨시는 분들
코드를 따라 진행을 하시거나, 앱을 삭제하고 다시 실행하면 아래 코드위치에서final stat = double.parse(item[regionStr]);예외가 발생했습니다. _TypeError (type 'Null' is not a subtype of type 'String') 라는 에러가 뜨면서 흰색화면이 나타나고 좌측상단에로딩 인디게이터만 돌아 가신다면 final stat = double.parse(item[regionStr] ?? '0'); 로 변경해주시면 앱이 정상적으로 작동 하는것을 확인했습니다.참고하세요!
-
미해결Flutter로 SNS 앱 만들기
섹션7 강의 듣는중 플러터 업그레이드 했어요. 에러 발생했습니다.
에러가 발생했어요.
-
미해결[플러터플로우]코딩 없이 한 달 만에 앱 만들기
Custom Wdiget의 리턴값을 액션 필드에 가져오기
안녕하세요.. 선생님의 강의를 통해 앱을 만들 수 있겠다는 자신감을 가지게 되었습니다. 고맙습니다. 꼭 답변을 부탁드리는 내용은 아래와 같습니다. 텍스트필드 위젯에 숫자 입력시 1,000 원 단위를 표시하는 기능을 구현하고자 합니다.그래서 final double? height;pattern_formatter 라이브러리를 활용해서 custom widget를 구현했습니다custom widget를 통해서 Update App State 액션을 통해 +Add Field를 하려고 하는데 Value to set 필드에서 해당 custom widget 보이지가 않습니다. 어떻게 해야 필드에서 설정을 할 수 있을지요?작성한 코드는 아래와 같습니다. // Automatic FlutterFlow imports import '/backend/backend.dart'; import '/backend/schema/structs/index.dart'; import '/flutter_flow/flutter_flow_theme.dart'; import '/flutter_flow/flutter_flow_util.dart'; import '/custom_code/widgets/index.dart'; // Imports other custom widgets import '/flutter_flow/custom_functions.dart'; // Imports custom functions import 'package:flutter/material.dart'; // Begin custom widget code // DO NOT REMOVE OR MODIFY THE CODE ABOVE! import 'package:flutter/services.dart'; import 'package:pattern_formatter/pattern_formatter.dart'; import 'package:google_fonts/google_fonts.dart'; import 'package:provider/provider.dart'; class Thousand extends StatefulWidget { const Thousand({ super.key, this.width, this.height, this.title, }); final double? width; final double? height;pattern_formatter: ^3.0.0 final String? title; @override State<Thousand> createState() => _ThousandState(); } class _ThousandState extends State<Thousand> { final _textController = TextEditingController(); String userPost = ''; @override Widget build(BuildContext context) { return Container( child: // Generated code for this TextField Widget... TextFormField( controller: _textController, onChanged: (val) { FFAppState().update(() { setState(() { userPost = _textController.text; }); }); }, autofocus: false, textInputAction: TextInputAction.done, obscureText: false, decoration: InputDecoration( labelText: widget.title ?? '', labelStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, fontSize: 20, letterSpacing: 0, fontWeight: FontWeight.w600, useGoogleFonts: GoogleFonts.asMap() .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), hintStyle: FlutterFlowTheme.of(context).labelMedium.override( fontFamily: FlutterFlowTheme.of(context).labelMediumFamily, letterSpacing: 0, useGoogleFonts: GoogleFonts.asMap() .containsKey(FlutterFlowTheme.of(context).labelMediumFamily), ), enabledBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).primaryBackground, width: 0.5, ), borderRadius: BorderRadius.circular(0), ), focusedBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).primary, width: 0.5, ), borderRadius: BorderRadius.circular(0), ), errorBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(0), ), focusedErrorBorder: UnderlineInputBorder( borderSide: BorderSide( color: FlutterFlowTheme.of(context).error, width: 0.5, ), borderRadius: BorderRadius.circular(0), ), ), style: FlutterFlowTheme.of(context).bodyMedium.override( fontFamily: FlutterFlowTheme.of(context).bodyMediumFamily, fontSize: 22, letterSpacing: 0, fontWeight: FontWeight.w600, useGoogleFonts: GoogleFonts.asMap() .containsKey(FlutterFlowTheme.of(context).bodyMediumFamily), ), minLines: null, keyboardType: TextInputType.number, inputFormatters: [ LengthLimitingTextInputFormatter(15), ThousandsFormatter(allowFraction: true), ], )); } }
-
해결됨Flutter로 SNS 앱 만들기
섹션 7에서 게시글 이미지 슬라이드 기능 추가를 보고있어요
섹션 7에서 게시글 이미지 슬라이드 기능 추가를 보고있어요이미지 말고 동영상을 넣고 싶은데 그거는 어떻게 하면 됩니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
화면에 googleMap띄우기에서요 에러나네요
Error: The plugin "google_maps_flutter_ios" requires a higher minimum iOS deployment version than your application is targeting. To build, increase your application's deployment target to at least 14.0 as described at https://docs.flutter.dev/deployment/ios Error running pod install Error launching application on iPhone 15 Pro. \IOS에뮬 띄우는데 위와같은 에러나와요.. 구글링해봐도 뭔가 xcode에서 셋팅을하라하는거같은데 엑스코드가 익숙치않아서 힘드네요 혹시 방법이 있을까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
같은 강의가 들어있는 것 같아요!
onSaved()와 validate() 강의가 같은데, 후자의 강의를 업로드 해주시면 될 것 같아요! 감사합니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
환경설정 원격 문의드립니다!
안녕하세요 환경설정에서 계속 오류가 나서 지우고 설치를 반복하다가 문의남깁니다..ㅠㅠ 여기 카카오채널에 원격문의하면 되는걸까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
emulator 오류
android studio 상단 flutter inflearn 뜨는 곳이 저 상태로 클릭이 되지 않습니다.. 강의 내용 똑같이 설치 진행했는데 원인을 모르겠습니device manager도 강의 내용과 같이 안드로이 7 pro api 34로 설치 진행했습니다
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
새로운 강의에서 동영상이 잘못 들어간 것 같아요
항상 훌륭한 강의를 제공하고자 노력해 주셔서 감사드립니다.아래 두 회차에 같은 영상이 들어 있어서 전달드려요.- JSON 반환값을 StatModel로 변경하기- Isar 설치하기
-
미해결[플러터플로우]코딩 없이 한 달 만에 앱 만들기
구글로그인도 손쉽게 만들기강의에서 '하나 이상의 Android 앱에서 SHA-1 디지털 지문과 패키지 이름 조합을 이미 사용 중입니다. ' 라는 오류가 뜨는데요...
구글로그인도 손쉽게 만들기강의에서 " 하나 이상의 Android 앱에서 SHA-1 디지털 지문과 패키지 이름 조합을 이미 사용 중입니다. 라는 오류가 뜨는데요... https://support.google.com/firebase/answer/6401008#zippy=%2C%EC%B6%A9%EB%8F%8C%ED%95%98%EB%8A%94-oauth-%ED%81%B4%EB%9D%BC%EC%9D%B4%EC%96%B8%ED%8A%B8-id%EA%B0%80-%EC%96%B4%EB%8A%90-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8%EC%97%90-%EB%93%A4%EC%96%B4-%EC%9E%88%EB%8A%94%EC%A7%80-%EB%AA%A8%EB%A6%85%EB%8B%88%EB%8B%A4일단 구글쪽 고객센터쪽에 나온 설명보고 파이어베이스와 플러터플로우에서 해당프로젝트를 제외한 나머지 프로젝트들을 모두 삭제해봤는데도 해결되지 않고 있는데 혹시 어떤문제인지 그리고 해결방법을 알수있을까요??
-
미해결처음하는 플러터(Flutter) 기초부터 실전까지 [풀스택 Part4] (쉽고 견고하게 단계별로 다양한 프로젝트까지)
flutter 설치중 오류 network resource
[!] Network resources X A cryptographic error occurred while checking "https://cocoapods.org/": Handshake error in client You may be experiencing a man-in-the-middle attack, your network may be compromised, or you may have malware installed on your computer.플러터 설치중 flutter doctor 을 치고 이 오류를 만났는데 window defencer 도꺼보고 다양한 보안프로그램 도 꺼봣는데 안되는데 이 문제에대해 도움이 필요합니다 검색해도 관련 오류가 없더라고요
-
해결됨Flutter 앱 개발 기초
명령어 정의가 안됩니다.
로그인 페이지 만들기 챕터에서 margin 에 대한 정의가 안됩니다. 추가로, onpressed 함수로 () {} 형식으로 작성해도 오류로 인식돼서요. 같이 확인 부탁드립니다.
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
restaurant_repository.g.dart header 생성 문제
import 'package:code_factory/restaurant/model/restaurant_detail_model.dart';import 'package:dio/dio.dart' hide Headers;// import 'package:retrofit/http.dart';import 'package:retrofit/retrofit.dart';part 'restaurant_repository.g.dart';@RestApi()abstract class RestaurantRepository { factory RestaurantRepository(Dio dio, {String baseUrl}) = _RestaurantRepository; @GET('/{id}') @Headers({'accessToken' : 'true'}) Future<RestaurantDetailModel> getRestaurantDetail({ @Path() required String id, });} // GENERATED CODE - DO NOT MODIFY BY HANDpart of 'restaurant_repository.dart';// **************************************************************************// RetrofitGenerator// **************************************************************************// ignore_for_file: unnecessary_brace_in_string_interps,no_leading_underscores_for_local_identifiersclass _RestaurantRepository implements RestaurantRepository { _RestaurantRepository( this._dio, { this.baseUrl, }); final Dio _dio; String? baseUrl; @override Future<RestaurantDetailModel> getRestaurantDetail( {required String id}) async { const _extra = <String, dynamic>{}; final queryParameters = <String, dynamic>{}; final _headers = <String, dynamic>{r'accessToken': 'true'}; _headers.removeWhere((k, v) => v == null); final Map<String, dynamic>? _data = null; final _result = await _dio.fetch<Map<String, dynamic>>( _setStreamType<RestaurantDetailModel>(Options( method: 'GET', headers: _headers, extra: _extra, ) .compose( _dio.options, '/${id}', queryParameters: queryParameters, data: _data, ) .copyWith( baseUrl: _combineBaseUrls( _dio.options.baseUrl, baseUrl, )))); final value = RestaurantDetailModel.fromJson(_result.data!); return value; } RequestOptions _setStreamType<T>(RequestOptions requestOptions) { if (T != dynamic && !(requestOptions.responseType == ResponseType.bytes || requestOptions.responseType == ResponseType.stream)) { if (T == String) { requestOptions.responseType = ResponseType.plain; } else { requestOptions.responseType = ResponseType.json; } } return requestOptions; } String _combineBaseUrls( String dioBaseUrl, String? baseUrl, ) { if (baseUrl == null || baseUrl.trim().isEmpty) { return dioBaseUrl; } final url = Uri.parse(baseUrl); if (url.isAbsolute) { return url.toString(); } return Uri.parse(dioBaseUrl).resolveUri(url).toString(); }}생성된 repository.g.dart 파일을 보시면final _headers = <String, dynamic>{r'accessToken': 'true'}; accessToken 앞에 계속 r 이 붙습니다.왜이럴까요..
-
해결됨Flutter로 SNS 앱 만들기
Mac개발,VSCode개발 하시는분들 iOS 대응 문제 참고하세요
강사님께서 ios대응은 준비중이라 하셔서 맥은 안되나했는데제가 맥 vscode로 ios시뮬레이터 사용해서 강의 마쳤는데별 이상 없었습니다. 다만 사진첩권한을 허가해줘야 되는데ios>Runner>info.plist 파일에서 <key>NSPhotoLibraryUsageDescription</key> <string>사진첩 권한을 허가해주세요.</string> <key>NSCameraUsageDescription</key> <string>카메라 권한을 허가해주세요.</string> <key>NSMicrophoneUsageDescription</key> <string>마이크 권한을 허가해주세요.</string>해당 권한코드를 추가해주시면 됩니다.또 저는 임펠러엔진 관련 체크메세지가 떳었는데 <key>FLTEnableImpeller</key> <true/>까지 추가해주시면 됩니다.그리고 문제 창에BuildContext관련 참고에러 메세지가 엄청나게 뜰텐데이건 강의의 상태관리를 프로바이더를 사용해서context.어쩌고 하는 코드들이 많아서 그렇습니다.해결방법은 프로바이더 호출을 변수에 따로 담아서 불러오면 되는데 크리티컬한 문제는 아니라 작동은 됩니다. 그래도 강사님께서 상태관리를 RiverPod으로된 리뉴얼된 강의를 제작해주신다면 더 좋지 않을까 싶긴한데.. 이건 미래의 교육생분들과 강사님께 맡기겠습니다 열심히 공부하세요 화이팅.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
emulator 실행 오류 문의
안녕하세요 애뮬레이터 실행이 불가해서 이틀 째 골머리를 앓다가 문의드립니다 😂 emulator 실행 시에 디바이스 선택이 안돼서<no device selected> 만 계속 뜨고있는 상황입니다.에뮬레이터는 실행이 되더라도 run이 불가능하고 계속 무한 로딩만 되고 있는 상태입니다.. 재부팅을 하더라도 동일한 증상이 반복됩니다! 에뮬레이터 화면상에 작성한 코드도 적용이 안되고 있습니다현제 셋팅된 값도 같이 첨부하겠습니다!Chrome (web)으로 실행시에는 정상적으로 작동이 되어서 우선은 웹으로 공부하고있습니다.. ㅠㅠ
-
미해결Flutter 입문 - 안드로이드, iOS 개발을 한 번에 (with Firebase)
애뮬레이터 Intel HAXM 다운로드가 안돼요
데스크탑에서는 강의처럼 잘 되었는데, 노트북에서는 안되네요.. 따로 Intel HAXM을 따로 다운 받았는데도 안되네요... 왜이럴까요?ㅠㅠㅠ제어판 보시면, Intel HAXM 이 설치되어있는데도 작동이 잘 안되네요..답변부탁드립니다. 감사합니다.
-
해결됨Flutter로 SNS 앱 만들기
플러터에서 forEach문 보다 for룹을 사용을 권장하는 문제와 context 바로사용으로 체크메세지가 많이 뜨시는분들
안녕하세요 강의 잘보고있습니다.그런데 vs코드가 삭제로직에 사용된 2군데의 forEach 룹중 한군대의 forEach룹을 자동으로 for in 룹으로 변경하길레 살펴보니 플러터에서는 forEach문 사용이 권장되지 않는다는걸로 보입니다. 예를들어 삭제함수의 void _deleteImage(List<String> imageUrls) { imageUrls.forEach((element) async { await firebaseStorage.refFromURL(element).delete(); }); }의 코드는 void _deleteImage(List<String> imageUrls) async { for (String imageUrl in imageUrls) { await firebaseStorage.refFromURL(imageUrl).delete(); } } 로 수정하면 되는것 같네요. 또 VSCode에서 context를 함수바디에 바로 사용하는 문제로 체크메세지가 너무 많이 뜨는데대표적으로 feed_card_widget.dart 파일 삭제버튼의 onPressed:(){} 내에 LikeProvider,ProfileProvider를 호출하는 부분들의 context를 바로 사용하는것보다 final likeProvider = context.read<LikeProvider>();이런식으로 변수에 담아서 호출하는 방식을 사용하라는 것 같습니다. 큰문제는 아닌데 강의보시는분들 참고하세요