묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[플러터플로우]코딩 없이 한 달 만에 앱 만들기
스키마 내부의 list 가져오기
안녕하세요 강의 잘 듣고 있습니다! 리스트 가져오는 부분에서 질문이 있어 글 남기게 되었습니다. 강의에서는 comment 라는 서브 schema를 정의하시고, 그것을 from variable 을 사용해서 component Parameter 로 다른데서 받은 postToComment 를 사용하는데요, 저는 조금 다르게 구성을 해보았는데, 잘 되지 않아 질문 드립니다. 저는 유저 schema 가 있고 포스트 schema 가 있는데, 포스트 schema 에서는 participants 라는 인자에 list ref 로 유저 schema 를 가지고 있습니다. 이때, 포스트 상세 페이지를 누르면, 강의와 비슷하게, component parameter(roomSpecification이라는 이름) 로 해당 포스트의 상세 페이지로 이동하게 되는데요, 이 페이지에서 참가자들의 정보를 강의의 코멘트들 나열하듯이 나열하고 싶습니다.(즉, roomSpecification 안의 participants 리스트(user ref)로 listView 를 만들고 싶습니다) 그래서 ListView 에서 query type: query collection > collection: users 를 하고, from variable 로 component parameter 로 넘긴 roomSpecification 을 사용해서 participants 를 불러오려고 했는데요, 잘 되지 않습니다.다른방법으로 listView 에 query type: query collection > collection: users 를 하고, filter 로 uid 가 component parameter 로 넘긴 roomSpecification 의 participants 안에 있으면 해당 유저들만 나열하도록 하려고 했는데도 실패합니다.혹시 이런경우 어떻게 해야하는지 조언해주실 수 있으실까요??
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Scaffold 여러번 사용
따로 연습중에 첫화면에 Scaffold를 사용하고 네이게이터로 다른 화면으로 넘겨서 또 Scaffold를 쓰니까 화면이 작게나옵니다. 한 앱에서 Scaffold를 두번이상 사용하면 안되는걸까요
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
탭바 왼쪽에 공간이 남습니다.
깃에 올려주신 코드 그대로 빌드 해서 봤는데 이미지와 같이 공간이 남습니다. 공백이 안생기게 할 수 있는 방법이 있을까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Windows(desktop)에서 firebase_core 빌드 에러
pubspec.yaml에 firebase_core: ^2.25.4 를 추가해서Windows(desktop)빌드를 하면 아래의 에러가 납니다. firebase_app.lib(d94e1bff3c0e8414a6679ea91c3e103e_firebase_app.dir_Debug_app_desktop.obj) : warning LNK4099: 'firebase_app.pdb' PDB�� 'firebase_app.lib(d94e1bff3c0e8414a6679ea91c3e103e_firebase_app.dir_Debug_app_desktop.obj)' �Ǵ� 'firebase_app.lib(9df1b499e9d93fa7bea97ae713d33ce7_flatbuffers.dir_Release_idl_parser.obj) : error LNK2019: __std_find_trivial_8"struct f_b_flatbuffers::StructDef cdecl std_find_trivial<struct f_b_flatbuffers::StructDef ,struct f_b_flatbuffers::StructDef >(struct f_b_flatbuffers::StructDef ,struct f_b_flatbuffers::StructDef ,struct f_b_flatbuffers::StructDef * const)" (??$__std_find_trivial@PEAUStructDef@f_b_flatbuffers@@PEAU12@@@YAPEAPEAUStructDef@f_b_flatbuffers@@PEAPEAU01@0QEAU01@@Z)
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
플러터 중급 강의에는 bloc 패턴 과 같은 디자인 패턴 강의 있을까요?
궁굼합니다. 아님 다른 강의에서라도?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
ios Simulator오류
코드팩토리 디스코드https://bit.ly/3HzRzUMError (Xcode): Target debug_unpack_ios failed: Exception: Failed to codesign /Users/anshinyoung/Desktop/test_pro/build/ios/Debug-iphonesimulator/Flutter.framework/Flutter with identity -.Could not build the application for the simulator.Error launching application on iPhone 15.이 오류가 계속 뜨는데 해결방안이 뭔가요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
Cursor based pagination 내 신규 데이터 갱신 관련 문의
Cursor based pagination 사용 시 변경 데이터 (신규데이터 또는 삭제데이터) 는 패스하게 되는데, 변경데이터가 있는 경우에만 데이터를 갱신하는 refetch 로직은 어떤식으로 구성하면 될까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
statefulwidget 에서 라이프 사이클 관련 질문드립니다.
stateful 관련해서 코드를 보면 child: Padding(padding: const EdgeInsets.symmetric(horizontal: 8.0),child: Column(children: [Expanded(child: Center(child: show ? HomeScreen( color: color, ) : Container(),),), 색깔 변경 하기를 누르면 child: show ? HomeScreen( color: color, ) : Container(), 이부분이 호출되면서 클래스를 계속 생성 하는데HomeScreen( color: color, ) 을 한번만 만들어 놓고 변수에 저장한 다면해당 callback 에서 color 값만 바꾸게 하는건 안되나요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
카메라 이동하기 부분에서요
카메라 이동을 위해서 아래와 같은 메소드를 만드셨다고 했는데 onMapCreated(GoogleMapController controller){} 여기서 이해가 안가서요 GoogleMapController를 매개변수로 받아주는 거면!! 어디서 넣어주는 곳이 있어야하는거 아닌가요??!올려주신 코드를 아무리 봐도 넣어주는 부분이 없는데 …,어떻게 가져다 쓰는지 모르겠습니다
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
웹뷰 내에서 스크롤이 안돼요
flutter_webview 강의에서ios 애뮬레이터에서 웹뷰를 띄운 뒤 화면 안에서 스크롤이 안됩니다!!코드는 강의와 동일하구요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
ios 이미지 전송 질문
Future<void> uploadFile() async { // file picker를 통해 파일 선택 final filePath = _image!.path; // 파일 경로를 통해 formData 생성 var dio = Dio(); var formData = FormData.fromMap({ 'file' : await MultipartFile.fromFile(filePath!) }); dio.options.contentType = 'multipart/form-data'; dio.options.maxRedirects.isFinite; final token = await ref.read(secureStorageProvider).read(key:ACCESS_TOKEN_KEY); dio.options.headers.addAll({ 'authorization': 'bearer $token', }); print("ok"); // 업로드 요청 final response = await dio.post("http://$ip/s3/upload", data: formData); _downloadUrl = response.data; print(response.statusCode.toString() + "hihi"); }이미지 업로드 코드로 위 코드를 사용하고있는데 안드로이드 애뮬레이터에서는 전송이 잘 되지만 ios에서 해당 코드를 실행하면[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: DioError [DioErrorType.response]: Http status error [401] 계속 위와 같은 에러가 뜹니다 구글에 검색해도 잘 안나와서 질문드립니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
IconButton 위치(정렬??) 질문
안녕하세요. 질문이 있어서 글올립니다. 8강 web_view까지 봤는데요, appBar에서 actions하위 IconButton home icon위치를 우측에서 좌측으로 변경하고 싶습니다. 방법이 있을까요???IconButton에 alignment속성이 있어서 추가해줘봤는데 어떤 값을 지정해도 우측에만 나오더라구요 ㅠㅠ return Scaffold(appBar: AppBar(title: Text('Wonsun'),backgroundColor: Colors.orange,centerTitle: true,actions: [IconButton(alignment: Alignment.topLeft,onPressed: () {controller.loadRequest(homeUrl);},icon: const Icon(Icons.home,color: Colors.white,))],),body: WebViewWidget(controller: controller,),);
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
커스텀 위젯 변수 선언 위치 차이
StatelessWidget이나 StatefulWidget에서 변수를 선언할 때빌드 함수 내에 선언하는 것과 빌드 함수 밖에 선언하는 것은 어떤 차이가 있나요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
변수 선언 위치
웹뷰 앱 만드는 부분 진행중입니다.HomeScreen 클래스 안에 homeUrl을 선언하면, ..loadRequest(homeurl) 부분에 인스턴스 멤버는 생성자?(initializer)안에 can't be accessed 라고 오류가 뜨는데,chatgpt랑 계속 대답을 주고 받았는데 제가 이해를 못해서 그런건지 안 와닿아서요..HomeScreen 위젯을 생성할 때, 위에서부터 코드가 실행되니까 homeUrl이 먼저 초기화되서 될 것 같은데 왜 오류가 나나요? ㅠㅠ
-
미해결Flutter 중급 2편 - 실전 앱 개발 - 미국 주식 앱 (with 클린 아키텍처)
뷰모델 생성자로 리스트 불러오
class StoreViewModel with ChangeNotifier { String? regionName = ''; String barName = '지역별 서점'; bool isLoading = false; final StoreRepository repository; StoreViewModel(this.repository) { print('생성자호출'); _loadSimpleStores(); print(stores); } List<SimpleStore> stores = []; void onEvent(StoreEvent event, BuildContext context) { event.when(touchTile: (id) async { StoreInfo store = await repository.getStoreInfo(id); Navigator.push( context, MaterialPageRoute( builder: (context) => StoreDetailScreen(storeDetail: store)), ); }, searchStore: (query) async { }); } //지역 전체 Future<void> _loadSimpleStores() async { isLoading = true; notifyListeners(); stores = await repository.getStores(); isLoading = false; notifyListeners(); } } --------------------------------------------- class StoreViewScreen extends StatefulWidget { StoreViewScreen({ super.key, this.barName, this.regionName, }); String? barName; String? regionName; @override State<StoreViewScreen> createState() => _StoreViewScreenState(); } class _StoreViewScreenState extends State<StoreViewScreen> { TextEditingController _controller = TextEditingController(); @override Widget build(BuildContext context) { final customerInfoViewModel = context.watch<CustomerInfoViewModel>(); final storeViewModel = context.watch<StoreViewModel>(); return Scaffold( appBar: AppBar( centerTitle: true, title: Text( storeViewModel.barName, style: TextStyle( fontWeight: FontWeight.bold, ), ), leading: IconButton( onPressed: () { Navigator.pop(context); }, icon: Icon(Icons.close), ), ), body: Column(children: [ //입력창 + 검색창 Container( child: Row( children: [ Expanded( child: Container( decoration: BoxDecoration( border: Border.all(color: Colors.grey), // 테두리 색상 설정 borderRadius: BorderRadius.circular(8.0), // 테두리 둥글기 설정 ), child: TextField( controller: _controller, decoration: InputDecoration( hintText: '텍스트를 입력하세요.', // 힌트 텍스트 contentPadding: EdgeInsets.all(12.0), // 텍스트 입력 필드 내부의 여백 설정 border: InputBorder.none, // 기본 테두리 제거 ), ), ), ), TextButton(onPressed: () {}, child: Text('검색')) ], ), ), //지역 이름 or 내주변 Container( child: Row( children: [ Text( storeViewModel.regionName ?? '내 주변', style: TextStyle( fontSize: customerInfoViewModel.screenHeight / 20, fontWeight: FontWeight.bold), ), Text( '${storeViewModel.stores.length}가 검색 됨', style: TextStyle( fontSize: customerInfoViewModel.screenWidth / 20, fontWeight: FontWeight.bold), ), ], )), //서점 리스트 표시 Expanded( child: Container( child: !storeViewModel.isLoading ? ListView.builder( itemCount: storeViewModel.stores.length, itemBuilder: (BuildContext context, int index) { return GestureDetector( child: StoreSimpleInfo( id: storeViewModel.stores[index].id, profileUrl: storeViewModel.stores[index].imageUrl, storeName: storeViewModel.stores[index].name, storeAddr: storeViewModel.stores[index].address, category: storeViewModel.stores[index].category), onTap: () { storeViewModel.onEvent( StoreEvent.touchTile( storeViewModel.stores[index].id, ), context, ); }, ); }, ) : CircularProgressIndicator(), ), ), ]), ); } } 스크린을 열면 viewmodel 생성자로 리스트를 불러오고 싶은데 viewmodel 생성자가 작동을 안합니다 이유가 뭘까요 ㅠㅠ? 의존성주입 문제는 아닌것같아요
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
비디오 플레이어 만들기에서요
비디오 플레이어 만들기에서요 Setstate를 쓰지 않고요!!! 멈추고 시작하는 부분에서 시작중인가 그럼 멈춰라 멈추었나 그럼 시작해라. 이런 코드를 넣잖아요 그래서 아이콘이 바뀌지는 않지만!! 누르면 멈추고 실행이 동작은 되는데 왜 Setstate를 넣지 않으면 아이콘이 바뀌지않는건 당연하다 생각하는데. 멈추고 실행하는 동작도 안되야 하지 않나 싶어서요 이런 동작을 안할 거 같은데 말이죠…,,
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
전체 크기를 차지하게 할 때
double.infinity를 써야 할지 MediaQuery.of(context).size.width를 써야 할지 헷갈리는데 어떤 걸 써야 하나요?
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
.g 파일이 안생기네요
flutter pub run build_runner build 터미널에서 실행터미널창 내용 PS E:\_flutter\section24_calendar> flutter pub run build_runner build Deprecated. Use `dart run` instead. Building package executable... (6.4s) Built build_runner:build_runner. [INFO] Generating build script completed, took 352ms [INFO] Precompiling build script... completed, took 7.4s [INFO] Building new asset graph completed, took 994ms [INFO] Checking for unexpected pre-existing outputs. completed, took 1ms [INFO] Generating SDK summary completed, took 4.2s [WARNING] drift_dev on lib/database/drift_database.dart: Could not resolve Dart library package:section24_calendar/database/drift_database.dart This builder requires Dart inputs without syntax errors. However, package:section24_calendar/database/drift_database.dart (or an existing part) contains the following errors. drift_database.dart:24:1: A function body must be provided. Try fixing the errors and re-running the build. [WARNING] drift_dev on lib/database/drift_database.dart: Could not resolve Dart library package:section24_calendar/database/drift_database.dart This builder requires Dart inputs without syntax errors. However, package:section24_calendar/database/drift_database.dart (or an existing part) contains the following errors. drift_database.dart:24:1: A function body must be provided. Try fixing the errors and re-running the build. [INFO] Running build completed, took 14.4s [INFO] Caching finalized dependency graph completed, took 75ms [INFO] Succeeded after 14.5s with 68 outputs (158 actions) PS E:\_flutter\section24_calendar> [INFO] Succeeded after 14.5s with 68 outputs (158 actions)라고 68개 생긴다고 나오는데 마우스 우클릭 해도 파일은 안생김 검색해보니 flutter pub add --dev drift_devflutter pub run build_runner cleanflutter pub run build_runner build --delete-conflicting-outputs각각 해봐도 안생기네요flutter pub add --dev drift_dev 해봄 PS E:\_flutter\section24_calendar> flutter pub add --dev drift_dev "drift_dev" is already in "dev_dependencies". Will try to update the constraint. Resolving dependencies... _fe_analyzer_shared 64.0.0 (67.0.0 available) analyzer 6.2.0 (6.4.1 available) ffi 2.1.0 (2.1.2 available) flutter_lints 2.0.3 (3.0.1 available) intl 0.18.1 (0.19.0 available) js 0.6.7 (0.7.0 available) lints 2.1.1 (3.0.0 available) matcher 0.12.16 (0.12.16+1 available) material_color_utilities 0.5.0 (0.8.0 available) meta 1.10.0 (1.12.0 available) ! path 1.9.0 (overridden) test_api 0.6.1 (0.7.0 available) web 0.3.0 (0.4.2 available) web_socket_channel 2.4.0 (2.4.3 available) Got dependencies! 13 packages have newer versions incompatible with dependency constraints. Try `flutter pub outdated` for more information. PS E:\_flutter\section24_calendar> flutter pub run build_runner clean 해봄 PS E:\_flutter\section24_calendar> flutter pub run build_runner clean Deprecated. Use `dart run` instead. Building package executable... (6.3s) Built build_runner:build_runner. [WARNING] Deleting cache and generated source files. This shouldn't be necessary for most applications, unless you have made intentional edits to generated files (i.e. for testing). Consider filing a bug at https://github.com /dart-lang/build/issues/new if you are using this to work around an apparent (and reproducible) bug. [WARNING] No asset graph found. Skipping cleanup of generated files in source directories. [INFO] Cleaning up source outputs completed, took 1ms [INFO] Cleaning up cache directory completed, took 37ms PS E:\_flutter\section24_calendar> flutter pub run build_runner build --delete-conflicting-outputs 해봄 PS E:\_flutter\section24_calendar> flutter pub run build_runner build --delete-conflicting-outputs Deprecated. Use `dart run` instead. [INFO] Generating build script completed, took 335ms [INFO] Reading cached asset graph completed, took 100ms [INFO] Checking for updates since last build completed, took 911ms [INFO] Running build completed, took 17ms [INFO] Caching finalized dependency graph completed, took 78ms [INFO] Succeeded after 102ms with 0 outputs (0 actions) PS E:\_flutter\section24_calendar> 어찌 해야 조을까요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
riverpod 2 (async) notifier 사용?
https://riverpod.dev/ko/docs/migration/from_state_notifierriverpod 2 공식문서에 보면 Notifier/ AsyncNotifer 가 새롭게 도입되면서 StateNotifier는 더이상 사용되지 않는다고 나오는데 새로운 방식 강의 업데이트 안 해주시나요...?
-
해결됨Flutter 중급 3편 - 의존성 주입 가이드
remote data source impl
안녕하세요. 강의 잘 보고 있습니다. remote data source impl 관련해서 질문이 있습니다. @prod @Singleton(as: CommunityRemoteDataSource) class CommunityRemoteDataSourceApiImpl implements CommunityRemoteDataSource { final _dio = Session().dio; @override Future<CommunityResponseDTO> fetchCommunities() async { Response<dynamic> response = await _dio.get('get/community/path'); final responseDto = CommunityResponseDTO.fromJson(response.data); return responseDto; } } CommunityRemoteDataSource 의 구현체 CommunityRemoteDataSourceApiImpl 를 만들어서 사용중입니다.ApiImpl 은 실제 서버와 통신중 이며,http 라이브러리 Dio를 사용하고 있습니다. 여기서 테스트를 위해 DioMock 객체를 만들어서 사용하고자 합니다. 원래 CommunityRemoteDataSourceApiImpl 에 final _dio = Session().dio; 로 싱글턴으로 dio를 내부에 객체를 생성하고 있는데 이거를 주입받는 식으로 변경하여 테스트 시만 CommunityRemoteDataSourceApiImpl(DioMock()) 을 넣는 것인지, 아니면 CommunityRemoteDataSourceApiMockImpl 를 새로 또 만드는지 궁금합니다.만약 CommunityRemoteDataSourceApiImpl(DioMock()) 로 주입을 받는 식이라면Response<dynamic> response = await _dio.get('get/community/path'); final responseDto = CommunityResponseDTO.fromJson(response.data); 해당 코드들이 Dio() 일 때, DioMock() 일 때 달라야 할 것 같은데 어떻게 처리하는 것이 맞는지 궁금합니다. 감사합니다.