크로스 플랫폼/Flutter <Dart> 10

[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..

[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}..

[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..

[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의 원형은 아래와 같습니다. 팩토리..

[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..

[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 파일 뿐만 아니라, 이미지 등 정적 리소스 파..

[Flutter] Provider 아키텍처 라이브러리에 대한 이해

개요 Provider는 플러터 전역 상태 관리를 위한 아키텍처 라이브러리 중 하나입니다. 플러터 생태계에서 아키텍처를 라이브러리 형태로 만들어 사용하는 게 일반적 Provider는 인기있는 아키텍처 라이브러리 중 하나로, ChangeNotifier ChangeNotifierProvider Consumer 세 가지 개념을 사용 ChangeNotifier 상태 변화에 대한 알림을 제공하는 클래스 특정 클래스가 ChangeNotifier 클래스이면 NotifyListener를 통해 외부에서 특정 클래스의 상태 변화에 대해 인지 이를 활용해서 유닛 테스팅 또한 쉽게 가능 class CartModel extends ChangeNotifier { List _items = []; void add(Item item) ..

[Dart] Dynamic Type에 대한 이해

개요 Dart언어에서 Type annotation은 필수가 아닌 선택 따라서 Type annotation 을 명시하지 않았을 경우 (== var 으로 변수를 선언한 경우), 기계는 맥락을 파악하여 자료형을 추론 기계는 추론에 실패한 변수에 대해선 'dynamic' 자료형으로 지정 사용 예 dynamic 변수를 선언하는 예제입니다. dynamic은 다른 자료형이 될 수 있는 타입입니다. void main(){ dynamic isThisString = 'hi'; isThisString = 1; if(isThisString is int){ print("Not a String"); } } // 결과 : Not a String 위의 특성을 가지기에 Nullable으로 선언하는 것은 의미가 없습니다. dynamic..

[Flutter] 오래된 플러터 프로젝트 수정 시 발생할 수 있는 에러

추가적인 에러가 있는 경우 계속 업데이트하겠습니다. Unsound null safety 라이브러리 Dart언어의 null safety 공식 지원이 시작된 지 얼마 되지 않았습니다. 이전 버전의 Dart로 작성된 라이브러리를 사용중인 경우 발생할 수 있는 에러입니다. 플러터 프로젝트 구동 시 아래와 같이 --no-sound-null-safety 옵션을 추가해주세요. flutter run --no-sound-null-safety permission_handler 관련 에러 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':permission_handler:compileDebugJavaWithJavac'..

[Flutter] MacOS M1 실리콘에 플러터 개발 환경 설정하기

전제 이 글은 다음과 같은 전제 하에 플러터 설치를 진행합니다. 설치 환경은 실리콘 아키텍처 및 최신 MacOS 버전 xcode가 설치되어 있음, iOS 에뮬레이터가 하나 이상 설치되어 있음 로세타 번역이 가능하도록 적용되어 있음 Android studio, android SDK 설치 완료 Intellij IDE가 설치되어 있음 플러터 다운로드 및 설정 [ zip 파일 다운로드 ] 안내사항에 따라 플러터 압축 파일을 다운받습니다. 저는 m1 맥을 사용중이므로 오른쪽 압축 파일을 다운받았습니다. [ zip 파일 압축 해제 ] 플러터 압축 파일을 희망하는 디렉토리에 이동시킨 후 터미널을 열어 압축 파일을 풀어주세요. 저는 Desktop/flutterdev 디렉토리 내 압축 파일을 이동했습니다. cd Desk..