전체 글

전체 글

    플러터 (Flutter) 의 initializeDateFormatting() 메서드의 역할과 사용법

    initializeDateFormatting() 메서드란? 날짜/시간 서식 지정 등 국제화 및 로컬라이제이션에 사용되는 intl 패키지에서 제공하는 메서드다. Locale 에 따른 날짜와 시간에 대한 포맷팅을 세팅하는 역할을 한다. 어떻게 동작하는가? 날짜 서식 지정 메서드를 호출하기 전에 적어도 하나의 Locale 에 대해 이 함수를 호출해야 한다. 지정한 Locale 에 따라 날짜 서식 패턴을 초기화한다. 지정하지 않으면, 장치의 기본 Locale 을 사용한다. 지정된 Locale 규칙에 따라 날짜 및 시간 서식을 지정하는데 필요한 데이터를 로드한다. 월, 요일, 일반적인 시간 및 날짜 형식이 포함된다. 주석에 아래와 같이 써져있다. This should be called for at least on..

    플러터(Flutter) 의 WidgetsFlutterBinding.ensureInitializing() 이란?

    WidgetsFlutterBinding.ensureInitialized() 란? 앱을 실행하기 전에 프레임워크의 초기화를 처리하는 메서드다. 역할 플러터 프레임워크 초기화 프레임워크와 Flutter 엔진을 연결하는 역할을 한다. 프레임워크로부터 엔진과의 바인딩을 초기화하는데, 이는 프레임워크의 다양한 기능을 위해 필수적인 절차이다. 엔진과의 바인딩 바인딩 프로세스에는 Dart 코드와 기본 플랫폼별 코드 간의 통신 채널을 설정하여 UI 그리기, 이벤트 처리 및 기타 필수 기능을 활성화하는 작업이 포함된다. 싱글톤 패턴 구현 ensureInitialized() 는 앱의 수명 주기 동안 WidgetsFlutterBinding 인스턴스가 한 번만 생성되고 초기화되도록 한다. 동작 방식 바인딩 여부 확인 바인딩이..

    안드로이드 스튜디오 에뮬레이터 인식 안됨 (Device emulator-5554 is offline) 문제 해결

    증상 Flutter 앱을 실행시키려 했는데, 에뮬레이터가 켜져있음에도 에뮬레이터를 인식하지 못했다. 윈도우즈 CMD 를 열어 flutter doctor 명령어를 치니 Connected device (3 available) 아래에 'Device emulator-5554 is offline.' 이라는 메세지가 보였다. 해결 에뮬레이터와 안드로이드 스튜디오를 껐다가 다시 켰다. Device Manager 탭의 에뮬레이터 Actions 에서 Wipe data 를 실행했다. 작업이 완료된 후에 에뮬레이터를 다시 켜니 정상적으로 연결됐다. flutter doctor 에서 이제는 에뮬레이터 오프라인 메세지가 보이지 않는다. 레퍼런스 https://coding-dahee.tistory.com/199 그래..

    자바 레코드 (Record) 란 무엇일까?

    자바의 Record 란? 자바 17 에서 Stable 이 된 데이터 클래스다. 클래스 정의 시에 보일러 플레이트 코드를 줄이기 위해 탄생했다. 기능 불변 (final 처리) 클래스와 모든 필드가 final 처리 된다. 한번 생성하면 record 의 상태는 바뀌지 않는다. 간결한 메서드 자동 생성 getter, equals(), hashCode(), toString() 메서드를 자동으로 생성한다. 생성자 자동 생성 모든 필드를 매개변수로 사용하는 생성자를 자동으로 생성해준다. 예제 아래 코드는 1줄이지만, 클래스와 모든 필드가 final 처리되어 있다. 매개변수에 있는 field1 과 field2 가 필드가 된다. getter, equals(), hashCode(), toString() 메서드도 생성된 상..

    플러터 (Flutter) A value of type 'Null' can't be assigned to parameter of type 'double' in a const constructor 에러

    A value of type 'Null' can't be assigned to parameter of type 'double' in a const constructor 에러 원인 const 로 지정된 위젯에 null 이 될 수 있는 값을 넣어서 그렇다. const 에는 정해진 상수만 넣어야 한다. 에러 해결 위젯 앞의 const 를 지우면 된다. padding: const EdgeInsets.only(left: 8, right: 8, top: 8, bottom: bottomInset), padding: EdgeInsets.only(left: 8, right: 8, top: 8, bottom: bottomInset),

    플러터(Flutter) 의 MediaQuery 클래스란?

    플러터의 MediaQuery 클래스란? 화면 크기 등 디바이스 미디어에 대한 정보를 제공한다. 제공하는 것들 장치 정보: 디바이스의 픽셀 비율, 밝기, 방향 등 현재 미디어의 크기에 대한 데이터를 제공한다. 접근성 (Accessibility): 사용자가 커스텀하게 설정한 접근성에 대한 정보를 제공한다. 안전 영역 (Safe Area): 화면 노치나 둥근 모서리 등에 가려지는 부분에 대한 데이터를 제공한다. 성능 주의사항 깊은 위젯 트리에서 과도하게 사용하면 성능 문제가 발생할 수 있다. 위젯 트리의 맨 위에서 사용하는 것이 좋다. 용례 키보드 영역 높이 가져오기 화면 사이즈 측정 반응형 패딩 방향별 레이아웃 안전 영역 계산 공식 문서 MediaQuery class 예제 코드들 화면 사이즈 측정 @over..

    플러터(Flutter) proxy_box.dart Failed assertions: 'hasSize': is not true. 에러 해결하기

    에러 내용 'package:flutter/src/rendering/proxy_box.dart': Failed assertion: line 1971 pos 12: 'hasSize': is not true.원인 계산할 수 없는 Intirinsic 사이즈가 존재할 때 발생한다. Intrinsic 사이즈란? 간단하게 위젯이 컨텐츠를 넘치지 않게 렌더링하는데 필요한 최소 높이와 너비를 말한다. 보통 자식의 너비의 총 합이다. 이를테면 자식 너비나 높이가 디바이스 크기를 초과하는데 스크롤이 없다면? 위와 같은 에러가 나온다. 혹은 너비나 높이가 무한대인 자식이 2개가 있다면 나온다. 해결 방법 Column 이나 Row 위젯에 가로나 세로 사이즈를 이미 꽉채운 상태에서 더 채우지는 않았나..

    플러터(Flutter) 의 IntrinsicHeight 와 IntrinsicWidth 위젯이란?

    IntrinsicHeight 와 IntrinsicWidth 란? Intrinsic 이란? 사전적 정의로는 '고유의' 라는 뜻 Flutter 가 말하는 Intrinsic 이란? 위젯이 콘텐츠를 넘치지 않게 렌더링하는데 필요한 최소 높이와 너비를 말함 장점 IntrinsicHeight 위젯으로 자식을 감싸면, 따로 계산할 필요 없이 자식의 최대 높이로 위젯이 설정된다. 단점 IntrinsicHeight, IntrinsicWidth 는 내부적으로 자식 위젯의 고유 사이즈를 측정하는 것이므로 성능 문제가 발생할 수 있음 플러터 공식문서에 따르면 O(n^2) 의 복잡도까지 가능하다고 함 공식문서 Intrinsic class

    플러터(Flutter) 의 RefreshIndicator 란?

    RefreshIndicator 리스트에서 스크롤을 위로 쭉 올리거나 밑으로 쭉 내린 다음에 새로고침 되게 만들 수 있는 위젯 보통 내부에 있는 onRefresh 속성의 콜백함수에서 Future 를 반환하여 데이터를 새로고침한다. 단, Future 를 반환하고, 콜백 함수 내부에서 setState() 를 호출하는 방식도 가능하다. 다양한 속성으로 로딩될 때 사용되는 spinner 의 스타일을 조정할 수 있다. 스타일엔 edgeOffset(시작 위치), displacement(위치), strokeWidth, color, backgroundColor 등이 있다. 예제 코드 class _HomeScreenState extends State { @override Widget build(BuildContext co..

    플러터(Flutter) 의 FutureBuilder 란?

    FutureBuilder 란? Future 와의 상호작용의 가장 최신 스냅샷을 기반으로 스스로 빌드되는 위젯 UI 에서 비동기 연산을 처리하는데 주로 사용됨 개념 비동기 연산(Asynchronous Operation): 잠재적으로 값이나 에러가 될 수 있는 Future 와 함께 동작하도록 설계됐다. 네트워크 요청이나 DB 쿼리와 같은 비동기 작업에 사용된다. 상태 관리: Future 의 상태는 not started, in progress, completed with data, completed with error 가 있는데 이에 따라 UI 를 재구성하여 비동기 작업의 상태관리를 처리한다. 주요 속성 Future: 이 빌더가 연결된 Future 이다.데이터의 소스이고 빌더는 UI 를 빌드하기 위해 이 데이..

    플러터(Flutter) 의 컨트롤러 (Controller) 란?

    플러터에서 Controller (컨트롤러) 란? UI 컴포넌트의 상태와 동작을 관리할 때 자주 사용되는 개념 UI 요소와 기본 로직 혹은 데이터 사이의 중개자 역할을 한다. 역할 및 기능 상태 관리: 하나 혹은 여러개의 위젯의 상태를 관리한다. 데이터를 보관하고 UI 가 현재 상태를 반영하는지 확인한다. 사용자 입력 처리: 텍스트 필드의 텍스트나 슬라이더 값과 같은 사용자 입력을 처리한다. 데이터 바인딩: UI 와 데이터 모델 간의 동기화를 가능하게 한다. 컨트롤러 유형 텍스트 편집 컨트롤러: 텍스트 필드의 콘텐츠를 관리하는데 사용, 변경사항 추적, 필드에 표시되는 텍스트 제어 애니메이션 컨트롤러: 애니메이션 시퀀스를 관리, 타이밍과 진행을 제어 스크롤 컨트롤러: 스크롤 가능한 위젯의 위치를 모니터링하고..

    Flutter Dio 라이브러리란?

    Dio 라이브러리란? Flutter 프레임워크 환경에서 HTTP 요청을 할 때 유용하게 쓰이는 라이브러리이다. 웹에서 쓰는 범용 Fetch 라이브러리들과 비슷한 기능을 제공한다. Global configuration Interceptors FormData Request cancellation File uploading/downloading Timeout Custom adapters Transformer 기본 사용법 import 'package:dio/dio.dart'; final dio = Dio(); void request() async { Response response; response = await dio.get('/test?id=12&name=dio'); print(..

반응형