묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
SignupCubit context.read() 문제입니다
개남님 안녕하세요, 덕분에 열심히 배우고 있습니다!강의를 따라 수강하던 도중 context.read() 관련 에러가 발생하여 질문 올립니다..! app.dart에서 SignupCubit을 등록하고, signup_page에서 _signupView에 context를 넘기고, context.read()를 호출했는데, SignupCubit을 찾지 못하는 거 같습니다..! 혹시 어디에서 발생하는 문제인지 파악하기 위해 확인해야 할 부분이 있을까요??
-
해결됨[Bloc 응용] 실전 앱 만들기 (책 리뷰 앱) : SNS 로그인, Firebase 적용, Bloc 상태 관리, GoRouter
퍼블리싱 싸이트 관련
강의 내용중 피그마로 모바일 퍼블리싱한 싸이트가 있던데 저도 접속해서 볼 수는 없나요?
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
dev_dependencies 추가 방법
안녕하세요 강사님. dependencies 추가 방법에 대해 궁금한 점이 생겨서 문의 남깁니다.dependencies의 경우 pubspec.yaml을 직접 수정하지 않고, 터미널에서 flutter pub add ~를 입력해도 추가할 수 있는 것으로 알고 있습니다.그러면 dev_dependencies 역시 터미널 명령어로 추가할 수 있는 방법이 있을까요?또한, pub.dev에서 dev_dependencies도 검색이 되는 게 맞을까요?궁금합니다...
-
해결됨[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
StateNotifierProvider.family를 사용하고 싶습니다.
stateNotifierProvider.family를 사용하려고 하는데, notifier를 리턴하다보니 상태값을 어떻게 리턴해야하는지? 궁금합니다.
-
미해결[LG유플러스] 앱 만들기 초급 과정 (Flutter)
""구글지도 사용해보기" 에서 에러 문제
구글 맵은 확대/축소 버튼 까지 뜨는데요,흰색 빈 화면으로 나옵니다.에러 원인을 찾다가 못 찾겠어서요에러 내용 아래와 같이 올려 드립니다.어떻게 해결하면 될지 문의 드립니다.[에러 문구]Launching lib\main.dart on sdk gphone x86 64 in debug mode...Running Gradle task 'assembleDebug'...√ Built build\app\outputs\flutter-apk\app-debug.apk.Installing build\app\outputs\flutter-apk\app-debug.apk...D/FlutterGeolocator( 8967): Attaching Geolocator to activityD/FlutterGeolocator( 8967): Creating service.D/FlutterGeolocator( 8967): Binding to location service.D/FlutterGeolocator( 8967): Geolocator foreground service connectedD/FlutterGeolocator( 8967): Initializing Geolocator servicesDebug service listening on ws://127.0.0.1:51323/1PK6KOdyzYM=/wsSyncing files to device sdk gphone x86 64...I/ple.chool_check( 8967): Compiler allocated 4533KB to compile void android.view.ViewRootImpl.performTraversals()D/MapsInitializer( 8967): preferredRenderer: nullD/zzcb ( 8967): preferredRenderer: nullI/zzcb ( 8967): Making Creator dynamicallyW/ziparchive( 8967): Unable to open '/data/user_de/0/com.google.android.gms/app_chimera/m/00000002/DynamiteLoader.dm': No such file or directoryW/ziparchive( 8967): Unable to open '/data/user_de/0/com.google.android.gms/app_chimera/m/00000002/DynamiteLoader.dm': No such file or directoryI/DynamiteModule( 8967): Considering local module com.google.android.gms.maps_dynamite:0 and remote module com.google.android.gms.maps_dynamite:203115000I/DynamiteModule( 8967): Selected remote version of com.google.android.gms.maps_dynamite, version >= 203115000V/DynamiteModule( 8967): Dynamite loader version >= 2, using loadModule2NoCrashUtilsW/ziparchive( 8967): Unable to open '/data/user_de/0/com.google.android.gms/app_chimera/m/00000006/MapsDynamite.dm': No such file or directoryW/ziparchive( 8967): Unable to open '/data/user_de/0/com.google.android.gms/app_chimera/m/00000006/MapsDynamite.dm': No such file or directoryI/Google Maps Android API( 8967): Google Play services client version: 12451000D/CompatibilityChangeReporter( 8967): Compat change id reported: 183155436; UID 10160; state: ENABLEDI/Google Maps Android API( 8967): Google Play services package version: 225014047I/Google Maps Android API( 8967): Google Play services maps renderer version(legacy): 203115000D/MapsInitializer( 8967): loadedRenderer: LEGACYD/zzcb ( 8967): preferredRenderer: nullI/Google Maps Android API( 8967): Google Play services package version: 225014047I/Google Maps Android API( 8967): Google Play services maps renderer version(legacy): 203115000D/CompatibilityChangeReporter( 8967): Compat change id reported: 210923482; UID 10160; state: ENABLEDD/CompatibilityChangeReporter( 8967): Compat change id reported: 171228096; UID 10160; state: ENABLEDI/PlatformViewsController( 8967): Using hybrid composition for platform view: 0W/Parcel ( 8967): Expecting binder but got null!E/GoogleMapController( 8967): Cannot enable MyLocation layer as location permissions are not grantedD/EGL_emulation( 8967): eglMakeCurrent: 0x785afc957d10: ver 3 1 (tinfo 0x785d1cf4d080) (first time)I/bb ( 8967): Successfully registered with Phenotype.E/EGL_emulation( 8967): eglQueryContext 32c0 EGL_BAD_ATTRIBUTEE/EGL_emulation( 8967): tid 8967: eglQueryContext(2122): error 0x3004 (EGL_BAD_ATTRIBUTE)D/HostConnection( 8967): createUnique: callD/HostConnection( 8967): HostConnection::get() New Host Connection established 0x785afc95e850, tid 9046D/HostConnection( 8967): HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_native_sync_v2 ANDROID_EMU_native_sync_v3 ANDROID_EMU_native_sync_v4 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV_Cache ANDROID_EMU_vulkan_ignored_handles ANDROID_EMU_has_shared_slots_host_memory_allocator ANDROID_EMU_vulkan_free_memory_sync ANDROID_EMU_vulkan_shader_float16_int8 ANDROID_EMU_vulkan_async_queue_submit ANDROID_EMU_vulkan_queue_submit_with_commands ANDROID_EMU_sync_buffer_data ANDROID_EMU_vulkan_async_qsri ANDROID_EMU_read_color_buffer_dma ANDROID_EMU_hwc_multi_configs GL_OES_EGL_image_external_essl3 GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_host_side_tracing ANDROID_EMU_gles_max_version_3_1 D/EGL_emulation( 8967): eglCreateContext: 0x785afc95e010: maj 1 min 0 rcv 1D/EGL_emulation( 8967): eglMakeCurrent: 0x785afc95e010: ver 1 0 (tinfo 0x785d1cf4d280) (first time)D/EGL_emulation( 8967): eglMakeCurrent: 0x785afc95e010: ver 1 0 (tinfo 0x785d1cf4d280) (first time)
-
해결됨[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
안드로이드 스튜디오 실행 시 start failed라는 오류가 발생하는데 어떡하나요?
인텔칩이 탑재된 맥을 사용하고 있습니다.그런데 안드로이드 스튜디오를 실행하면 start failed라는 제목의 오류가 발생하며 실행되지 않습니다.오류 내용은 이렇습니다.Internal error. Please refer to https://code.google.com/p/android/issuesjava.nio.file.AccessDeniedException: /Users/hanjaejune/Library/Application Support/Google/AndroidStudio2022.2 at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source) at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source) at java.base/sun.nio.fs.UnixFileSystemProvider.createDirectory(Unknown Source) at java.base/java.nio.file.Files.createDirectory(Unknown Source) at java.base/java.nio.file.Files.createAndCheckIsDirectory(Unknown Source) at java.base/java.nio.file.Files.createDirectories(Unknown Source) at com.intellij.idea.SocketLock.lockPortFiles(SocketLock.java:202) at com.intellij.idea.SocketLock.lockAndTryActivate(SocketLock.java:131) at com.intellij.idea.StartupUtil.lockSystemDirs(StartupUtil.java:783) at com.intellij.idea.StartupUtil.start(StartupUtil.java:169) at com.intellij.idea.Main.bootstrap(Main.java:125) at com.intellij.idea.Main.main(Main.java:82)-----Your JRE: 17.0.6+0-17.0.6b802.4-9586694 x86_64 (JetBrains s.r.o.)/Applications/Android Studio.app/Contents/jbr/Contents/Home 어떻게 해결하면 좋을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
pushNamedAndRemoveUntil관련 질문있어용
import 'package:flutter/material.dart'; import 'package:navigation/layout/main_layout.dart'; import 'package:navigation/screen/route_three_screen.dart'; class RouteTwoScreen extends StatelessWidget { const RouteTwoScreen({super.key}); @override Widget build(BuildContext context) { final arguments = ModalRoute.of(context)!.settings.arguments; return MainLayout(title: 'Route Two', children: [ Text( 'arguments: ${arguments}', textAlign: TextAlign.center, ), ElevatedButton( onPressed: () { // [HomeScreen(), RouteOne(), RouteTwo()] stack 구조! Navigator.of(context).pop(); }, child: Text( 'Pop', ), ), ElevatedButton( onPressed: () { Navigator.of(context).pushNamed('/three', arguments: 999); }, child: Text('Push Named'), ), ElevatedButton( onPressed: () { // Navigator.of(context).pushReplacement( // MaterialPageRoute( // builder: (_) => RouteThreeScreen(), // ), // ); Navigator.of(context).pushReplacementNamed('/three'); }, child: Text('Push Replacement'), ), ElevatedButton( onPressed: () { // Navigator.of(context).pushAndRemoveUntil( // MaterialPageRoute(builder: (_) => RouteThreeScreen()), // (route) => route.settings.name == '/', // ); Navigator.of(context).pushNamedAndRemoveUntil( '/three', (route) => route.settings.name == '/one', ); }, child: Text('Push Named Replacement'), ), ]); } } Navigator.of(context).pushNamedAndRemoveUntil( '/three', (route) => route.settings.name == '/one', );제가 이런식으로 '/'이 아닌 '/one'으로 바꾸어 보았는데, route_three에서 pop()하면 one으로 가는게 아니라 그냥 검은 화면이 보여요. '/'은 잘 작동하고 main파일에서도 정확히 '/one'으로 잘 등록해 놓았는데 왜 작동이 안되는 걸까요??
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
블루투스로 센서 데이터 수집하고 싶은데 어떠게 해야 할까요?
강의 잘 듣고 있습니다. 정말 감사드립니다.제가 블루투스를 이용해서 센서에서 데이터를 수집하는 app을 개발하려고 합니다. 아직 준비 중이라 이렇게 flutter 강좌를 듣고 있습니다.블루투스를 이용한 데이터 수집과 관련된 강좌나 참고할만한 자료가 있을 까요?
-
미해결Flutter 응용 - 공공 API를 활용한 앱 만들기 (MVVM 패턴)
3버전 flutter에서 final stores = List<Store>(); 이 부분이 에러가 날 때는
이렇게 쓰면 됩니다..!
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
플러터 splash화면 시간 질문
FutureOr<String?> redirectLogic(BuildContext context,GoRouterState state){ final UserModelBase? user = ref.read(userMeProvider); //로그인 중 final logginIn = state.location == '/login'; //회원가입 페이지 이동중인지 final joinIn = state.location == '/login/join'; //유저 정보가 없는데 //로그인중이면 그대로 로그인 페이지에 두고 //만약 로그인중이 아니라면 로그인 페이지로 이동 if(user == null && !joinIn){ return logginIn ? null : '/login'; } //회원가입 페이지로 이동중이라면 if(user==null && joinIn){ return '/login/join'; } //user가 null이 아님 //UserModel //사용자 정보가 있는상태면 //로그인 중이거나 현재 위치가 SplashScreen이면 //홈으로 이동 if(user is UserModel){ return logginIn || state.location == '/splash' ? '/' : null; } //UserModelError if(user is UserModelError){ return logginIn ? null : '/login'; } return null; }} 위의 로직에서 splash화면을 인스타그램처럼 1초 지속되도록 하고싶은데 혹시 방법이 있을까요?
-
미해결Flutter 응용 - 공공 API를 활용한 앱 만들기 (MVVM 패턴)
3버전 flutter에서 RaisedButton이 안보일 때는ElevatedButton을 써보세요
이렇게 ElevatedButton을 이용해보세요그러면 이렇게 화면에 선생님 강의와 비슷하게 나옵니다!RaisedButton은 2.0 이후로 사용을 권장하지 않고 있다고 하네요!
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
중첩 map 쓰는 부분
안녕하세요 강사님.return query.watch().map( (rows) => rows .map( (row) => ScheduleWithColor( schedule: row.readTable(schedules), categoryColor: row.readTable(categoryColors), ), ) .toList(), );이 부분에 질문이 있어서 글 남깁니다.제 생각에는 데이터 구조가 위와 같다고 생각했습니다. 이에 그냥 아래와 같이 작성하면 어떨까라는 생각이 들었습니다.return query.watch().map( (rows) => ScheduleWithColor(schedule: rows[0].readTable(schedules), categoryColor: rows[0].readTable(categoryColors)), ).toList();근데 이와 같이 작성하면 return 타입이 Stream이 아니라 Future가 되는 것 같더군요. 제가 어느 부분에서 혼란을 겪고 있는지 알고 싶습니다. + 추가제가 이렇게 생각한 이유는return query.watch().map((rows) { print(rows.length); return rows .map( (row) => ScheduleWithColor( schedule: row.readTable(schedules), categoryColor: row.readTable(categoryColors), ), ) .toList(); });코드를 이렇게 변경해 봤을 때, rows.length가 1이 출력되었기 때문입니다.
-
해결됨[플러터 상태관리] Bloc 마스터 코스 기초부터 응용까지!
8-1에서 build하는 app 별 상태가 다르게 나오는데 원인이 무엇일까요?
안녕하세요 강의 잘 보고 있습니다!제가 초기에 아이폰 에뮬로 하기 귀찮아서 mac app이랑 chrome app으로 강의를 따라하고 있었는데요... 약 30분까지의 스크롤 해결 전까지 진행한 상태에서 발견한 에러입니다.보니까 Mac App으로 하니 DioError: SockerException: Connection Failed가 되면서 아래 같이 에러가 발생합니다.chrome으로 하는 경우에는 데이터는 되는데 이미지를 못 읽는듯해요...그래도 아이폰 에뮬로 하니 잘 되긴 하던데... 이 차이는 앱별로 동작하는게 달라서 그런가요??혹시 동일하게 다 가능하도록 해결하는 방법도 있을까요?
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
프로바이더질문
처음 데이터를 가지고올때 if(state is! CursorPagination){ await this.paginate(); } 위의 코드를 실행하는데만약 데이터가 없다면final resp = await repository.paginate( paginationParams: paginationParams );여기서 캐스팅 오류가납니다.혹시 따로 해결방법이있을까요?? 너무 어렵네요
-
미해결[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!
provider질문
void init(){ state is CursorPaginationLoading; }이런식으로 코드를 짜면 프로바이더 내용이 초기화 되는건가요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
children 속성과 관련하여 질문이 있습니다.
children: [ 123, 456, 789, ].map((e) => Row( children:[ e.toString().split('').map((y) => Image.asset('asset/img/$y.png')).toList(), ] )).toList(), ),이 부분에서 강사님이 children에 [] 부분을 빼고 코드 작성을 하셨지만 저는 안드로이드 스튜디오에서 children : [] 을 자동완성 시켜주기도 하고 []의 존재 이유가 복수의 위젯을 넣기 위함이니 그냥 하나만 넣어서 작성하여도 상관없을 것이라고 생각하였습니다.하지만 막상 그렇게 작성해보니 오류가 나서 인터넷도 찾아보고 GPT한테도 물어봤지만 마땅한 해답은 못찾은 채 children 부분에 []를 지우니 오류가 사라지더군요. 왜 그런지 알 수 있을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
CrossAxisAlignment 질문
import 'package:flutter/material.dart'; class HomeScreen extends StatefulWidget { const HomeScreen({super.key}); @override State<HomeScreen> createState() => _HomeScreenState(); } class _HomeScreenState extends State<HomeScreen> { @override Widget build(BuildContext context) { return Scaffold( body: SafeArea( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text('랜덤숫자 생성기'), IconButton( onPressed: () {}, icon: Icon( Icons.settings, ), ), ], ), Expanded( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('123'), Text('456'), Text('789'), ], ), ), Container( width: double.infinity, child: ElevatedButton( onPressed: () {}, child: Text('생성하기!'), ), ), ], ), ), ); } }그냥 수업 내용인데, 왜 첫번째 Column에서는 container나 sizedBox하지 않고 그냥 crossAxisAlignment가 바로 적용되는 건가요?? 혹시 SafeArea 영역이 width가 최대라서 바로 횡축 정렬이 가능해지나요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
앱번들 빌드 에러좀 봐주세요.
유튜브 다트 강의, 인프런 플러터 강의, 그리고 코드팩토리의 플러터 프로그래밍 책까지 잘 보고 있습니다.양질의 컨텐츠와 친절한 답변에 매번 감사드립니다.현재 챗gpt api를 이용한 간단한 앱을 만들었고 이것을 빌드하려고 합니다.책 606쪽의 flutter build appbundle이라고 터미널에 치면 아래 에러가 납니다. mac@HanHoseokui-iMac kind_teacher_han % flutter build appbundle💪 Building with sound null safety 💪FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:mergeReleaseResources'.> Multiple task action failures occurred: > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Android resource compilation failed ERROR:/Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res/mipmap-mdpi/ic_launcher.png: AAPT: error: file failed to compile. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Android resource compilation failed ERROR:/Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res/mipmap-hdpi/ic_launcher.png: AAPT: error: file failed to compile. > A failure occurred while executing com.android.build.gradle.internal.res.Aapt2CompileRunnable > Android resource compilation failed ERROR:/Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: AAPT: error: file failed to compile.* Try:> Run with --stacktrace option to get the stack trace.> Run with --info or --debug option to get more log output.> Run with --scan to get full insights.* Get more help at https://help.gradle.orgBUILD FAILED in 5sRunning Gradle task 'bundleRelease'... 6.2sGradle task bundleRelease failed with exit code 1 이미지 쪽에 에러가 있는 것 같아 보입니다. 저는 앱 아이콘 만들기 웹 사이트(https://www.appicon.co)에서 제가 만든 아이콘으로 안드로이드용 이미지를 만든 후 /Users/mac/Documents/codefactory/kind_teacher_han/android/app/src/main/res에 폴더 붙여넣기를 했었는데 이게 문제가 되었을까요? 옛날에 앱인벤터라는 교육용 블록코딩 앱 개발 플랫폼으로 했을 때는 앱 출시까지 그렇게 어렵지 않게 했었는데.. 한 달가량 헤메고 있으니 힘드네요ㅠㅠ 도와주세요!^^
-
미해결[코드팩토리] [입문] Dart 언어 4시간만에 완전정복
상속받은 클래스의 named parameter 사용방법이 궁금합니다
상속받은 클래스의 named parameter 사용방법은 없는건가요?BoyGroud의 생성자에 required를 사용해 강의 속(36분) bts 객체의 파라미터를 name:'bts'로 넘겨주는 방법은 없을까요?
-
미해결[코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
클래스 상속 질문있습니다.
부모 클래스를 상속할 때..class Idol { String name; int membersCount; Idol({ required this.name, required this.membersCount, }); void sayName() { print('저는 ${this.name}입니다.'); } void sayMembersCount() { print('${this.name}은/는 ${this.membersCount}명의 멤버로 구성되어 있습니다.'); } } 강의에서 설명해주신class GirlGroup extends Idol { GirlGroup( String name, int membersCount, ) : super( name: name, membersCount: membersCount, ); }이 코드 대신 명시적으로class BoyGroup extends Idol { BoyGroup({ required super.name, required super.membersCount, }); }이렇게 사용해도 인스턴스에서 명시적으로 선언하는 것 외에 다른 차이는 없는 건가요?(두 가지 모두 정상 출력확인했습니다.)