본문 바로가기

프로그래밍/Flutter <Dart>15

[Flutter] Incorrect use of ParentDataWidget 에러 해결 개요 ======== Exception caught by widgets library =======================================================The following assertion was thrown while applying parent data.:Incorrect use of ParentDataWidget.The ParentDataWidget Expanded(flex: 1) wants to apply ParentData of type FlexParentData to a RenderObject, which has been set up to accept ParentData of incompatible type ParentData.Usually, this me.. 2024. 9. 18.
[Flutter] flutter_inappwebview iOS 18 Ambiguous use of 'evaluateJavaScript(_:completionHandler)' 에러 해결 개요 flutter_inappwebview 플러그인을 사용하면서 iOS 18 을 타켓하는 프로젝트 빌드 시 발생할 수 있습니다. iOS 18 와 플러그인 간 호환성 문제입니다. 이를 해결해 보겠습니다. 해결위 에러 발생한 상태에서 문제를 해결해 보겠습니다. 함수명 evaluateJavaScript에 마우스를 올린 후 우클릭합니다. Jump to Definition 을 선택해 주세요. InAppWebView 를 선택해 주세요. InAppWebView 선택 시 아래와 같이 evaluateJavaScript 함수 원형으로 이동합니다.  아래와 같이 completionHandler 속성에 @MainActor 를 추가해 주세요.  저장 후 다시 빌드 시도해 보세요. flutter_inappwebview는 23년을.. 2024. 9. 18.
[Flutter] iOS 18 Type 'UIApplication' does not conform to protocol 'Launcher' 에러 해결 개요 XCode16을 사용하여 iOS 18 타겟하는 앱 빌드 시 발생할 수 있는 에러입니다.  Type 'UIApplication' does not conform to protocol 'Launcher'Candidate has non-matching type '(URL, [UIApplication.OpenExternalURLOptionsKey : Any], (@MainActor @Sendable (Bool) -> Void)?) -> Void' (UIKit.UIApplication) 해결 방법 이 문제는 6.3.0 이하 버전 url_launcher_ios 플러그인과 iOS 18이 호환되지 않아 발생하는 문제입니다. 아래 명령어를 통해 url_launcher_ios 플러그인을 6.3.1 버전 이상으로 업그레.. 2024. 9. 18.
[Flutter] 자주 사용하는 SnackBar Flutter 코드 템플릿 개요Flutter SnackBar 위젯을 사용할 때 작성하는 코드 템플릿입니다. 이전에 다른 SnackBar 가 있다면 지우고 팝업됩니다.  코드 템플릿 ScaffoldMessenger.of(context) ..removeCurrentSnackBar() ..showSnackBar(SnackBar( content: Text("새로운 비밀번호를 입력하세요."), )); 참고 자료  Display a snackbarHow to implement a snackbar to display messages.docs.flutter.dev 2024. 8. 20.
[Flutter] Flutter에서 "000-0000-0000" 형식으로 자동 하이픈(-) 추가되는 TextFormField 만들기 개요 플러터 앱에서 전화번호 입력 시 하이픈이 자동으로 추가되는 Formatter를 적용해 보겠습니다.  Formatter 생성 class HyphenFormatter extends TextInputFormatter { @override TextEditingValue formatEditUpdate( TextEditingValue oldValue, TextEditingValue newValue, ) { if (newValue.text.length > 12) { return oldValue; } final newText = StringBuffer(); for (int i = 0; i  Controller 선언 final TextEditingControll.. 2024. 8. 19.
[flutter] linearGradient opacity 조절하여 일부 투명하게 만들기 개요 플러터 개발 시 LinearGradient 위젯을 사용하는 예제, 반투명하게 사용하는 예제 코드입니다. 소스 코드 Container( height: 200, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Alignment.bottomCenter, colors: [ ColorStyle.black, ColorStyle.white, ])), ), 아래와 같이 일부를 투명하게 만들 수도 있습니다. Container( height: 200, decoration: BoxDecoration( gradient: LinearGradient( begin: Alignment.topCenter, end: Align.. 2024. 1. 15.
[flutter] BuildContext 그리고 ScaffoldState.of() 에 대한 이해 BuildContext 위젯 트리 내 위젯의 위치 정보를 가지는 클래스입니다. StatelessWidget.build 또는 State 객체(주로 StatefulWidget과 같이 활용되는)에서 사용가능한 메소드들을 제공합니다. StatelessWidget.build 아래 코드와 같이 StatelessWidget.build 메소드를 사용였습니다. build 메소드 하위 블록 {} 에서 context 를 이용한 작업 수행이 가능합니다. import 'package:flutter/material.dart'; void main() => runApp(const ExampleApp()); class ExampleApp extends StatelessWidget { const ExampleApp({super.key}.. 2024. 1. 6.
[flutter] android minSdkVersion 변경하기 (flutter sdk 3.13) 또 달라졌습니다... 버전 변경 프로젝트에 사용하는 flutter sdk 디렉토리/packages/flutter_tools/gradle/src/main/groovy/flutter.groovy 에 있습니다. /** * For apps only. Provides the flutter extension used in app/build.gradle. * * The versions specified here should match the values in * packages/flutter_tools/lib/src/android/gradle_utils.dart, so when bumping, * make sure to update the versions specified there. * * Learn more ab.. 2024. 1. 3.
[Flutter] URI.https type 'int' is not a subtype of type 'Iterable<dynamic>' 에러 해결 문제 상황 URI.https 인스턴스의 속성을 정의할 때, 파라미터 value 값에 int 자료형이 들어가는 경우 발생할 수 있습니다. ▶ #0 예제 코드 int number = 3; final Uri uri = Uri.https(APU_AUTHORITY, API_PATH, { "number": number, "count": 1, }); 해결 방안 파라미터 내 모든 value 를 String 자료형으로 만들어 줍니다. ▶ #1 수정된 예제 코드 int number = 3; final Uri uri = Uri.https(APU_AUTHORITY, API_PATH, { "number": number.toString(), "count": "1", }); 원인 Uri.https의 원형은 아래와 같습니다. 팩토리.. 2023. 12. 17.
[Flutter] bottomNavigationBar svg 커스텀 아이콘 selectedIconTheme 적용하기 개요 bottomNavigationBar 객체 속성 중 selectedIconTheme를 선언하여 선택된 아이콘에 대한 색상 등을 설정할 수 있습니다. 그러나 이는 플러터 Icon 객체에 한해서 적용됩니다. 만약 svg 파일을 아이콘으로 사용하고 있는 경우 적용되지 않습니다. svg 파일을 사용하여 커스텀 아이콘이 selectedIconTheme 설정에 적용되기 위한 방법을 안내합니다. svg 파일 변경 아래 사이트에서 svg파일을 업로드하여 아이콘 형식에 적합한 형태로 만들어 줍니다. FlutterIcon - Flutter custom icons generator This site will not work if cookies are completely disabled. {"assets_hash":"e6.. 2023. 12. 16.
[Dart] Effective Dart 스타일 가이드 요약 개요 공식 문서에서 각 변수, 파일에 대한 명명 가이드 제공. 크게 3가지 스타일로 나뉩니다. UpperCamelCase : 각 단어 첫 문자 대문자 lowerCamelCase : 첫 단어 모두 소문자, 나머지 단어 첫 문자 대문자 lowercase_with_underscores : 모두 소문자, _ 사용 UpperCamelCase 클래스 class SliderMenu; 익스텐션 extension ExamlpeExtension 사용자 정의 타입 typedef CustomTypeA lowerCamelCase 기타 변수명 및 constant 변수 userName lowercase_with_underscores 디렉토리 명 screen_user 파일 명 (dart 파일 뿐만 아니라, 이미지 등 정적 리소스 파.. 2023. 10. 12.
[Flutter] Provider 아키텍처 라이브러리에 대한 이해 개요 Provider는 플러터 전역 상태 관리를 위한 아키텍처 라이브러리 중 하나입니다. 플러터 생태계에서 아키텍처를 라이브러리 형태로 만들어 사용하는 게 일반적 Provider는 인기있는 아키텍처 라이브러리 중 하나로, ChangeNotifier ChangeNotifierProvider Consumer 세 가지 개념을 사용 ChangeNotifier 상태 변화에 대한 알림을 제공하는 클래스 특정 클래스가 ChangeNotifier 클래스이면 NotifyListener를 통해 외부에서 특정 클래스의 상태 변화에 대해 인지 이를 활용해서 유닛 테스팅 또한 쉽게 가능 class CartModel extends ChangeNotifier { List _items = []; void add(Item item) .. 2023. 10. 11.