
[Flutter] FlutterBluetoothSerial로 블루투스 끄기가 작동 안하는 이유
2025. 6. 13. 11:46
APP/Dart & Flutter
https://pub.dev/packages/flutter_bluetooth_serial flutter_bluetooth_serial | Flutter packageA basic Flutter Bluetooth Serial librarypub.dev FlutterBluetoothSerial 패키지를 활용해서 블루투스 끄기/켜기 제어하는 기능을 넣었는데,await FlutterBluetoothSerial.instance.requestDisable(); 이렇게 끄는 기능에 한해서만 제대로 작동이 안됨. 해당 패키지가 업데이트가 마지막으로 된 것도 3년전이기도한데, 이유를 찾아보니 안드로이드의 보안 정책상 안드로이드 11 이상부터는 끄기에 대한 기능 제한을 두게 됐다고 함.git issue를 봐도 나와있음h..

[Flutter] 앱에서 리뷰 요청 & app store/play store로 이동시키기 (feat.inAppReview)
2024. 10. 14. 17:52
APP/Dart & Flutter
https://github.com/britannio/in_app_review GitHub - britannio/in_app_review: A Flutter plugin for showing the In-App Review/System Rating pop up on Android, IOS, and MacOSA Flutter plugin for showing the In-App Review/System Rating pop up on Android, IOS, and MacOS. It makes it easy for users to rate your app. - britannio/in_app_reviewgithub.com 사용법in app review 패키지를 활용해서 앱 내에서 팝업창을 띄워 리뷰를 요청하는 ..

[Flutter] cocoapods 여러 버전을 전환하여 사용하기
2024. 9. 23. 11:05
APP/Dart & Flutter
여러개의 프로젝트를 관리하다보니 flutter sdk를 전환하여 사용하려고했는데, 그렇게하니 cocoapods 버전이 또 걸려서 이것도 버전을 전환하여 사용하도록 했다. cocoapods 버전별 설치하기sudo gem install cocoapods -v 1.13.0 설치한 버전 확인하기gem list --local | grep cocoapodscocoapods-core하고 괄호에 나오는 버전들이 설치된 cocoapods 버전들이다.나는 현재 1.15.2, 1.13.0, 1.11.2 3개가 설치되어있다. gem env 확인하기gem으로 설치한 cocoapods의 경로가 제대로 설정되어있지 않은 사람만 진행 gem env명령어를 통해 GEM PATHS: 로 설정된 경로들을 확인한다. 설정이 안되어있다..

[Flutter] Key 개념 | Key의 종류
2023. 12. 25. 22:04
APP/Dart & Flutter
key란? Key는 위젯 트리에서 위젯이 움직일 때마다 현재 상태를 보존하는 역할을 한다. key는 주로 Element가 Widget을 식별하는 데 사용되며, 대부분의 경우 key를 신경 쓸 필요가 없지만 상태를 유지하고 있는 같은 종류의 위젯을 컬렉션에 더하거나, 제거하거나, 정렬할 때 key가 필요하다. Key를 활용하려면 위젯 트리에 대한 이해가 필요하다. Widget 트리가 빌드되면 그 뒤에 Element트리가 생성되는데, Widget 트리가 재구성되면 Widget 자체는 폐기 및 재구성되며 Element는 기본적으로 재사용된다. 그리고 Element가 재사용될 때 새로 재구성된 Widget를 참조하게 된다. 위젯 트리가 변경되었는지 여부는 다음과 같은 순서로 판단하며, 변경되었을 시에 화면을 d..

[Flutter] Future & Asynchronous 개념 정리
2023. 5. 14. 18:22
APP/Dart & Flutter
Future란? Future는 미래의 값(비동기 처리되어야 할 값)을 의미한다. Future는 Future 형태로 제네릭을 사용한다.(미래에 받을 값의 타입을 지정해 주는 것!) 동기 (synchronous) 요청을 보내고 응답이 오면 그 다음 동작을 처리하는 방식 비동기(asynchronous) 요청을 보낸 후 응답이 없어도 다음 동작을 실행하는 방식 비동기 프로그래밍이 필요한 이유 Dart 언어는 프로그램 하나당 스레드 하나를 사용하는데 파이프 안에 실행 작업 하나가 들어가는 형태로 생각해 본다. 파이프 입구로 하나의 작업이 들어가고 끝으로 나올 때까지 소요되는 시간이 있는데 파이프에 들어간 작업마다 완료되는 작업 시간이 다 다르다. 오래 걸리는 작업이 진행 중일 때는 파이프가 막혀서 빨리 완료될 수..

[flutter] null & nullable & non-nullable (feat.??연산자)
2023. 4. 6. 22:43
APP/Dart & Flutter
null - 아무런 값도 없다. nullable - null이 될 수 있다. non-nuullable - null이 될 수 없다. String name = '쿤'; name = null; //선언할 수 없음 // ? : Null까지 들어갈 수 있음 String? name2 = '쿤'; name2 = null; //가능 // ! null이 절대 아님 String? name2 = '쿤'; name2! // 현재 이 값을 null이 아니다. ??= 값1 : 값2 (변수가 null일 때 오른쪽 값으로 바꿈) 값1 ?? 값2 (값1이 null이 아니면 값1을 출력하고, null이면 값2를 출력함)

[Flutter] Dart에서 불변의 상수 값을 지정하는 final & const
2023. 4. 6. 22:14
APP/Dart & Flutter
final과 const의 공통점 한 번 설정한 값은 변경할 수 없다. 다른 값으로 변경하려고 시도하면 컴파일 오류가 발생한다. 또한 변수 타입을 따로 설정하지 않아도 오류가 나지 않는다. final test1 = '쿤이의 개발일기'; const test2 = '쿤이의 개발일기'; final과 const의 차이점 const의 경우 빌드 타임을 알아야 선언할 수 있다. (final은 빌드타임의 값을 알지 못해도 선언할 수 있음.) 예를들면 DateTime.now()의 경우 런타임에서 호출 될 때마다 결과 값이 다르기 때문에 DateTime.now()의 변수는 const로 설정할 수 없다. 결국 const로 설정 하는 값의 대부분은 리터럴이 될 것이다. DateTime now = DateTime.now(); ..

[Flutter] Dart 변수 타입 var & dynamic
2023. 4. 6. 22:01
APP/Dart & Flutter
var & dynamic 공통점 변수 타입인 var와 dynamic은 모든 타입의 변수를 받을 수 있다. //예) var test1 = '문자열도 가능'; var test2 = 2; //int형도 가능 var test3 = true; //bool형도 가능! var & dynamic 차이점 var 타입은 한 번 선언하면 타입이 fix 된다. dynamic은 선언하고 나서 다른 타입으로 변경이 가능하다. 예를 들면 아래와 같이 string으로 선언했다가 나중에 int형으로 변환시킬 수 있음! dynamic test = '쿤이의 개발일기'; print(test) // 쿤이의 개발일기 test = 3; print(test) // 3 주의할 점 var와 dynamic 둘 다 모든 타입을 받을 수는 있지만 보통 명..