2023. 2. 23. 22:21ㆍDevelopers 공간 [Shorts]/Frontend
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew,
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter
- Module Bundler : React, Webpack, Parcel
B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS
C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight
1. What? (현상)
웹의 경우 아직 permission_handler가 지원되지 않는다.
안드로이드와 iOS의 경우 미리 OS에 어떤 권한을 필요로 하는지 명시해 주어야합니다.
-----------------------------------------------------------------------------------------------------
<Web을 detect 하는 방법>
import 'package:get/get.dart';
bool isWeb = GetPlatform.isWeb;
bool isMobile = GetPlatform.isMobile;
bool isAndroid = GetPlatform.isAndroid;
bool isiOS = GetPlatform.isIOS;
bool isWeb = GetPlatform.isWeb;
bool isWindows = GetPlatform.isWindows;
bool isMac = GetPlatform.isMacOS;
bool isLinux = GetPlatform.isLinux;
bool isFusia = GetPlatform.isFuchsia;
bool isDesktop = GetPlatform.isDesktop;
if(!isWeb){
...
}
-----------------------------------------------------------------------------------------------------
2. Why? (원인)
- 하지 않으면 권한을 얻을 수 없습니다.
3. How? (해결책)
<안드로이드>
- android/gradle.properties
android.useAndroidX=true
android.enableJetifier=true
- android/app/build.gradle
android {
compileSdkVersion 33
}
-----------------------------------------------------------------------------------------------------
<android SDK version 명시>
android SDK를 명시하는 내용은 compileSdkVersion, minSdkVersion, targetSdkVersion이 있지만,
해당 내용은 flutter.flutterCompileSdkVersion, flutter.minSdkVersion, flutter.targetSdkVersion 등으로 명시되어있고
해당 값은 {flutter 설치위치}/packages\flutter_tools\gradle\flutter.gradle 에 명시되어있습니다.
따라서 바꾸고 싶다면, 직접 바꿔주면 됩니다.
-----------------------------------------------------------------------------------------------------
- AndroidManifest.xml : 앱을 어떤 방식으로 실행하냐에 따라 debug, main, profile폴더에 각각 존재하지만, 일반적으로는 main만 고쳐주어도 가능합니다.
<manifest>
...
<uses-permission android:name="android.permission.CAMERA"/>
...
</manifest>
<iOS>
- ios/Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
...
target.build_configurations.each do |config|
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
## dart: PermissionGroup.camera
# 'PERMISSION_CAMERA=1',
]
end
end
end
- ios/Runner/Info.plist : 왜 원하는지 적습니다.
<dict>
...
<key>NSCameraUsageDescription</key>
<string>${PRODUCT_NAME} wants to use! </string>
...
</dict>
<이후에>
var status = await Permission.camera.status;
if (status.isDenied) {
if (await Permission.camera.request().isDenied) {
//ERROR
}
}
flutter clean
flutter run
'Developers 공간 [Shorts] > Frontend' 카테고리의 다른 글
[Flutter] CocoaPods not installed or not in valid state (0) | 2023.02.24 |
---|---|
[Flutter] android 폴더에서 Cannot resolve symbol (0) | 2023.02.23 |
[Flutter] main 함수에서 async 활용하기 (0) | 2023.02.23 |
[Web] Invalid left-hand side in assignment 에러 (0) | 2023.01.27 |
[Web] CSS 적용시 상하좌우 순서 (0) | 2023.01.27 |