[Flutter] BottomNavigationBar 배경색 변경

BottomNavigationBar 배경색 변경 기본적으로 플러터 bottomNavigationBar에는 backgroundColor 옵션이 있기 때문에 해당 속성으로 배경색을 변경할 수 있다. 위 그림과 같이 backgroundColor를 white로 지정하면 bottomNavigationBar 배경색이 흰색이 된다. backgroundColor 옵션으로 배경색이 변경되지 않는 경우 backgroundColor옵션으로 배경색이 변경되지 않는 경우에는 type옵션이 BottomNavigationBarType.shifting으로 되어있는지 확인한다. 만약 type이 shifting이면 배경색이 변경되지 않는다. fixed를 사용해야한다.

[Python] command not found: pip 오류

맥에서 파이썬 pip 오류 파이썬에서 라이브러리를 설치하기 위해서는 pip를 이용해야하는데, 터미널에서 pip로 인스톨시 아래 오류가 발생했다. $ pip install requests >> command not found: pip 해결 방법 비교적 간단한 문제인데, pip 대신 pip3를 이용했더니 해결되었다. $ pip3 install requests

[C, C++] hex to int와 c++에서 hex 출력

C의 printf로 hex값을 int로 출력 C에서 헥사값(hex)를 정수(int)로 print하는건 매우 간단하다. 일반적으로 printf에서 정수를 출력하기 위해 사용하는 출력문자를 %d 대신 %x로 사용하면 된다. C++의 cout에서도 출력될까? C++의 iostream에는 출력함수로 cout을 제공한다. 그런데 cout에서 0x78을 그대로 출력하면 정상적으로 출력되지 않는다. Hex to Int hex값을 그대로 cout으로 출력하면 정상적이지 않지만 static_cast로 타입캐스팅을 하면 정상적으로 출력할 수 있다. … Read more

[C, C++] Hex값 두개 합치기(비트연산)

왜 Hex두개를 합쳐야 할까 하나의 패킷에 자료 1~5까지의 데이터가 담겨서 통신을 해야한다. 이때 자료 4는 16비트가 필요하고 나머지는 8비트만 있어도 충분하다. 이런경우 자료 4를 8비트 두개로 쪼개서 보내는 경우가 있다. 쪼개는 방법이야 다양하겠지만 자료4의 값이 0x1234라면 0x12와 0x34로 쪼개서 보내는 경우가 경험상 많았다. 그래서 자료를 받는 쪽에서는 0x12와 0x34를 다시 0x1234로 만들어야 한다. Hex 두개 … Read more

[Flutter] 플러터 텍스트 고정폭 폰트로 변경

일반 폰트와 고정폭 폰트 일반 폰트 일반폰트에서는 각 문자가 모드 다른 폭(Width)를 가진다. 위 그림과 같이 숫자 1의 폭이 숫자 2의 폭에 비해 절반도 되지 않는것을 볼 수 있다. 그래서 아래와 같은 문제가 발생할 수 있다. 글자의 폭이 다 다르기 때문에 시계와 같이 빠르게 변하는 글자들은 폭이 계속 달라지는게 눈에 보인다. 눈 아파요. 고정폭 폰트(Monospace … Read more

[Flutter, IOS] 플러터 Using the Impeller rendering backend 오류

Using the Impeller rendering backend 오류 플러터로 개발 중이며 안드로이드 에뮬레이터에서는 정상 실행되던 소스코드가 IOS 시뮬레이터에서 실행하자 발생한 오류다. 이 오류를 만나면 앱이 실행도 못하고 종료된다. [VERBOSE-2:FlutterDarwinContextMetalImpeller.mm(37)] Using the Impeller rendering backend. 오류 원인 원인은 애드몹이다. 안드로이드를 개발하면서 애드몹 관련 코드들이 들어간 상태에서, info.plist에 애드몹 앱 ID를 추가하지 않으면 발생한다. info.plist에 애드몹 ID 추가 아래 … Read more

[IOS] Communication with Apple failed 오류

Automatically manage signing 오류 애플 IOS를 배포할 때 엑스코드에서 프로비저닝 프로파일(Provisioning Profile)을 입력해야 하는데, 요즘은 Automatically manage signing을 체크하면 애플에서 알아서 만들어준다. 그런데 Automatically manage signing를 체크하고 Team을 선택했더니 아래와 같이 오류가 발생했다. Communication with Apple failed Your team has no devices from which to generate a provisioning profile. Connect a device to use or … Read more

[Flutter] didChangeDependencies 현재 스크린에서만 호출

didChangeDependencies() didChangeDependencies는 플러터의 생명주기와 관련된 함수 중 하나로, initState와 마찬가지로 위젯을 생성할 때 호출하지만 initState와 다르게 의존성이 있는 위젯이 변경될 때마다 호출된다..고 한다. 플러터 State를 잘 몰라서 자세한것 까진 모르겠다. Admob의 적응형 배너에 사용되는 didChangeDependencies 평생 몰랐을거같은 didChangeDependencies()가 애드몹 적응형 배너의 예시코드에 있어서 사용이 필요했다. https://developers.google.com/admob/flutter/banner/anchored-adaptive?hl=ko _loadAd() 메서드를 initState에 넣지 않고 didChangeDependencies에서 호출한 이유는 다른배너와 … Read more

[Flutter] 플러터 맥에서 환경변수 설정

플러터 맥 환경변수 설정 아래 플러터 공식문서의 Update your path 항목을 기반으로 작성한 글이다. Update your path는 재부팅해도 환경변수가 등록되도록 영구적으로 설정하는 방법이다. 참고 플러터 공식문서 https://docs.flutter.dev/get-started/install/macos#update-your-path

[C++] Vector의 원소를 출력하는 세가지 방법

Iterator로 Vector 원소 출력 컨테이너의 원소를 참조하는 Iterator를 이용하여 벡터의 원소를 출력할 수 있다. Random Access로 Vector 원소 출력 리스트와 차별되는 벡터의 가장 큰 장점인 Random Access를 이용하여 벡터의 원소를 출력할 수 있다. Range based for loop로 Vector 원소 출력 Range based for loop로 간편하게 벡터의 원소를 출력할 수 있다.