묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
섹션 26의 플러그인 설치 부분에서 에러가 납니다.
FAILURE: Build failed with an exception.* What went wrong:A problem occurred configuring project ':agora_rtm'.> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl. > Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information about setting the namespace. If you've specified the package attribute in the source AndroidManifest.xml, you can use the AGP Upgrade Assistant to migrate to the namespace value in the build file. Refer to https://d.android.com/r/tools/upgrade-assistant/agp-upgrade-assistant for general information about using the AGP Upgrade Assistant.* 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.org.BUILD FAILED in 687msError: Gradle task assembleDebug failed with exit code 1라는 에러가 발생하네요. macOS를 sequoia로 올려서 그럴까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
키노트 자료는 제공 안해주나요?
개인 노트에 내용을 정리하는데 큰 도움이 될것 같은데,키노트는 제공이 안되는건지요?스크린샷이 안되기 때문에 그림을 정리할 수가 없네요.
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
component 파일에서는 tsx파일이 아니라 jsx 파일을 쓰는 이유를 알 수 있을까요?
4.5 loading.error에서요... component 폴더에 넣는 ErrorMessage와 LoadingBar 파일은 tsx가 아니라 jsx파일을 쓰는 이유를 알고 싶습니다
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
GestureDetector onTap이 올바르게 동작하지 않습니다.
안녕하세요.좋은 강의 잘 듣고 있습니다. VideoPlayer을 포함한 위젯을 VideoPlayerWidget으로 Stateful 위젯으로 구현했습니다.그리고 자식 위젯으로 아래 코드와 같이 GestureDetector > ApstectRatio > Stack 으로 구성하였습니다.Stack의 자식 위젯으로는 VideoPlayer, _PlayButtons, _Bottom 위젯을 가지고 있습니다. 이 때, VideoPlayer가 포함되어 있으면 GestureDetector의 onTap 메서드가 호출되지 않으며, VideoPlayer를 제외하는 경우 onTap 메서드가 호출되고 있습니다. 관련해서 자식의 터치 이벤트도 감지하기 위해 GestureDetector에 behavior 프로퍼티로 HitTestBehavior.opaque 값을 할당했지만, 그래도 VideoPlayer가 존재하는 경우 올바르게 동작하지 않고 있습니다. 혹시 어떤 부분이 문제인지 알 수 있을까요...?감사합니다. 아래 코드는 VideoPlayerWidget의 build 메서드입니다.@override Widget build(BuildContext context) { return GestureDetector( behavior: HitTestBehavior.opaque, onTap: (){ print("onTap"); }, child: !isInitalized ? const CircularProgressIndicator() : AspectRatio( aspectRatio: videoPlayerController.value.aspectRatio, child: Stack( children: [ VideoPlayer(videoPlayerController), _PlayButtons( onLeft: onLeft, onPlay: onPlay, onRight: onRight, isPlaying: videoPlayerController.value.isPlaying, ), _Bottom( posMinutes: videoPlayerController.value.position.inMinutes, posSeconds: videoPlayerController.value.position.inSeconds, durationMinuets: videoPlayerController.value.duration.inMinutes, durationSeconds: videoPlayerController.value.duration.inSeconds, onSliderChanged: onSliderChanged, ), // _PickPicture(onPress: widget.onPickPicture,) ])), ); }
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
versel 을 통한 배포를 하는 것과 (홈서버 + 클라우드 플래어 프록시)를 하는 것을 비교해주실 수 있나요?
안녕하세요. 우선 소개부터 드리자면 저는 FE 개발자나 그쪽을 지망하는 것은 아니고 백엔드를 업으로 하고 있고 집에서 홈서버에 제 개인 서비스를 배포할 목적으로 해당 강의를 수강하게 되었습니다. 사실 제가 프론트의 세계는 잘 몰라서 질문 드립니다. 혹시 페이지 로드 속도 & 검색 엔진 노출도가 배포 플랫폼에 영향을 받을까요?다른 말로는, versel 을 통해 프론트를 배포하는 것이 배포가 쉬운 것 이외에 서비스의 퀄리티에도 도움을 주는 장점이 있을까요 ?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
onStartTimeValidate 함수에서 값이 null로 넘어 올 수 있나요?
String? onStartTimeValidate(String? val) { if (val == null) return '값을 입력 해주세요.'; if (int.tryParse(val) == null) return '값을 숫자로 입력해주세요.'; final int time = int.parse(val); if (time > 24 || time < 0) return '0~24의 값을 입력해주세요.'; return null; }강의처럼 코드를 위와 같이 작성했을때텍스트 필드에 값을 입력하지 않고 저장하면 값이 빈 문자열로 넘어와서 '값을 입력해주세요' 가 아니라 '숫자를 입력해주세요' 라는 에러가 발생합니다.텍스트 필드의 값이 미입력시 null 이 아니라 빈문자열('')로 넘어오는것 같아서 아래처럼 코드를 수정했는데 맞는걸까요?if (val == null || val == '') return '값을 입력 해주세요.';
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
선생님 죄송한대
Supabase, Next 풀 스택 시작하기 (feat. 슈파베이스 OAuth, nextjs 14) 강의쿠폰 더 없을까요 ㅠㅠ 너무 늦게알았네요 ㅠㅠ
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
typedef를 사용한 특별한 이유가 있을까요?
BottomSheet 디자인 마무리하기에서 categoryColor를 변경할때 typedef를 사용하신 이유가 뭔가요?_Categories( selectedColor: selectedColor, onTap: (String color) { setState(() { selectedColor = color; }); }, ),위 처럼 넘기고 _Category 클래스에서 일반함수로 받고 아래처럼 실행해줘도 오류 없이 되는 것 같은데onTap: () { onTap(e); },typedef로 별도로 정의해서 받는 특별한 이유가 있는지 궁금합니다!
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Appbar 의 my_location 버튼을 눌러도 현재위치로 이동하질 않습니다.
강의 정말 잘 듣고있습니다! 오늘도 출근 프로젝트에서 앱바 액션 버튼의현재 위치로 시점 이동 버튼 기능이 동작하지 않습니다. 중간에 기능 확인할때 잘 작동하는것을 확인했는데강의 다 듣고 나서 다시 확인하니 작동을 하지 않습니다. Geolocator.getCurrentPosition() 여기서 데이터를 못받아와서 그런것 같은데 뭐 때문에 갑자기 못 받아오는건지 알수가 없습니다... import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; import 'package:google_maps_flutter/google_maps_flutter.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); late final GoogleMapController controller; bool choolCheckDone = false; bool canChoolCheck = false; final double okDistance = 100; final testPosition = LatLng(37.5214, 126.9246); @override initState() { super.initState(); Geolocator.getPositionStream().listen((event) { final start = testPosition; final end = LatLng(event.latitude, event.longitude); final distance = Geolocator.distanceBetween( start.latitude, start.longitude, end.latitude, end.longitude, ); setState(() { if (distance > okDistance) { canChoolCheck = false; } else { canChoolCheck = true; } }); }); } checkPermission() async { final isLocationEnabled = await Geolocator.isLocationServiceEnabled(); if (!isLocationEnabled) { throw Exception('위치 기능을 활성화 해주세요.'); } LocationPermission checkedPermission = await Geolocator.checkPermission(); if (checkedPermission == LocationPermission.denied) { checkedPermission = await Geolocator.requestPermission(); } if (checkedPermission != LocationPermission.always && checkedPermission != LocationPermission.whileInUse) { throw Exception('위치 권한을 허용 해주세요.'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( '오늘도 출근', style: TextStyle( color: Colors.blue, fontWeight: FontWeight.w700, ), ), actions: [ IconButton( color: Colors.blue, onPressed: myLocationPressed, icon: Icon(Icons.my_location), ), ], ), body: FutureBuilder( future: checkPermission(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasError) { return Center( child: Text(snapshot.error.toString()), ); } return Column( children: [ Expanded( flex: 2, child: _GoogleMaps( testPosition: testPosition, okDistance: okDistance, canChoolCheck: canChoolCheck, initialPosition: initialPosition, onMapCreated: googleMapController, ), ), Expanded( flex: 1, child: _Bottom( choolCheckDone: choolCheckDone, canChoolCheck: canChoolCheck, onChoolCheckPressed: onChoolCheckPressed, ), ) ], ); }, ), ); } googleMapController(GoogleMapController controller) { // state에 선언한 controller에 방금 선언한 controller 넣음 this.controller = controller; } onChoolCheckPressed() async { final result = await showDialog( context: context, builder: (BuildContext context) { return CupertinoAlertDialog( title: Text('출근하기'), content: Text('출근을 하시겠습니까?'), actions: [ TextButton( onPressed: () { Navigator.of(context).pop(false); }, child: Text('취소'), style: TextButton.styleFrom(foregroundColor: Colors.red), ), TextButton( onPressed: () { Navigator.of(context).pop(true); }, child: Text('출근하기'), style: TextButton.styleFrom(foregroundColor: Colors.blue), ) ], ); }, ); if (result) { setState(() { choolCheckDone = true; }); } } myLocationPressed() async { print('before'); final location = await Geolocator.getCurrentPosition(); print('after'); controller.animateCamera( CameraUpdate.newLatLng( // 이 위치로 구글맵 카메라를 애니메이션과 함께 움직여라! LatLng( location.latitude, location.longitude, ), ), ); } } class _GoogleMaps extends StatelessWidget { final LatLng testPosition; final double okDistance; final bool canChoolCheck; final CameraPosition initialPosition; final MapCreatedCallback onMapCreated; const _GoogleMaps({ super.key, required this.testPosition, required this.okDistance, required this.canChoolCheck, required this.initialPosition, required this.onMapCreated, }); @override Widget build(BuildContext context) { return GoogleMap( initialCameraPosition: initialPosition, mapType: MapType.normal, myLocationEnabled: true, myLocationButtonEnabled: false, zoomControlsEnabled: false, onMapCreated: onMapCreated, markers: { Marker( markerId: MarkerId('123'), position: testPosition, ), }, circles: { Circle( circleId: CircleId('inDistance'), center: testPosition, radius: okDistance, fillColor: canChoolCheck ? Colors.blue.withOpacity(0.5) : Colors.red.withOpacity(0.5), strokeColor: canChoolCheck ? Colors.blue : Colors.red, strokeWidth: 1, ) }, ); } } class _Bottom extends StatelessWidget { final bool choolCheckDone; final bool canChoolCheck; final VoidCallback onChoolCheckPressed; const _Bottom({ super.key, required this.choolCheckDone, required this.canChoolCheck, required this.onChoolCheckPressed, }); @override Widget build(BuildContext context) { return Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( choolCheckDone ? Icons.check : Icons.timelapse_outlined, color: choolCheckDone ? Colors.green : Colors.blue, ), SizedBox( height: 16, ), if (!choolCheckDone && canChoolCheck) OutlinedButton( onPressed: onChoolCheckPressed, child: Text('출근하기'), style: OutlinedButton.styleFrom( foregroundColor: Colors.blue, ), ), ], ); } }
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
윈도우 에뮬레이터창 오류
에뮬레이터터 세팅하기 강의 잘 따라하다가 에뮬레이터 실행하면 아래 그림처럼 최소화된 상태에서 클릭도 안되고 더이상 진행이 안됩니다. 강의에서처럼 구글디바이스 기본화면이 별도창으로 나와야하는데 말이죠 ㅜ 진도는 나가야하기 때문에 다시 '체크헤제'취소하고 아래처럼 사용하고 있습니다. 코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
[섹션16] 프로젝트_4. 디자인 마무리하기
안녕하세요 :)좋은 강의 만들어주신 덕분에 감사히 참고하고 있습니다.섹션 16 U&I 프로젝트 4번째 동영상에서 궁금한 점이 있어 게시판에 여쭙게 되었습니다. pubspec.yaml에서 font weight를 설정해주었는데요,- family: Sunflower fonts: - asset: asset/font/Sunflower-Light.ttf - asset: asset/font/Sunflower-Medium.ttf weight: 500 - asset: asset/font/Sunflower-Bold.ttf weight: 700 강의에서 말씀주신대로 fontWeight 파라미터에서 FontWeight.w500 등을 통해 1번에서 설정했던 fontweight을 불러올 수 있었습니다. Text( 'D+1', style: TextStyle( color: Colors.white, fontFamily: 'Sunflower', fontSize: 50.0, fontWeight: FontWeight.w400, ), ),다만, 1번에서 설정했던 500과 700 외에 다른 숫자들도 weight로 설정할 수 있더라구요. 그렇다면 굳이 1번과 같이 weight에 500, 700등을 미리 설정하는 것이 어떤 차이를 줄 수 있는지 여쭙습니다! 도움을 부탁드립니다.감사합니다~!
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
PageController를 initState()에서 사용할 수 있는 이유가 무엇인가요
지난번 StatefullWidget 라이프사이클에서 Constructor > 2. Create State > 3.InitState > 4. didChangeDependencies > 5. build 이라고 알려주셨습니다. 이번강의에서는 initState()에서 Pagecontroller.animateToPage를 사용하여 위젯을 컨트롤 하였는데요. 아직 빌드되지 않은 위젯을 어떻게 InitState에서 컨트롤할 수 있는건가요?5단계 Build 단계에서 위젯에 컨트롤러를 할당한 이후에 사용할 수 있어야하지 않나요? 코드팩토리 디스코드에 질문하면 더욱 빠르게 질문을 받아 볼 수 있습니다![코드팩토리 디스코드]https://bit.ly/3HzRzUM - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결Slack 클론 코딩[실시간 채팅 with React]
Module not found: Error: Can't resolve './App' 에러
안녕하세요. 강의에서 배운 내용 응용해서 사이드 프로젝트 만드는 중인데 Module not found: Error: Can't resolve './App' in '/Users/taetae/Documents/github/PicKIvy/frontend/src' 오류가 고쳐지지 않아 질문드립니다. (시도해본 해결방법들)[ Tsconfig.json ]“jsx": "react-jsx" 으로 설정됐는지 확인 -> 그래도 안됌“paths" 확인> "baseUrl": "src", (원래 “.”이었음) "paths": { "@pages/*": ["pages/*"], "@components/*": ["components/*"], "@layouts/*": ["layouts/*"], "@hooks/*": ["hooks/*"], "@utils/*": ["utils/*"], "@typings/*": ["typings/*"] }, 패스에 전부 src/붙여서 "@pages/*": [“src/pages/*"], 해봤는데 안됨 “moduleResolution": "node", 확인 -> 그래도 안됌 [ Web pack.config]Extensions: [ “.tsx”] 으로 설정됐는지 확인 -> 그래도 안됌package-lock.json지우고 다시 Npm install안됌 ( rm -rf node_modules package-lock.json ->npm cache clean --force -> npm install ) [ index.tsx ]import App from './App'; 을 import App from './App.tsx; ‘ 로 해봤는데 안됌[ 폴더구조, tsconfig ][ 웹팩 ]import path from 'path'; import ReactRefreshWebpackPlugin from '@pmmmwh/react-refresh-webpack-plugin'; import webpack, { Configuration as WebpackConfiguration } from 'webpack'; import ForkTsCheckerWebpackPlugin from 'fork-ts-checker-webpack-plugin'; // import { BundleAnalyzerPlugin } from 'webpack-bundle-analyzer'; import { Configuration as WebpackDevServerConfiguration } from 'webpack-dev-server'; interface Configuration extends WebpackConfiguration { devServer?: WebpackDevServerConfiguration; } const isDevelopment = process.env.NODE_ENV !== 'production'; const config: Configuration = { name: 'PicKivy', mode: isDevelopment ? 'development' : 'production', devtool: isDevelopment ? 'inline-source-map' : 'hidden-source-map', resolve: { extensions: ['.js', '.jsx', '.ts', '.tsx', '.json'], alias: { '@hooks': path.resolve(__dirname, 'src/hooks'), '@components': path.resolve(__dirname, 'src/components'), '@layouts': path.resolve(__dirname, 'src/layouts'), '@pages': path.resolve(__dirname, 'src/pages'), '@utils': path.resolve(__dirname, 'src/utils'), '@typings': path.resolve(__dirname, 'src/typings'), }, }, entry: { app: './src/index.tsx', }, target: ['web', 'es6'], module: { rules: [ { test: /\.tsx?$/, loader: 'babel-loader', exclude: /node_modules/, options: { presets: [ [ '@babel/preset-env', { targets: { browsers: ['> 0.25%', 'not dead'] }, // 최신 브라우저 타겟팅 debug: isDevelopment, }, ], '@babel/preset-react', '@babel/preset-typescript', ], plugins: [ '@babel/plugin-transform-runtime', isDevelopment && 'react-refresh/babel', '@emotion/babel-plugin', ].filter(Boolean), }, }, { test: /\.css$/, use: ['style-loader', 'css-loader'], }, { test: /\.(png|jpg|gif|svg)$/, type: 'asset/resource', }, ], }, plugins: [ new ForkTsCheckerWebpackPlugin({ async: false, }), new webpack.EnvironmentPlugin({ NODE_ENV: isDevelopment ? 'development' : 'production' }), ], output: { path: path.join(__dirname, 'dist'), filename: '[name].[contenthash].js', publicPath: '/dist/', }, devServer: { historyApiFallback: true, port: 3000, devMiddleware: { publicPath: '/dist/' }, static: { directory: path.resolve(__dirname, 'public') }, proxy: { '/api/': { target: 'http://localhost:3000', changeOrigin: true, ws: true, }, }, }, }; if (isDevelopment && config.plugins) { config.plugins.push(new webpack.HotModuleReplacementPlugin()); config.plugins.push( new ReactRefreshWebpackPlugin({ overlay: { useURLPolyfill: true, }, }), ); // config.plugins.push(new BundleAnalyzerPlugin({ analyzerMode: 'server', openAnalyzer: false })); } if (!isDevelopment && config.plugins) { config.plugins.push(new webpack.LoaderOptionsPlugin({ minimize: true })); // config.plugins.push(new BundleAnalyzerPlugin({ analyzerMode: 'static' })); } export default config; 코드 복붙하니까 코드가 이상하게 나와서 캡쳐본도 올립니다. (test: /\.tsx? 아래부분부터) [ App, index ]@page 하니까 에러떠서 ./로 했습니다. 이것때문에 계속 못하고 있는데 저에게 답을 알려주시면 감사하겠습니다...ㅠ.ㅜ
-
해결됨[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Section 26 RtcEngine initialize 에러(해결은 했습니다!)
채널 입장하고 권한 체크 후 앱이 꺼지고 Debug 콘솔에 아래 같은 로그가 뜨길래 한참 헤맸습니다.코드 한 줄씩 지워가며 어디서 에러가 뜨는지 확인해보니 await engine!.initialize(RtcEngineContext(appId: appId,)); 코드가 들어가는 순간 앱이 꺼지더라구요해당 부분을 집중해서 검색하다가 발견한 방법대로 RtcEngine 선언 부분에 late 를 넣어주니 앱이 꺼지지 않았습니다. 혹시 원인을 알 수 있을까요?에러 로그D/EGL_emulation( 2046): app_time_stats: avg=10745.24ms min=12.90ms max=31961.13ms count=3 D/nativeloader( 2046): Load /data/app/~~nTLNP9Bj_egzZU9DQGxSrQ==/com.example.video_call-LRfYUQJyccQppChea-IfMw==/lib/arm64/libAgoraRtcWrapper.so using ns clns-7 from class loader (caller=/data/app/~~nTLNP9Bj_egzZU9DQGxSrQ==/com.example.video_call-LRfYUQJyccQppChea-IfMw==/base.apk!classes2.dex): dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in "/data/app/~~nTLNP9Bj_egzZU9DQGxSrQ==/com.example.video_call-LRfYUQJyccQppChea-IfMw==/lib/arm64/libAgoraRtcWrapper.so" (new hash type from the future?) E/AndroidRuntime( 2046): FATAL EXCEPTION: main E/AndroidRuntime( 2046): Process: com.example.video_call, PID: 2046 E/AndroidRuntime( 2046): java.lang.UnsatisfiedLinkError: dlopen failed: empty/missing DT_HASH/DT_GNU_HASH in "/data/app/~~nTLNP9Bj_egzZU9DQGxSrQ==/com.example.video_call-LRfYUQJyccQppChea-IfMw==/lib/arm64/libAgoraRtcWrapper.so" (new hash type from the future?) E/AndroidRuntime( 2046): at java.lang.Runtime.loadLibrary0(Runtime.java:1081) E/AndroidRuntime( 2046): at java.lang.Runtime.loadLibrary0(Runtime.java:1003) E/AndroidRuntime( 2046): at java.lang.System.loadLibrary(System.java:1765) E/AndroidRuntime( 2046): at io.agora.agora_rtc_ng.AgoraRtcNgPlugin.onMethodCall(AgoraRtcNgPlugin.java:65) E/AndroidRuntime( 2046): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267) E/AndroidRuntime( 2046): at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292) E/AndroidRuntime( 2046): at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319) E/AndroidRuntime( 2046): at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) E/AndroidRuntime( 2046): at android.os.Handler.handleCallback(Handler.java:959) E/AndroidRuntime( 2046): at android.os.Handler.dispatchMessage(Handler.java:100) E/AndroidRuntime( 2046): at android.os.Looper.loopOnce(Looper.java:232) E/AndroidRuntime( 2046): at android.os.Looper.loop(Looper.java:317) E/AndroidRuntime( 2046): at android.app.ActivityThread.main(ActivityThread.java:8705) E/AndroidRuntime( 2046): at java.lang.reflect.Method.invoke(Native Method) E/AndroidRuntime( 2046): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:580) E/AndroidRuntime( 2046): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:886) I/Process ( 2046): Sending signal. PID: 2046 SIG: 9 Lost connection to device. the Dart compiler exited unexpectedly.해결했던 방법late RtcEngine? engine; //선언할 때 late 추가
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Web_view flutter 4.9.0을 설치후 에러
iOS 디바이스로 디버그 실행하면러 자꾸 위와같은 에러가 떠서 진행이 안되네요…왜 그럴까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
retrofit을 사용한 통신 시 content type 관련하여 문의
안녕하세요. 강의에 없는 내용이지만, 검색을 며칠 째 하고 있으나 해결방법을 못 찾아서 이렇게 문의드립니다. 양해부탁드립니다.. flutter에서 retrofit을 사용하여 multipartforamdata 형식의 api를 호출할 때, application/json으로 보내야 하는 객체는 content type을 어떻게 지정해주어야 하는 걸까요? springBoot와 flutter로 개발 진행 중이고, api와 flutter는 각각 아래와 같이 작성하였습니다.// api @PostMapping(path = "", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public void temp(@RequestPart TempReq, @RequestPart List<MultipartFile> files) { // 생략 } // flutter에서 api 호출부 @POST('') @MultiPart() Future<void> temp(@Part() TempReq req, @Part() List<MultipartFile> files);flutter에서 api 호출 시 content type 'application/octet-stream' not supported 에러가 발생합니다.postman이나 swagger로 테스트 했을 땐 정상적으로 동작하는 걸 보면 api 문제는 아닌듯합니다.flutter에서 호출할 때도 files는 잘 들어오는데, TempReq 객체를 받을 때가 문제인 듯합니다. @Part 안에 content type을 application/json으로 지정해보았는데도 동일한 에러가 발생합니다.
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
Align 과 Center 위젯 차이
비디오 플레이어 제작하실때비디오 위에 올라올 아이콘 정렬을 위해서 Align() 위젯을 사용하셨는데Center() 위젯도 똑같이 영상의 가운데로 정렬이 되던데 혹시 Align() 위젯을 사용하신 이유가 따로 있을까요?
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
[섹션11] 웹사이트 웹뷰에 띄우기 질문입니다.
안녕하세요 🙂 프로그래밍 초보이지만,플러터 강의 덕분에 즐겁게 공부하고 있습니다.아래 코드에서, https://blog.codefactory.ai 로 Uri를 연결했더니, 코드팩토리님 블로그로 잘 연결되는데요, final homeUrl = Uri.parse('https://blog.codefactory.ai'); class HomeScreen extends StatelessWidget { WebViewController controller = WebViewController()..loadRequest(homeUrl); HomeScreen({super.key}); 제가 처음에 오타로 https를 http로 입력했더니,오류가 발생하더라구요. 혹시 원인을 설명해주실 수 있나요?ㅜㅜ
-
해결됨기초부터 배우는 Next YTMusic 클론 코딩 (with next.js 14, UI 마스터)
깃 push가 안되서 ssh를 한참해메고 있습니다. ㅠㅠ
The authenticity of host 'github.com (20.200.245.247)' can't be established.ED25519 key fingerprint is SHA256:+DiY3wvvV위와같은 문구가 뜨고 안되네요. ㅠㅠ
-
미해결[2024 최신] [코드팩토리] [초급] Flutter 3.0 앱 개발 - 10개의 프로젝트로 오늘 초보 탈출!
pushNamedAndRemoveUntil 의 작동원리와 오류나는 이유가 궁금합니다.
안녕하세요! 강의 잘 듣고 있습니다. Q1.pushNamedAndRemoveUntil 의 작동순서? 원리가 제가 생각한게 맞는지 확신이 들지 않아서 여쭤봅니다.명명된 라우트가 푸시된다.라우트 스택 중 가장 최근부터 순차적으로 조건문에 따라 false가 반환되는 라우트는 스택에서 삭제된다.따라서 push됐던 라우트에서 pop을 하게 되면 라우트 스택에 남아있던 라우트로 이동한다.이게 맞나요? Q2.라우트 스택의 가장 최근부터 순차적으로 삭제되는게 맞다면RemoveUntil 이라는 이름을 보고 삭제되지 않는 페이지가 있다면 거기서 끝나는건가? 라는 생각에 HomeScreen이 아닌 route_one_screen이 삭제되지 않는 조건문을 작성했습니다. route.settings.name == '/'; 로 하셨던 것을route.settings.name == '/one' 으로 바꿔봤는데push됐던 route_three_screen이 pop되면 route_one_screen이 나올줄 알았는데그냥 검은 화면만 나옵니다.무엇이 문제였던 걸까요..?그리고 home_screen도 삭제가 되었을까요? import 'package:flutter/material.dart'; import 'package:navigation/layout/default_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 DefaultLayout( title: 'RouteTwoScreen', children: [ Text( arguments.toString(), textAlign: TextAlign.center, ), OutlinedButton( onPressed: () { Navigator.of(context).pop(); }, child: Text('Pop'), ), OutlinedButton( onPressed: () { Navigator.of(context).pushNamed( '/three', arguments: 111111, ); }, child: Text('Push Route Three'), ), OutlinedButton( onPressed: () { /// [HomeScreen, RouteOneScreen, RouteTwoScreen] /// push - [HomeScreen, RouteOneScreen, RouteTwoScreen, RouteThreeScreen] /// pushR - [HomeScreen, RouteOneScreen, RouteThreeScreen] Navigator.of(context).pushReplacement( MaterialPageRoute( builder: (BuildContext context) { return RouteThreeScreen(); }, settings: RouteSettings( arguments: 999, ), ), ); }, child: Text('Push Replacement'), ), OutlinedButton( onPressed: () { Navigator.of(context).pushReplacementNamed( '/three', arguments: 999, ); }, child: Text('Push Replacement Named'), ), OutlinedButton( onPressed: () { Navigator.of(context).pushNamedAndRemoveUntil( '/three', (route){ /// 만약에 삭제 할거면 (Route Stack) false 반환 /// 만약에 삭제를 안할거면 true 반환 return route.settings.name == '/one'; }, arguments: 999, ); }, child: Text('Push Named And Remove Until'), ), ], ); } }
주간 인기글
순위 정보를
불러오고 있어요