일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- mfc
- stream
- APP
- length
- UNO
- atmega328
- Unity
- Class
- file access
- flutter
- compare
- Contour
- preprocessing
- sensor
- Android
- Encapusulation
- digitalRead
- inheritance
- Pointer
- Read
- Barcode
- parameter
- public
- aduino
- Binary
- java
- Overloading
- SERIAL
- memory
- wpf
- Today
- Total
목록Flutter, Android/Flutter 사용법 (36)
폴크(FOLC)
# 스크롤 위젯 > 데이터를 순차적으로 표현 # 동작 방식 ( 총 4가지 ) > default 생성자 - child 로 List 을 호출하여 동작 - 목록 보기에 표시될 수 있는 자식에 대해 작업을 수행 - 데이터량이 작은 경우에 이용 > 소스 코드 ListView(children: [ Container(height: 50, color: Colors.amber[600], child: const Center(child: Text('Entry A')), ), Container(height: 50, color: Colors.amber[500], child: const Center(child: Text('Entry B')), ), ],) > builder 생성자 - child 를 빌드하는 IndexedWidge..
# 외부 명령 및 데이터를 수신한 경우 / 데이터 전달하는 경우 # InAppWebView 와 연동 처리 > 생성자에 OnCreateWindow 함수와 연결 > 옵션으로 새창을 OPEN 할 수 있도록 설정 # 소스 코드 Future onCreateNewWindow(InAppWebViewController controller, CreateWindowAction createWindowAction) async { var uri = createWindowAction.request.url; final String text = uri.toString(); final List contents = [ "http", "https", "file", "chrome", "data", "javascript", "about" ]..
# 설치 하지 않고 바로 사용 가능한 Local 버전 # Android Studio 검색한다. > Download Android Studio and SDK tools 선택 # 페이지 밑으로 이동한다. > android-studio-2020.3.1.25-windows.zip ( No .exe Installer ) 를 선택 > OS 환경에 맞는 zip 파일을 선택한다. # 다운로드 완료한 zip 파일을 선택하고 unzip 한다. # android-studio 폴더 안에 bin 폴더로 이동한다. > OS 환경에 맞는 실행 파일을 선택하여 studio.exe / studio64.exe 를 실행 # 프로젝트를 선택하거나 새롭게 생성한다. # PlugIn 에서 Flutter 패키지를 선택해서 설치 한다. > Dar..
# 이미지 또는 파일을 Upload 하기 위해서 권한이 부여 되지 않아 App 이 비정상적으로 종료되는 현상 > Storage 접근 권한 필요 > CAMERA 관련 권한 필요 # android - app - src - main - AndroidManifest.xml 에 내용 추가 > > # 스토리지 권한만 있으면 안되고 CAMERA 권한도 같이 부여 해줘야 한다. > 카메라 권한만 부여해도 정상 동작하는 경우가 있음. # 추가적으로, 사진이나 파일을 저장하기 위해서는 아래와 같은 구문 추가 > > android:requestLegacyExternalStorage="true" 또는 android:preserveLegacyExternalStorage="true" - 삭제 예정 * P.S. Android ta..
# 소스코드를 동일한 포멧으로 전환해주는 기능 > 안드로이드 스튜디오 / IntelliJ IDEA : 코드에서 마우스 오른쪽 버튼을 클릭 - Reformat Code with dartfmt 선택 > 비쥬얼 스튜디오 코드 : 코드에서 마우스 오른쪽 버튼을 클릭 - Format Document 선택 # 만약, Flutter/Dart 패키지가 설치 되어 있지 않다면 아래와 같이 표시 된다. > 마우스 오른쪽 버튼을 클릭한 후 Command Palette ( 또는 CTRL + SHIFT + P ) - Format Document 선택 - 설치가 되어있지 않아서 아래과 같이 표시 된다. ( Install Formatter... 선택 ) - Flutter 패키지를 설치 한다. ( Dart 패키지는 통합으로 설치 된..
# Flutter 로 App 을 개발하는 과정에서 자주 이용되는 툴 ( 툴 버전은 최신으로 이용 권장 ) > 상태 관리 툴 - GetX : https://pub.dev/packages/get > 카메라 제어 툴 - image_picker : https://pub.dev/packages/image_picker > 통신 제어 툴 - http : https://pub.dev/packages/http > 이미지 조회 툴 - photo_view : https://pub.dev/packages/photo_view > 처리중 툴 - modal_progress_hud : https://pub.dev/packages/modal_progress_hud > 메시지 제어 툴 - toast : https://pub.dev/pa..
# 고성능 상태 관리, 지능형 종속성 주입 및 빠르고 실용적인 라우트 관리 # 3 가지 기본 원칙 > 성 능 : 성능과 최소한의 리소스 사용 ( Streams나 ChangeNotifier를 사용 X ) > 생산성 : 친숙하고 간결한 구문을 사용 ( 종속성은 기본적으로 lazy로 로드 ) > 조직화 : 화면, 프레젠테이션 로직, 비즈니스 로직, 종속성 주입 및 네비게이션을 완전히 분리 * 라우트간 전환을 하는데에 컨텍스트가 필요하지 않아 위젯 트리에 독립적이다. # 자주 이용하는 명령어 > 라우트 관리 : GetMaterialApp 으로 변경 > 네비게이션 : Get.to( 해당 페이지 ) - 새로운 화면으로 이동 : Get.toNamed( 해당 페이지 이름 ) - 미리 설정되어 있는 이름의 화면으로 이동..
# 설치 하지 않고 바로 사용 가능한 Local 버전이 있다. # Visual Studio Code 검색한다. > Download 를 선택한다. # Windows - .zip ( 64bit ) 를 선택한다. # 압축 파일을 unzip 하고 Code.exe 를 실행한다. # 설치 파일과 동일한 형태로 사용 가능한다.
# Visual Studio Code 웹 사이트를 검색한다. # Visual Studio Code 웹 사이트에 접속한다. > Windows x64 User Installer ( Stable ) 로 선택한다. > Insiders 는 최신 버전이긴 하지만 update 가 자주 발생한다. # 파일은 다운로드 받고 설치한다. # "다음" 계속 누른다. # 설치 완료! # Extensions 툴바에서 flutter 를 검색하여 설치 한다. > Dart 는 자동적으로 설치 된다. # 프로젝트 생성 > Open Foldet : 프로젝트 파일을 생성하고 관리하는 Folder 를 설정해준다. > 설정확인! # 신규 프로젝트를 생성한다. > CTRL + SHIFT + P ( project ) > flutter 라고 입력하..
# 내장된 웹 브라우저 컴포넌트로 앱을 임베딩하는 것을 말한다. 즉, 앱 내에 웹 브라우저(HTML iframe)를 넣는 것이다. > 웹 페이지를 보기 위해서 또는 앱 안에서 HTML을 호출하여 앱을 구현하는 하이브리드 형태로 이용된다. > Javasript SDK 를 사용하고 있는 웹 페이지의 경우에는 다음과 같은 형태로 임베딩이 가능하다. 1. pubspec.yaml 설정 추가 # dependencies - flutter_inappwebview: ^5.3.2 2. /android/app/src/main/AndroidManifest.xml 옵션 설정하기 # 메니페시트 영역 # 안드로이드 영역 android:usesCleartextTraffic="true"> 3. /android/app/src/build..
# 웹 페이지에서 JS-SDK를 사용할 경우 InAppWebView 에서 kakao 등 외부 url 을 연동하여 올바르게 동작하도록 하기 위해서는 다음과 같은 처리가 필요하다. # Android 11 이상에서 JS-SDK 을 이용하여 기능을 구현하는 경우 > AndroidManifest.xml 에 패키지 명을 추가한다. 그렇지 않으면, Android Framework 에서 호출을 차단한다. ... # 안드로이드 앱에서 웹뷰를 통해 앱을 실행하려면 Intent URI를 이용한다. import 'package:url_launcher/url_launcher.dart'; InAppWebViewGroupOptions option = InAppWebViewGroupOptions( crossPlatform: InAp..
# Flutter Widget 에 Unity 를 삽입하여 AR, XR 등의 ARFoundation 관련 기능을 사용하는 경우 발생하는 문제점 > flutter_unity_widget 4.2.1 에서 화면 전환으로 인한 충돌 부분 > Permission 문제로 Android 와 Unity 에서 Camera 사용 권한 적용 필요 → 최초 설치한 상태 (1회) 에는 카메라 사용 권한이 없는 관계로 Permission 관련 메시지가 표기 된다. 하지만, App 이 2번째 실행되는 경우에는 자동적으로 권한 관련 메시지를 묻지 않는다. → flutter unity widget DLL 에서 CAMERA 관련 사용 권한 적용이 진행되지 않는 관계로 화면이 멈추는 현상 발생 # 상기 문제 해결 방법1 ( 임시 조치 방법..
# 인증서 (jks) 파일은 분실하지 않도록 주의한다. > 추후 app 의 대한 정보를 udpate 하거나 변경이 필요한 경우에는 문제가 될 수 있다. > 만약, 분실했을 경우에는 google play 지원팀에 문의를 해서 도움을 받는다. # Android Project 를 OPEN 한다. # Build - Generate Signed Bundle / APK... 선택 # Android App Bundle 선택 ( aab 파일 생성 ) # 필요한 정보를 입력하고 NEXT > 파일은 D:\ 에 저장한다. C:\ 로 저장하게 되면 가끔씩 권한문제로 access 차단이 발생하여 aab 파일 생성이 안되는 경우가 있다. # release 상태가 포함되어 있는지 확인하고 NEXT 해서 마무리한다.
# Android 는 배포 버전이 https://search.google.com/search-console/about을 통해서 관리 되는데, 외부로 공개되는 버전과 내부로 관리하는 버전을 분리 할 수 있도록 되어 있다. > 외부로 공개 되는 버전은 versionName > 내부로 관리 하는 버전은 versionCode > Google console 에서 aab 파일의 버전을 downgrade 비허용 하고 versionCode 의 숫자로 관리 한다. > update 나 release 를 계속해서 진행하기 위해서는 versionCode 값을 계속 증가(최대 2100000000) 시킨다. # 배포를 위해서 versionCode 와 versionName 은 다음의 위치 파일을 수정한다. > ProjectFold..
# toast message 이용 > 화면에 message 를 표시 해준다. # 소스 코드 > import 'package:fluttertoast/fluttertoast.dart'; > > Fluttertoast.showToast( > msg: "메시지내용", > toastLength: Toast.LENGTH_SHORT, > gravity: ToastGravity.CENTER, > timeInSecForIosWeb: 1, > backgroundColor: Colors.red, > textColor: Colors.white, > fontSize: 26.0 > );
# webview_flutter 이용 > web 서버와 message 를 주고 받는다. # 소스 코드 > import 'package:webview_flutter/webview_flutter.dart'; > > WebViewController _webviewcontroller; > > WebView(initialUrl: 'http://-----.--.--', > javascriptMode: JavascriptMode.unrestricted, > onWebViewCreated: (WebViewController webViewController) { _webviewcontroller = webViewController; }, > javascriptChannels: { _toasterJavascriptChan..
# NDK 관련 error 가 발생하며 compile 실패 FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':unityLibrary:BuildIl2CppTask'. > NDK is not installed # 해결 방안 # File -> Open -> Solution -> android project -> New Window -> Project Structure -> SDK Location -> Android NDK location -> 위치 설정 후 Apply and OK -> Close Window # make APK # 보통 NDK 는 Android SDK location 안에 있다. # C:..
# 아래와 같은 문제가 있다면? Launching lib\main.dart on sdk gphone x86 in debug mode... Running Gradle task 'assembleDebug'... √ Built build\app\outputs\flutter-apk\app-debug.apk. Debug service listening on ws://127.0.0.1:63779/WKu00zX_lx0=/ws Syncing files to device sdk gphone x86... E/Unity (18016): Failed to load 'libmain.so' E/Unity (18016): E/Unity (18016): java.lang.UnsatisfiedLinkError: dlopen faile..
# FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':app:lintVitalRelease'. > Could not resolve all artifacts for configuration ':flutter_unity_widget:profileCompileClasspath'. > Could not resolve project :unityLibrary. Required by: project :flutter_unity_widget > No matching variant of project :unityLibrary was found. The consumer was configured to find an A..
# Gradle 관련 이슈 발생 Launching lib\main.dart on sdk gphone x86 in debug mode... Running Gradle task 'assembleDebug'... FAILURE: Build failed with an exception. * What went wrong: Could not determine the dependencies of task ':flutter_unity_widget:compileDebugAidl'. > Could not resolve all task dependencies for configuration ':flutter_unity_widget:debugCompileClasspath'. > Could not resolve project ..