Programing/Flutter
-
[youtube_player] 어떤 영상은 재생 되는데 어떤 영상은 안되는 경우 (id에 하이푼'-' 있는 경우)Programing/Flutter 2025. 1. 16. 23:17
토이 프로젝트에서 유튜브 영상을 재생해야 했습니다.https://pub.dev/packages/youtube_player_iframe 을 사용했는데, 테스트 결과어떤 영상은 잘 작동하고, 어떤 영상은 재생이 안된다는 것을 발견했습니다. 액세스 할 수 없다길래 이리보고 저리보고 하다가 결국 원인을 유추할 수 있었습니다.재생이 안되는 영상들의 videoID에 하이픈( - , hypen) 문자가 섞여있을 경우에만 에러가 발생하는 것이였습니다. 예)정상재생: 27oH5yGybTc, BAZkzgnJQYA, TlRgW8cD1o8재생에러: vHq-9GQhibA, -bBzIgIaPS4 그리고 다행히 깃허브 이슈에서 해결방법들을 찾을 수 있었습니다.https://github.com/sarbagyastha/youtube..
-
[Flutter] A problem occurred configuring project > Namespace not specified. (오래된 패키지 namespace 오류 해결)Programing/Flutter 2024. 10. 19. 21:16
새 프로젝트를 시작하고 auto_start_flutter를 추가하려는데 아래와 같이 에러가 발생했습니다.더보기FAILURE: Build failed with an exception. * What went wrong: A problem occurred configuring project ':auto_start_flutter'. > Could not create an instance of type cohttp://m.android.build.api.variant.impl.LibraryVariantBuilderImpl. > Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/to..
-
[Riverpod] Unhandled Exception: Tried to modify a provider while the widget tree was building.Programing/Flutter 2024. 6. 9. 21:52
어떤 화면에 로딩 인디케이터(loading indicator - 작업 완료될 때 까지 뱅글뱅글)를 넣어놨는데,작업이 완료되기 전에 해당 화면에서 빠져나갈 경우, 다시 그 화면으로 들어갔을 때무한정 뱅글뱅글 돌아가는 에러가 있음을 확인했습니다. 그래서 그 화면에 들어가자마자 indicator.status = false로 설정해두면 되겠지... 하면서 다음과 같이 코드를 작성했습니다.import 'package:flutter/material.dart';import 'package:flutter_riverpod/flutter_riverpod.dart';import 'package:projects/common/w_loading_indicator.dart';class ChatScreen extends Consum..
-
[Flutter] HandshakeException: Handshake error in client (OS Error: CERTIFICATE_VERIFY_FAILED)Programing/Flutter 2024. 5. 19. 00:51
앱에서 서버로 request를 보내는 과정에서 다음과 같은 에러가 발생했습니다. 원인은 요청한 서버의 인증서(CA)가 공인된 인증서가 아니기 때문입니다. 권장할 수 없는 방법이긴 하지만, 우회/무시 할 수 있는 방법은 있습니다. 방법참조: https://stackoverflow.com/questions/54928080/flutter-https-handshake-error-in-client-os-error-certificate-verify-failed-ok 1. main.dart에 새로운 MyHttpOverrides class 추가// ...class MyHttpOverrides extends HttpOverrides{ @override HttpClient createHttpClient(Securi..
-
[Flutter] (google admob) java.lang.NoSuchMethodError: No virtual method setRequestAgent(Ljava/lang/String;)Lcom/google/android/gms/ads/AdRequest$Builder;Programing/Flutter 2024. 5. 13. 01:27
토이프로젝트 앱에 구글 애드몹을 붙였더니배너광고 위젯을 표시하는 화면에서 다음과 같은 에러가 발생했습니다. 원인파악구글 Ads 공식문서를 보고 그대로 따라했었는데,안드로이드 build.gradle 설정 과정에서 google_mobile_ads 패키지와 버전 불일치가 있었기 때문에 발생한 문제인 것으로 보입니다. 패키지 간 충돌문제로 google_mobile_ads 패키지를 4.0.0으로 사용하고 있었는데 그 때문인 것 같습니다. 패키지 버전을 올릴 수는 없으므로 dependency를 변경해줍시다. dependency 수정android/app/src/build.gradledependencies { // 아래의 한줄 추가 or 버전 변경 implementation 'com.google.an..
-
[Flutter] 검색창(SearchBar) 위젯 활용 예시Programing/Flutter 2024. 1. 21. 16:54
검색창은 많은 어플에서 사용하는 요소인 만큼, 플러터에서는 검색창 위젯을 기본으로 제공하고 있습니다. (Flutter 공식문서) 그런데 사용하려고 보면 parameter가 매우 많습니다. 최소단위부터 하나씩 확인 해봅시다. 시작 body에 넣고 Padding으로 감싼 뒤 시작하겠습니다. import 'package:flutter/material.dart'; class TestScreen extends StatelessWidget { const TestScreen({super.key}); @override Widget build(BuildContext context) { final ThemeData themeData = ThemeData(useMaterial3: true); return MaterialAp..
-
[Flutter] kotlin 버전 충돌 에러 해결 (Exception: Gradle task assembleDebug failed with exit code 1, Duplicate class kotlin.collections.jdk8)Programing/Flutter 2023. 11. 4. 19:52
잘 돌아가던 flutter 앱에 기능을 추가하려고 패키지를 새로 설치했더니 아래와 같은 에러가 발생했습니다. Launching lib\main.dart on sdk gphone64 x86 64 in debug mode... Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:checkDebugDuplicateClasses'. > A failure occurred while executing com.a..
-
[Flutter] IconButton 위젯 배경색을 커스터마이징 하는 방법 4가지Programing/Flutter 2023. 5. 3. 02:48
기본 IconButton 사용 class MyApp extends StatelessWidget { const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Scaffold( body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ const Text('배경색 적용하기 전', textAlign: TextAlign.cen..