├── .flutter-plugins ├── .flutter-plugins-dependencies ├── .gitignore ├── LICENSE ├── README.md ├── android ├── .gitignore ├── .idea │ ├── .gitignore │ ├── compiler.xml │ ├── gradle.xml │ ├── misc.xml │ ├── modules.xml │ ├── modules │ │ └── android.iml │ ├── vcs.xml │ └── workspace.xml ├── app │ ├── build.gradle │ ├── flutter_armod │ └── src │ │ ├── debug │ │ └── AndroidManifest.xml │ │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── kotlin │ │ │ └── com │ │ │ │ └── example │ │ │ │ └── armod_flutter_store │ │ │ │ └── MainActivity.kt │ │ └── res │ │ │ ├── drawable-v21 │ │ │ └── launch_background.xml │ │ │ ├── drawable │ │ │ └── launch_background.xml │ │ │ ├── mipmap-hdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-mdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-xhdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-xxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── mipmap-xxxhdpi │ │ │ ├── ic_launcher.png │ │ │ └── launcher_icon.png │ │ │ ├── values-night │ │ │ └── styles.xml │ │ │ └── values │ │ │ ├── strings.xml │ │ │ └── styles.xml │ │ └── profile │ │ └── AndroidManifest.xml ├── armod-release-key.keystore ├── armod_flutter_store_android.iml ├── build.gradle ├── gradle.properties ├── gradle │ └── wrapper │ │ └── gradle-wrapper.properties ├── hs_err_pid61052.log ├── hs_err_pid62372.log ├── hs_err_pid67752.log ├── multidex-config.pro ├── settings.gradle └── settings_aar.gradle ├── assets └── icon │ └── logo.jpg ├── ios ├── .gitignore ├── Flutter │ ├── AppFrameworkInfo.plist │ ├── Debug.xcconfig │ └── Release.xcconfig ├── Podfile ├── Podfile.lock ├── Runner.xcodeproj │ ├── project.pbxproj │ ├── project.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ ├── IDEWorkspaceChecks.plist │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ └── xcschemes │ │ └── Runner.xcscheme ├── Runner.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── Runner │ ├── ARMODCallbackAPI.swift │ ├── AppDelegate.swift │ ├── Assets.xcassets │ │ ├── AppIcon.appiconset │ │ │ ├── Contents.json │ │ │ ├── Icon-App-1024x1024@1x.png │ │ │ ├── Icon-App-20x20@1x.png │ │ │ ├── Icon-App-20x20@2x.png │ │ │ ├── Icon-App-20x20@3x.png │ │ │ ├── Icon-App-29x29@1x.png │ │ │ ├── Icon-App-29x29@2x.png │ │ │ ├── Icon-App-29x29@3x.png │ │ │ ├── Icon-App-40x40@1x.png │ │ │ ├── Icon-App-40x40@2x.png │ │ │ ├── Icon-App-40x40@3x.png │ │ │ ├── Icon-App-60x60@2x.png │ │ │ ├── Icon-App-60x60@3x.png │ │ │ ├── Icon-App-76x76@1x.png │ │ │ ├── Icon-App-76x76@2x.png │ │ │ └── Icon-App-83.5x83.5@2x.png │ │ └── LaunchImage.imageset │ │ │ ├── Contents.json │ │ │ ├── LaunchImage.png │ │ │ ├── LaunchImage@2x.png │ │ │ ├── LaunchImage@3x.png │ │ │ └── README.md │ ├── Base.lproj │ │ ├── LaunchScreen.storyboard │ │ └── Main.storyboard │ ├── Info.plist │ └── Runner-Bridging-Header.h └── ThirdParties │ └── README.md ├── lib ├── main.dart └── src │ ├── config │ ├── phantomsxrConfig.dart │ └── route.dart │ ├── model │ ├── data.dart │ ├── general_experience.dart │ ├── general_experience_detail.dart │ └── recommand_experience.dart │ ├── pages │ ├── ar_experience_detail.dart │ ├── ar_view.dart │ ├── home_page.dart │ └── mainPage.dart │ ├── themes │ ├── light_color.dart │ └── theme.dart │ ├── utils.dart │ └── widgets │ ├── column_builder.dart │ ├── customRoute.dart │ ├── experience_card.dart │ ├── extentions.dart │ ├── recommend_card.dart │ ├── subtitle_text.dart │ ├── title_text.dart │ └── without_scroll_glow.dart ├── pubspec.yaml └── test └── widget_test.dart /.flutter-plugins: -------------------------------------------------------------------------------- 1 | # This is a generated file; do not edit or check into version control. 2 | flutter_armod_widget=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_armod_widget-2.0.0-pre.1/ 3 | flutter_plugin_android_lifecycle=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-2.0.7/ 4 | path_provider=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider-2.0.11/ 5 | path_provider_android=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.16/ 6 | path_provider_ios=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.10/ 7 | path_provider_linux=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/ 8 | path_provider_macos=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/ 9 | path_provider_windows=/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.0/ 10 | -------------------------------------------------------------------------------- /.flutter-plugins-dependencies: -------------------------------------------------------------------------------- 1 | {"info":"This is a generated file; do not edit or check into version control.","plugins":{"ios":[{"name":"flutter_armod_widget","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_armod_widget-2.0.0-pre.1/","native_build":true,"dependencies":[]},{"name":"path_provider_ios","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_ios-2.0.10/","native_build":true,"dependencies":[]}],"android":[{"name":"flutter_armod_widget","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_armod_widget-2.0.0-pre.1/","native_build":true,"dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_plugin_android_lifecycle","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/flutter_plugin_android_lifecycle-2.0.7/","native_build":true,"dependencies":[]},{"name":"path_provider_android","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_android-2.0.16/","native_build":true,"dependencies":[]}],"macos":[{"name":"path_provider_macos","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6/","native_build":true,"dependencies":[]}],"linux":[{"name":"path_provider_linux","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7/","native_build":false,"dependencies":[]}],"windows":[{"name":"path_provider_windows","path":"/Users/nswell/Documents/PhantomsXR/Others/SDKs/flutter/.pub-cache/hosted/pub.dartlang.org/path_provider_windows-2.1.0/","native_build":false,"dependencies":[]}],"web":[]},"dependencyGraph":[{"name":"flutter_armod_widget","dependencies":["flutter_plugin_android_lifecycle"]},{"name":"flutter_plugin_android_lifecycle","dependencies":[]},{"name":"path_provider","dependencies":["path_provider_android","path_provider_ios","path_provider_linux","path_provider_macos","path_provider_windows"]},{"name":"path_provider_android","dependencies":[]},{"name":"path_provider_ios","dependencies":[]},{"name":"path_provider_linux","dependencies":[]},{"name":"path_provider_macos","dependencies":[]},{"name":"path_provider_windows","dependencies":[]}],"date_created":"2022-10-04 20:40:17.106276","version":"3.0.5"} -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://www.dartlang.org/guides/libraries/private-files 2 | 3 | # Files and directories created by pub 4 | .dart_tool/ 5 | .packages 6 | build/ 7 | # If you're building an application, you may want to check-in your pubspec.lock 8 | pubspec.lock 9 | 10 | # Directory created by dartdoc 11 | # If you don't generate documentation locally you can remove this line. 12 | doc/api/ 13 | 14 | # Avoid committing generated Javascript files: 15 | *.dart.js 16 | *.info.json # Produced by the --dump-info flag. 17 | *.js # When generated by dart2js. Don't specify *.js if your 18 | # project includes source files written in JavaScript. 19 | *.js_ 20 | *.js.deps 21 | *.js.map 22 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ARMOD-Flutter App Demo 2 | This repository is used to demonstrate how the AR-MOD SDK can be used in Flutter. 3 | 4 | ## Getting Started 5 | 6 | 7 | 1. Install this plugin to your flutter project. If you do not know how to install the `Flutter Package` you can [click here](https://flutter.dev/docs/development/packages-and-plugins/using-packages) to see the document. 8 | 9 |
10 | Install Guid 11 | 12 | The AR-MOD SDK currently provides a plug-in package for Flutter. You can install it through `flutter_armod_widget: ^0.0.3` in your flutter project `pubspec.yaml` ! 13 | 14 | ```yaml 15 | # Other config 16 | dependencies: 17 | flutter: 18 | sdk: flutter 19 | flutter_armod_widget: ^0.0.3 20 | # Other config 21 | 22 | ``` 23 | 24 |
25 | 26 | 27 | 2. Go to [PhantomsXR](https://github.com/Phantomxm2021/ARMOD-Framework) github respository. Download and Unzip it. 28 | 29 | 3. Choose iOS or Android platform from the options below to set. 30 | 31 |
32 | Android Setup 33 | 34 | 1. Go to the location of your `FLUTTER SDK PATH/.pub-cache/hosted/pub.dartlang.org/flutter_armod_widget-0.0.3/` folder, then paste the `libs` to `android` platform folder. 35 | 36 | 2. Run `Flutter pub get` command in your termial. 37 | 38 |
39 | 40 | 41 | 42 |
43 | iOS Setup 44 | 45 | 1. Create the `ThirdParties` folder to your XCode project. 46 | 47 | 2. Import `UnityFramework.framework` to the folder(ThridParties). 48 | 49 | 3. Add the Framewrok to Xcode -> Targets -> Your APP -> General -> Franework,Libraries, and Embedded Content area, And set the Embed mode to Embed & Sign. 50 | 51 | 4. Execute the `cd iOS` command and run `Pod install` command in your termial. 52 | 53 | 5. Double-Click to open the `Runner.xcworkspace` file. It will be launch the XCode app. 54 | 55 | 6. If you're using Swift, open the *ios/Runner/AppDelegate.swift* file and change the following: 56 | 57 | ```diff 58 | import UIKit 59 | import Flutter 60 | + import flutter_armod_widget 61 | 62 | @UIApplicationMain 63 | @objc class AppDelegate: FlutterAppDelegate { 64 | override func application( 65 | _ application: UIApplication, 66 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 67 | ) -> Bool { 68 | + InitARMODIntegrationWithOptions(argc: CommandLine.argc, argv: CommandLine.unsafeArgv, launchOptions) 69 | 70 | GeneratedPluginRegistrant.register(with: self) 71 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 72 | } 73 | } 74 | ``` 75 | 76 | > If you're using Objective-C, open the *ios/Runner/main.m* file and change the following: 77 | ```diff 78 | + #import "flutter_armod_widget.swift.h" 79 | 80 | int main(int argc, char * argv[]) { 81 | @autoreleasepool { 82 | + InitARMODIntegration(argc, argv); 83 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 84 | } 85 | } 86 | ``` 87 | 88 | 7. Edit the info.plist 89 | 90 | ```diff 91 | 92 | + io.flutter.embedded_views_preview 93 | + YES 94 | 95 | ``` 96 | 97 | ```diff 98 | 99 | + Privacy - Camera Usage Description 100 | + $(PRODUCT_NAME) uses Cameras 101 | 102 | ``` 103 | 104 | ```diff 105 | 106 | + NSBonjourServices 107 | + _dartobservatory._tcp 108 | 109 | ``` 110 |
111 | 112 | 113 | 4. Create and write your app token to [PhantomsXRConfig.dart](lib/src/config/phantomsxrConfig.dart). 114 | 115 | 5. And write a new screen for AR-MOD. 116 | 117 | # Common mistakes 118 | ## iOS Error 119 | - Q: ios/Flutter/Generated.xcconfig must exist. 120 | - A: Execute `Flutter run` command to generate the `Generated.xcconfig` file 121 | 122 | - Q: CocoaPods could not find compatible versions for pod "flutter_armod_widget" 123 | - A: Find and replace the `platform :ios, '9.0'` to `platform :ios, '11.0'` in the Podfile. Then Execute `Pod update` command to refresh your project. 124 | 125 | ## Example Code 126 | ```dart 127 | import 'dart:async'; 128 | 129 | import 'package:armod_flutter_store/src/model/data.dart'; 130 | import 'package:armod_flutter_store/src/themes/theme.dart'; 131 | import 'package:flutter/cupertino.dart'; 132 | import 'package:flutter/material.dart'; 133 | import 'package:flutter_armod_widget/flutter_armod_widget.dart'; 134 | import 'package:flutter_easyloading/flutter_easyloading.dart'; 135 | 136 | import '../config/phantomsxrConfig.dart'; 137 | 138 | class ARView extends StatefulWidget { 139 | ARView({Key? key}) : super(key: key); 140 | 141 | @override 142 | ARViewState createState() => ARViewState(); 143 | } 144 | 145 | class ARViewState extends State { 146 | late ARMODWidgetController _armodWidgetController; 147 | bool _onWillPop = false; 148 | @override 149 | void initState() { 150 | super.initState(); 151 | } 152 | 153 | @override 154 | void dispose() { 155 | super.dispose(); 156 | } 157 | 158 | Widget _appBar() { 159 | return SafeArea( 160 | top: true, 161 | child: GestureDetector( 162 | child: Container( 163 | padding: AppTheme.padding, 164 | child: Row( 165 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 166 | children: [ 167 | Container( 168 | width: 25, 169 | height: 25, 170 | alignment: Alignment.center, 171 | decoration: BoxDecoration( 172 | color: Colors.white, 173 | borderRadius: BorderRadius.all(Radius.circular(15)), 174 | ), 175 | child: Icon(Icons.close, color: Colors.black54, size: 20), 176 | ) 177 | ], 178 | ), 179 | ), 180 | onTap: () async { 181 | bool willPop = await _onBackPressed(); 182 | if (willPop) Navigator.of(context).pop(true); 183 | }, 184 | )); 185 | } 186 | 187 | @override 188 | Widget build(BuildContext context) { 189 | return new WillPopScope( 190 | onWillPop: _onBackPressed, 191 | child: new Scaffold( 192 | body: SafeArea( 193 | top: true, 194 | child: Stack( 195 | children: [ 196 | ARMODWidget( 197 | onARMODCreated: onARMODCreate, 198 | onARMODExit: onARMODExit, 199 | onARMODLaunch: onARMODLaunch, 200 | onAddLoadingOverlay: onAddLoadingOverlay, 201 | onDeviceNotSupport: onDeviceNotSupport, 202 | onNeedInstallARCoreService: onNeedInstallARCoreService, 203 | onOpenBuiltInBrowser: onOpenBuiltInBrowser, 204 | onPackageSizeMoreThanPresetSize: 205 | onPackageSizeMoreThanPresetSize, 206 | onRecognitionComplete: onRecognitionComplete, 207 | onRecognitionStart: onRecognitionStart, 208 | onRemoveLoadingOverlay: onRemoveLoadingOverlay, 209 | onSdkInitialized: onSdkInitialized, 210 | onThrowException: onThrowException, 211 | onTryAcquireInformation: onTryAcquireInformation, 212 | onUpdateLoadingProgress: onUpdateLoadingProgress, 213 | fullscreen: true, 214 | ), 215 | _appBar() 216 | ], 217 | )), 218 | ), 219 | ); 220 | } 221 | 222 | ///Handling the back event 223 | Future _onBackPressed() async { 224 | //Close AR-MOD SDK 225 | _armodWidgetController.unloadAndHideARMOD(); 226 | 227 | while (!_onWillPop) { 228 | //We need to delayed executed because release AR-MOD operation is async. 229 | //May need to wait one more frame 230 | await Future.delayed(Duration(milliseconds: 1)); 231 | } 232 | 233 | return _onWillPop; 234 | } 235 | 236 | showAlertDialog(BuildContext context, String title, String msg) { 237 | // set up the button 238 | Widget okButton = TextButton( 239 | child: Text("OK"), 240 | onPressed: () { 241 | Navigator.of(context).pop(); 242 | }, 243 | ); 244 | 245 | // set up the AlertDialog 246 | AlertDialog alert = AlertDialog( 247 | title: Text(title), 248 | content: Text(msg), 249 | actions: [ 250 | okButton, 251 | ], 252 | ); 253 | 254 | // show the dialog 255 | showDialog( 256 | context: context, 257 | builder: (BuildContext context) { 258 | return alert; 259 | }, 260 | ); 261 | } 262 | 263 | Future onARMODCreate(controller) async { 264 | this._armodWidgetController = controller; 265 | if (await _armodWidgetController.isLoaded() != false) 266 | _armodWidgetController.create(); 267 | } 268 | 269 | void onARMODLaunch() { 270 | print("----------------------------"); 271 | print("-------onARMODLaunch---------"); 272 | print("----------------------------"); 273 | _armodWidgetController.initARMOD( 274 | '{"EngineType":"Native","dashboardConfig":{"dashboardGateway":"https://weacw.com/api/v1/getarexperience","token":"${PhantomsXRConfig.AppToken}","timeout":30,"maximumDownloadSize":30},"imageCloudRecognizerConfig":{"gateway":"","maximumOfRetries":5,"frequencyOfScan":5}}'); 275 | 276 | Future.delayed(Duration(milliseconds: 125), 277 | () => {_armodWidgetController.fetchProject(AppData.ar_experience_uid)}); 278 | } 279 | 280 | void onThrowException(String errorMsg, int erorCode) { 281 | EasyLoading.dismiss(); 282 | showAlertDialog(context, "(Error:$erorCode)", errorMsg); 283 | } 284 | 285 | void onARMODExit() { 286 | print("----------------------------"); 287 | print("-------onARMODExit---------"); 288 | print("----------------------------"); 289 | _onWillPop = true; 290 | } 291 | 292 | void onUpdateLoadingProgress(progress) { 293 | EasyLoading.showProgress(progress, 294 | status: '${(progress * 100).toStringAsFixed(0)}%'); 295 | } 296 | 297 | Future onTryAcquireInformation(String opTag) async { 298 | await Future.delayed(Duration(seconds: 3)); 299 | return "onTryAcquireInformation_$opTag"; 300 | } 301 | 302 | void onAddLoadingOverlay() { 303 | EasyLoading.instance 304 | ..indicatorType = EasyLoadingIndicatorType.fadingCircle 305 | ..maskColor = Colors.red.withOpacity(0.5) 306 | ..dismissOnTap = false; 307 | } 308 | 309 | void onRemoveLoadingOverlay() { 310 | EasyLoading.dismiss(); 311 | } 312 | 313 | void onDeviceNotSupport() {} 314 | 315 | void onRecognitionStart() {} 316 | 317 | void onNeedInstallARCoreService() {} 318 | 319 | void onSdkInitialized() {} 320 | 321 | void onOpenBuiltInBrowser(url) {} 322 | 323 | void onPackageSizeMoreThanPresetSize(currentSize, presetSize) {} 324 | 325 | void onRecognitionComplete() {} 326 | } 327 | ``` 328 | -------------------------------------------------------------------------------- /android/.gitignore: -------------------------------------------------------------------------------- 1 | gradle-wrapper.jar 2 | /.gradle 3 | /captures/ 4 | /gradlew 5 | /gradlew.bat 6 | /local.properties 7 | GeneratedPluginRegistrant.java 8 | 9 | # Remember to never publicly share your keystore. 10 | # See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app 11 | key.properties 12 | -------------------------------------------------------------------------------- /android/.idea/.gitignore: -------------------------------------------------------------------------------- 1 | # Default ignored files 2 | /shelf/ 3 | /workspace.xml 4 | -------------------------------------------------------------------------------- /android/.idea/compiler.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 22 | 23 | -------------------------------------------------------------------------------- /android/.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 9 | -------------------------------------------------------------------------------- /android/.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/.idea/modules/android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /android/.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /android/.idea/workspace.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 1641222232471 55 | 59 | 60 | 61 | 62 | 71 | 73 | -------------------------------------------------------------------------------- /android/app/build.gradle: -------------------------------------------------------------------------------- 1 | def localProperties = new Properties() 2 | def localPropertiesFile = rootProject.file('local.properties') 3 | if (localPropertiesFile.exists()) { 4 | localPropertiesFile.withReader('UTF-8') { reader -> 5 | localProperties.load(reader) 6 | } 7 | } 8 | 9 | def flutterRoot = localProperties.getProperty('flutter.sdk') 10 | if (flutterRoot == null) { 11 | throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") 12 | } 13 | 14 | def flutterVersionCode = localProperties.getProperty('flutter.versionCode') 15 | if (flutterVersionCode == null) { 16 | flutterVersionCode = '1' 17 | } 18 | 19 | def flutterVersionName = localProperties.getProperty('flutter.versionName') 20 | if (flutterVersionName == null) { 21 | flutterVersionName = '1.0' 22 | } 23 | 24 | apply plugin: 'com.android.application' 25 | apply plugin: 'kotlin-android' 26 | apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" 27 | 28 | def keystoreProperties = new Properties() 29 | def keystorePropertiesFile = rootProject.file('key.properties') 30 | if (keystorePropertiesFile.exists()) { 31 | keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) 32 | } 33 | 34 | 35 | android { 36 | compileSdkVersion 31 37 | 38 | sourceSets { 39 | main.java.srcDirs += 'src/main/kotlin' 40 | } 41 | 42 | lintOptions { 43 | disable 'InvalidPackage' 44 | } 45 | 46 | defaultConfig { 47 | // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). 48 | 49 | applicationId "com.example.armod_flutter_store" 50 | minSdkVersion 28 51 | targetSdkVersion 30 52 | versionCode flutterVersionCode.toInteger() 53 | versionName flutterVersionName 54 | } 55 | 56 | signingConfigs { 57 | release { 58 | keyAlias keystoreProperties['keyAlias'] 59 | keyPassword keystoreProperties['keyPassword'] 60 | storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null 61 | storePassword keystoreProperties['storePassword'] 62 | } 63 | } 64 | 65 | buildTypes { 66 | release { 67 | // TODO: Add your own signing config for the release build. 68 | // Signing with the debug keys for now, so `flutter run --release` works. 69 | // signingConfig signingConfigs.debug 70 | signingConfig signingConfigs.release 71 | } 72 | debug { 73 | signingConfig signingConfigs.debug 74 | } 75 | profile { 76 | signingConfig signingConfigs.debug 77 | } 78 | innerTest { 79 | matchingFallbacks = ['debug', 'release'] 80 | } 81 | } 82 | } 83 | 84 | flutter { 85 | source '../..' 86 | } 87 | 88 | dependencies { 89 | implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" 90 | } -------------------------------------------------------------------------------- /android/app/flutter_armod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/flutter_armod -------------------------------------------------------------------------------- /android/app/src/debug/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 10 | 14 | 22 | 26 | 30 | 35 | 39 | 40 | 41 | 42 | 43 | 44 | 46 | 49 | 50 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /android/app/src/main/kotlin/com/example/armod_flutter_store/MainActivity.kt: -------------------------------------------------------------------------------- 1 | package com.example.armod_flutter_store 2 | 3 | import io.flutter.embedding.android.FlutterActivity 4 | 5 | class MainActivity: FlutterActivity() { 6 | } 7 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable-v21/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/drawable/launch_background.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-hdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-hdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-mdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-mdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png -------------------------------------------------------------------------------- /android/app/src/main/res/values-night/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Game view 3 | -------------------------------------------------------------------------------- /android/app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 15 | 18 | 19 | -------------------------------------------------------------------------------- /android/app/src/profile/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /android/armod-release-key.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/android/armod-release-key.keystore -------------------------------------------------------------------------------- /android/armod_flutter_store_android.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /android/build.gradle: -------------------------------------------------------------------------------- 1 | buildscript { 2 | ext.kotlin_version = '1.6.10' 3 | repositories { 4 | maven {url 'https://maven.aliyun.com/repository/central'} 5 | maven {url 'https://maven.aliyun.com/repository/public'} 6 | maven {url 'https://maven.aliyun.com/repository/google'} 7 | maven {url 'https://maven.aliyun.com/repository/gradle-plugin'} 8 | google() 9 | jcenter() 10 | } 11 | 12 | dependencies { 13 | 14 | classpath 'com.android.tools.build:gradle:4.1.0' 15 | classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 16 | } 17 | 18 | } 19 | 20 | 21 | allprojects { 22 | repositories { 23 | maven {url 'https://maven.aliyun.com/repository/central'} 24 | maven {url 'https://maven.aliyun.com/repository/public'} 25 | maven {url 'https://maven.aliyun.com/repository/google'} 26 | maven {url 'https://maven.aliyun.com/repository/gradle-plugin'} 27 | google() 28 | jcenter() 29 | } 30 | } 31 | 32 | 33 | rootProject.buildDir = '../build' 34 | subprojects { 35 | project.buildDir = "${rootProject.buildDir}/${project.name}" 36 | project.evaluationDependsOn(':app') 37 | } 38 | 39 | task clean(type: Delete) { 40 | delete rootProject.buildDir 41 | } 42 | -------------------------------------------------------------------------------- /android/gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx1536M 2 | android.useAndroidX=true 3 | android.enableJetifier=true 4 | android.enableR8=true -------------------------------------------------------------------------------- /android/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Fri Jun 23 08:50:38 CEST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip 7 | -------------------------------------------------------------------------------- /android/hs_err_pid61052.log: -------------------------------------------------------------------------------- 1 | # 2 | # A fatal error has been detected by the Java Runtime Environment: 3 | # 4 | # EXCEPTION_SINGLE_STEP (0x80000004) at pc=0x0000000002fa25fe, pid=61052, tid=0x0000000000012444 5 | # 6 | # JRE version: OpenJDK Runtime Environment (8.0) (build 1.8.0-adoptopenjdk-_2018_05_19_00_59-b00) 7 | # Java VM: OpenJDK 64-Bit Server VM (25.71-b00 mixed mode windows-amd64 compressed oops) 8 | # Problematic frame: 9 | # v ~StubRoutines::jlong_disjoint_arraycopy 10 | # 11 | # Failed to write core dump. Minidumps are not enabled by default on client versions of Windows 12 | # 13 | # If you would like to submit a bug report, please visit: 14 | # http://bugreport.java.com/bugreport/crash.jsp 15 | # 16 | 17 | --------------- T H R E A D --------------- 18 | 19 | Current thread (0x000000002e81d000): JavaThread "ForkJoinPool.commonPool-worker-3" daemon [_thread_in_Java, id=74820, stack(0x0000000057c20000,0x0000000057d20000)] 20 | 21 | siginfo: ExceptionCode=0x80000004 22 | 23 | Registers: 24 | RAX=0x0000000000a5c4a4, RBX=0x000000005ceaf040, RCX=0x000000005ceaf038, RDX=0xffffffffffff9a34 25 | RSP=0x0000000057d1e9f0, RBP=0x0000000057d1e9f0, RSI=0x000000005cdaf040, RDI=0x00000000b928ac30 26 | R8 =0x0000000000020000, R9 =0x000000005cdaf040, R10=0x0000000000000000, R11=0x00000000e0158690 27 | R12=0x0000000000000000, R13=0x0000000004197050, R14=0x00000000b918ac28, R15=0x000000002e81d000 28 | RIP=0x0000000002fa25fe, EFLAGS=0x0000000000000282 29 | 30 | Top of Stack: (sp=0x0000000057d1e9f0) 31 | 0x0000000057d1e9f0: 0000000000100010 0000000006a3941b 32 | 0x0000000057d1ea00: 0000000000000000 00007ffa2c836c07 33 | 0x0000000057d1ea10: 0000000000000000 0000000000000000 34 | 0x0000000057d1ea20: 0000000000000000 0429705000000000 35 | 0x0000000057d1ea30: 00000000a56e2138 00000000e0158690 36 | 0x0000000057d1ea40: 00000000fa3daec8 ffffffffffffffff 37 | 0x0000000057d1ea50: 00000000fa3daeb8 0429705000000000 38 | 0x0000000057d1ea60: 00000000e0158690 0000000000000000 39 | 0x0000000057d1ea70: 00000688d0d8aaf1 0000051e0000051e 40 | 0x0000000057d1ea80: 0000000000000009 00000001000bdca8 41 | 0x0000000057d1ea90: 0000000057d1ee58 0000000006e0c564 42 | 0x0000000057d1eaa0: 0000000000000009 00000000fa3daf28 43 | 0x0000000057d1eab0: 000000005cda0000 ffffffffffffffff 44 | 0x0000000057d1eac0: 00000000fa3daf08 0000000006480d55 45 | 0x0000000057d1ead0: 0000000057d1eba8 0000000057d1eaf0 46 | 0x0000000057d1eae0: 0000000000000000 0000000000000000 47 | 48 | Instructions: (pc=0x0000000002fa25fe) 49 | 0x0000000002fa25de: c3 90 48 8b 44 d7 e8 48 89 44 d1 e8 48 8b 44 d7 50 | 0x0000000002fa25ee: f0 48 89 44 d1 f0 48 8b 44 d7 f8 48 89 44 d1 f8 51 | 0x0000000002fa25fe: 48 8b 04 d7 48 89 04 d1 48 83 c2 04 7e d4 48 83 52 | 0x0000000002fa260e: ea 04 7c b3 49 8b f9 49 8b f2 48 33 c0 c9 c3 66 53 | 54 | 55 | Register to memory mapping: 56 | 57 | RAX=0x0000000000a5c4a4 is an unknown value 58 | RBX=0x000000005ceaf040 is an unknown value 59 | RCX=0x000000005ceaf038 is an unknown value 60 | RDX=0xffffffffffff9a34 is an unknown value 61 | RSP=0x0000000057d1e9f0 is pointing into the stack for thread: 0x000000002e81d000 62 | RBP=0x0000000057d1e9f0 is pointing into the stack for thread: 0x000000002e81d000 63 | RSI=0x000000005cdaf040 is an unknown value 64 | RDI=0x00000000b928ac30 is pointing into object: 0x00000000b918ac28 65 | [B 66 | - klass: {type array byte} 67 | - length: 69824592 68 | R8 =0x0000000000020000 is an unknown value 69 | R9 =0x000000005cdaf040 is an unknown value 70 | R10=0x0000000000000000 is an unknown value 71 | R11=0x00000000e0158690 is an oop 72 | java.nio.HeapByteBuffer 73 | - klass: 'java/nio/HeapByteBuffer' 74 | R12=0x0000000000000000 is an unknown value 75 | R13=0x0000000004197050 is at entry_point+2320 in (nmethod*)0x0000000004196510 76 | R14=0x00000000b918ac28 is an oop 77 | [B 78 | - klass: {type array byte} 79 | - length: 69824592 80 | R15=0x000000002e81d000 is a thread 81 | 82 | 83 | Stack: [0x0000000057c20000,0x0000000057d20000], sp=0x0000000057d1e9f0, free space=1018k 84 | Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) 85 | C 0x0000000002fa25fe 86 | 87 | 88 | --------------- P R O C E S S --------------- 89 | 90 | Java Threads: ( => current thread ) 91 | 0x000000002dc2a800 JavaThread "ForkJoinPool.commonPool-worker-9" daemon [_thread_blocked, id=74404, stack(0x0000000042d30000,0x0000000042e30000)] 92 | 0x000000002dc2c800 JavaThread "ForkJoinPool.commonPool-worker-0" daemon [_thread_blocked, id=31084, stack(0x0000000042c30000,0x0000000042d30000)] 93 | 0x000000002dc22800 JavaThread "ForkJoinPool.commonPool-worker-12" daemon [_thread_blocked, id=34936, stack(0x0000000042970000,0x0000000042a70000)] 94 | 0x000000002dc29000 JavaThread "ForkJoinPool.commonPool-worker-10" daemon [_thread_blocked, id=72396, stack(0x0000000042870000,0x0000000042970000)] 95 | 0x000000002dc26800 JavaThread "ForkJoinPool.commonPool-worker-1" daemon [_thread_blocked, id=76420, stack(0x0000000042770000,0x0000000042870000)] 96 | 0x000000002e81f000 JavaThread "ForkJoinPool.commonPool-worker-15" daemon [_thread_blocked, id=75336, stack(0x0000000042670000,0x0000000042770000)] 97 | 0x000000002e822000 JavaThread "WorkerExecutor Queue Thread 14" [_thread_blocked, id=73968, stack(0x0000000042570000,0x0000000042670000)] 98 | 0x000000002e825000 JavaThread "WorkerExecutor Queue Thread 13" [_thread_blocked, id=41668, stack(0x0000000040590000,0x0000000040690000)] 99 | 0x000000002e821800 JavaThread "RMI TCP Connection(30)-127.0.0.1" daemon [_thread_in_native, id=48044, stack(0x000000003fe70000,0x000000003ff70000)] 100 | 0x000000002e81c000 JavaThread "WorkerExecutor Queue Thread 12" [_thread_blocked, id=6880, stack(0x000000003d2c0000,0x000000003d3c0000)] 101 | 0x000000002e81a800 JavaThread "WorkerExecutor Queue Thread 11" [_thread_blocked, id=72708, stack(0x000000003af60000,0x000000003b060000)] 102 | 0x000000002e820800 JavaThread "RMI TCP Connection(29)-127.0.0.1" daemon [_thread_in_native, id=65000, stack(0x000000003a360000,0x000000003a460000)] 103 | 0x000000002e811800 JavaThread "RMI TCP Connection(28)-127.0.0.1" daemon [_thread_in_native, id=34156, stack(0x000000003a260000,0x000000003a360000)] 104 | 0x000000002e818800 JavaThread "WorkerExecutor Queue Thread 10" [_thread_blocked, id=75368, stack(0x0000000037a50000,0x0000000037b50000)] 105 | 0x000000002e816000 JavaThread "WorkerExecutor Queue Thread 9" [_thread_blocked, id=75192, stack(0x0000000036710000,0x0000000036810000)] 106 | 0x000000002e808800 JavaThread "WorkerExecutor Queue Thread 8" [_thread_blocked, id=67936, stack(0x0000000034620000,0x0000000034720000)] 107 | 0x000000002e808000 JavaThread "WorkerExecutor Queue Thread 7" [_thread_blocked, id=72052, stack(0x0000000033e00000,0x0000000033f00000)] 108 | 0x000000003b5e1800 JavaThread "WorkerExecutor Queue Thread 6" [_thread_blocked, id=50808, stack(0x0000000033d00000,0x0000000033e00000)] 109 | 0x000000003b5e1000 JavaThread "WorkerExecutor Queue Thread 5" [_thread_blocked, id=44232, stack(0x0000000033c00000,0x0000000033d00000)] 110 | 0x000000003b5e2800 JavaThread "WorkerExecutor Queue Thread 4" [_thread_blocked, id=14472, stack(0x0000000033b00000,0x0000000033c00000)] 111 | 0x000000003b5e0000 JavaThread "WorkerExecutor Queue Thread 3" [_thread_blocked, id=62104, stack(0x0000000033a00000,0x0000000033b00000)] 112 | 0x000000003b5d8800 JavaThread "WorkerExecutor Queue Thread 2" [_thread_blocked, id=39184, stack(0x0000000033400000,0x0000000033500000)] 113 | 0x000000003b5df800 JavaThread "WorkerExecutor Queue" [_thread_blocked, id=8516, stack(0x0000000033300000,0x0000000033400000)] 114 | 0x000000003b5d7000 JavaThread "Cache worker for execution history cache (S:\Projects\PhantomsXR\UnityProjects\ARMODs\Apps\Flutter\android\.gradle\6.7\executionHistory)" [_thread_blocked, id=35664, stack(0x0000000033200000,0x0000000033300000)] 115 | 0x000000003b5de000 JavaThread "Execution worker for ':' Thread 15" [_thread_blocked, id=46712, stack(0x0000000032f00000,0x0000000033000000)] 116 | 0x000000003b5dd000 JavaThread "Execution worker for ':' Thread 14" [_thread_blocked, id=52808, stack(0x0000000032e00000,0x0000000032f00000)] 117 | 0x000000003b5d7800 JavaThread "Execution worker for ':' Thread 13" [_thread_blocked, id=69416, stack(0x0000000032d00000,0x0000000032e00000)] 118 | 0x000000003b5d9000 JavaThread "Execution worker for ':' Thread 12" [_thread_blocked, id=60956, stack(0x0000000032c00000,0x0000000032d00000)] 119 | 0x000000003b5d6000 JavaThread "Execution worker for ':' Thread 11" [_thread_blocked, id=45384, stack(0x0000000032b00000,0x0000000032c00000)] 120 | 0x000000003b5d5800 JavaThread "Execution worker for ':' Thread 10" [_thread_blocked, id=67160, stack(0x0000000032a00000,0x0000000032b00000)] 121 | 0x000000003b5da000 JavaThread "Execution worker for ':' Thread 9" [_thread_blocked, id=68776, stack(0x0000000032900000,0x0000000032a00000)] 122 | 0x000000003b5db000 JavaThread "Execution worker for ':' Thread 8" [_thread_blocked, id=58792, stack(0x0000000032800000,0x0000000032900000)] 123 | 0x000000003b5db800 JavaThread "Execution worker for ':' Thread 7" [_thread_blocked, id=52368, stack(0x0000000032700000,0x0000000032800000)] 124 | 0x000000003b5ce000 JavaThread "Execution worker for ':' Thread 6" [_thread_blocked, id=58312, stack(0x0000000032600000,0x0000000032700000)] 125 | 0x000000003b5d3000 JavaThread "Execution worker for ':' Thread 5" [_thread_blocked, id=62712, stack(0x0000000032500000,0x0000000032600000)] 126 | 0x000000003b5ce800 JavaThread "Execution worker for ':' Thread 4" [_thread_blocked, id=67920, stack(0x0000000032400000,0x0000000032500000)] 127 | 0x000000003b5d2800 JavaThread "Execution worker for ':' Thread 3" [_thread_blocked, id=42284, stack(0x0000000032300000,0x0000000032400000)] 128 | 0x000000003b5cf800 JavaThread "Execution worker for ':' Thread 2" [_thread_blocked, id=59776, stack(0x0000000032000000,0x0000000032100000)] 129 | 0x000000003b5d1800 JavaThread "Execution worker for ':'" [_thread_blocked, id=74224, stack(0x000000002bde0000,0x000000002bee0000)] 130 | 0x000000003b5d1000 JavaThread "jar transforms Thread 784" [_thread_blocked, id=43204, stack(0x000000002bce0000,0x000000002bde0000)] 131 | 0x000000003b5c6800 JavaThread "jar transforms Thread 783" [_thread_blocked, id=43724, stack(0x000000002bbe0000,0x000000002bce0000)] 132 | 0x000000003b5cd000 JavaThread "jar transforms Thread 782" [_thread_blocked, id=62860, stack(0x000000002bae0000,0x000000002bbe0000)] 133 | 0x000000003b5cb800 JavaThread "jar transforms Thread 781" [_thread_blocked, id=71140, stack(0x000000002b9e0000,0x000000002bae0000)] 134 | 0x000000003b5cb000 JavaThread "jar transforms Thread 780" [_thread_blocked, id=57740, stack(0x000000002b8e0000,0x000000002b9e0000)] 135 | 0x000000003b5ca000 JavaThread "jar transforms Thread 779" [_thread_blocked, id=61664, stack(0x000000002b7e0000,0x000000002b8e0000)] 136 | 0x000000003b5c5800 JavaThread "jar transforms Thread 778" [_thread_blocked, id=54888, stack(0x000000002b6e0000,0x000000002b7e0000)] 137 | 0x000000003b5c9800 JavaThread "jar transforms Thread 777" [_thread_blocked, id=74444, stack(0x000000002b5e0000,0x000000002b6e0000)] 138 | 0x000000003b5cc800 JavaThread "jar transforms Thread 776" [_thread_blocked, id=68472, stack(0x000000002b4e0000,0x000000002b5e0000)] 139 | 0x000000003b5c5000 JavaThread "jar transforms Thread 775" [_thread_blocked, id=59984, stack(0x000000002b3e0000,0x000000002b4e0000)] 140 | 0x000000003b5c4000 JavaThread "jar transforms Thread 774" [_thread_blocked, id=73852, stack(0x000000002b2e0000,0x000000002b3e0000)] 141 | 0x000000003b5c8000 JavaThread "jar transforms Thread 773" [_thread_blocked, id=57788, stack(0x000000002b1e0000,0x000000002b2e0000)] 142 | 0x000000003b5c7000 JavaThread "jar transforms Thread 772" [_thread_blocked, id=69516, stack(0x000000002b0e0000,0x000000002b1e0000)] 143 | 0x000000002e4ff000 JavaThread "jar transforms Thread 771" [_thread_blocked, id=60520, stack(0x000000002afe0000,0x000000002b0e0000)] 144 | 0x000000002e504800 JavaThread "jar transforms Thread 770" [_thread_blocked, id=54368, stack(0x000000002aee0000,0x000000002afe0000)] 145 | 0x000000002e503800 JavaThread "jar transforms Thread 769" [_thread_blocked, id=1232, stack(0x000000002ade0000,0x000000002aee0000)] 146 | 0x000000002e502000 JavaThread "jar transforms Thread 768" [_thread_blocked, id=74576, stack(0x000000002ace0000,0x000000002ade0000)] 147 | 0x000000002e503000 JavaThread "jar transforms Thread 767" [_thread_blocked, id=65992, stack(0x000000002abe0000,0x000000002ace0000)] 148 | 0x000000002e501800 JavaThread "jar transforms Thread 766" [_thread_blocked, id=74704, stack(0x000000002aae0000,0x000000002abe0000)] 149 | 0x000000002e500800 JavaThread "jar transforms Thread 765" [_thread_blocked, id=59856, stack(0x000000002a9e0000,0x000000002aae0000)] 150 | 0x000000002e505000 JavaThread "jar transforms Thread 764" [_thread_blocked, id=76560, stack(0x000000002a8e0000,0x000000002a9e0000)] 151 | 0x000000002e4fe800 JavaThread "jar transforms Thread 763" [_thread_blocked, id=48988, stack(0x000000002a7e0000,0x000000002a8e0000)] 152 | 0x000000002e500000 JavaThread "jar transforms Thread 762" [_thread_blocked, id=75316, stack(0x000000002a6e0000,0x000000002a7e0000)] 153 | 0x000000002e4fd800 JavaThread "jar transforms Thread 761" [_thread_blocked, id=75584, stack(0x000000002a5e0000,0x000000002a6e0000)] 154 | 0x000000002e4fd000 JavaThread "jar transforms Thread 760" [_thread_blocked, id=74696, stack(0x000000002a4e0000,0x000000002a5e0000)] 155 | 0x000000002e4f5800 JavaThread "jar transforms Thread 759" [_thread_blocked, id=75704, stack(0x000000002a3e0000,0x000000002a4e0000)] 156 | 0x000000002e4fc000 JavaThread "jar transforms Thread 758" [_thread_blocked, id=40420, stack(0x000000002a2e0000,0x000000002a3e0000)] 157 | 0x000000002e4fb800 JavaThread "jar transforms Thread 757" [_thread_blocked, id=28560, stack(0x000000002a1e0000,0x000000002a2e0000)] 158 | 0x000000002e4f4000 JavaThread "jar transforms Thread 756" [_thread_blocked, id=72036, stack(0x000000002a0e0000,0x000000002a1e0000)] 159 | 0x000000002e4f4800 JavaThread "jar transforms Thread 755" [_thread_blocked, id=56280, stack(0x0000000029fe0000,0x000000002a0e0000)] 160 | 0x000000002e4fa800 JavaThread "jar transforms Thread 754" [_thread_blocked, id=33968, stack(0x0000000029ee0000,0x0000000029fe0000)] 161 | 0x000000002e4f9000 JavaThread "jar transforms Thread 753" [_thread_blocked, id=76140, stack(0x0000000029de0000,0x0000000029ee0000)] 162 | 0x000000002e4f6000 JavaThread "jar transforms Thread 752" [_thread_blocked, id=38364, stack(0x0000000029ce0000,0x0000000029de0000)] 163 | 0x000000002e4f7000 JavaThread "jar transforms Thread 751" [_thread_blocked, id=24704, stack(0x0000000029be0000,0x0000000029ce0000)] 164 | 0x000000002e4fa000 JavaThread "jar transforms Thread 750" [_thread_blocked, id=64000, stack(0x0000000029ae0000,0x0000000029be0000)] 165 | 0x000000002e4f3000 JavaThread "jar transforms Thread 749" [_thread_blocked, id=63752, stack(0x00000000299e0000,0x0000000029ae0000)] 166 | 0x000000002e4f1800 JavaThread "jar transforms Thread 748" [_thread_blocked, id=58172, stack(0x00000000298e0000,0x00000000299e0000)] 167 | 0x000000002e4f8800 JavaThread "jar transforms Thread 747" [_thread_blocked, id=70728, stack(0x00000000297e0000,0x00000000298e0000)] 168 | 0x000000002e4f2800 JavaThread "jar transforms Thread 746" [_thread_blocked, id=12964, stack(0x00000000296e0000,0x00000000297e0000)] 169 | 0x000000002e4f7800 JavaThread "jar transforms Thread 745" [_thread_blocked, id=70772, stack(0x00000000295e0000,0x00000000296e0000)] 170 | 0x000000002e4ea000 JavaThread "jar transforms Thread 744" [_thread_blocked, id=36916, stack(0x00000000294e0000,0x00000000295e0000)] 171 | 0x000000002e4f0000 JavaThread "jar transforms Thread 743" [_thread_blocked, id=24652, stack(0x00000000293e0000,0x00000000294e0000)] 172 | 0x000000002e4e8800 JavaThread "jar transforms Thread 742" [_thread_blocked, id=61848, stack(0x00000000292e0000,0x00000000293e0000)] 173 | 0x000000002e4ee800 JavaThread "jar transforms Thread 741" [_thread_blocked, id=42244, stack(0x00000000291e0000,0x00000000292e0000)] 174 | 0x000000002e4e7000 JavaThread "jar transforms Thread 740" [_thread_blocked, id=61692, stack(0x00000000290e0000,0x00000000291e0000)] 175 | 0x000000002e4ee000 JavaThread "jar transforms Thread 739" [_thread_blocked, id=63576, stack(0x0000000028fe0000,0x00000000290e0000)] 176 | 0x000000002e4eb000 JavaThread "jar transforms Thread 738" [_thread_blocked, id=12948, stack(0x0000000028ee0000,0x0000000028fe0000)] 177 | 0x000000002e4e6800 JavaThread "jar transforms Thread 737" [_thread_blocked, id=62572, stack(0x0000000028de0000,0x0000000028ee0000)] 178 | 0x000000002e4ec800 JavaThread "jar transforms Thread 736" [_thread_blocked, id=59508, stack(0x0000000028ce0000,0x0000000028de0000)] 179 | 0x000000002e4ed000 JavaThread "jar transforms Thread 735" [_thread_blocked, id=49804, stack(0x0000000028be0000,0x0000000028ce0000)] 180 | 0x000000002f2c6800 JavaThread "jar transforms Thread 734" [_thread_blocked, id=34704, stack(0x0000000028ae0000,0x0000000028be0000)] 181 | 0x000000002f2bf000 JavaThread "jar transforms Thread 733" [_thread_blocked, id=20496, stack(0x00000000289e0000,0x0000000028ae0000)] 182 | 0x000000002f2c4000 JavaThread "jar transforms Thread 732" [_thread_blocked, id=61216, stack(0x00000000288e0000,0x00000000289e0000)] 183 | 0x000000002f2c2000 JavaThread "jar transforms Thread 731" [_thread_blocked, id=67552, stack(0x00000000287e0000,0x00000000288e0000)] 184 | 0x000000002f2c5000 JavaThread "jar transforms Thread 730" [_thread_blocked, id=74604, stack(0x00000000286e0000,0x00000000287e0000)] 185 | 0x000000002f2c1000 JavaThread "jar transforms Thread 729" [_thread_blocked, id=58552, stack(0x00000000285e0000,0x00000000286e0000)] 186 | 0x000000002f2c0800 JavaThread "jar transforms Thread 728" [_thread_blocked, id=19740, stack(0x00000000284e0000,0x00000000285e0000)] 187 | 0x000000002f2c3800 JavaThread "jar transforms Thread 727" [_thread_blocked, id=37516, stack(0x00000000283e0000,0x00000000284e0000)] 188 | 0x000000002f2c5800 JavaThread "jar transforms Thread 726" [_thread_blocked, id=64468, stack(0x00000000282e0000,0x00000000283e0000)] 189 | 0x000000002f2bf800 JavaThread "jar transforms Thread 725" [_thread_blocked, id=73528, stack(0x00000000281e0000,0x00000000282e0000)] 190 | 0x000000002f2c2800 JavaThread "jar transforms Thread 724" [_thread_blocked, id=34864, stack(0x00000000280e0000,0x00000000281e0000)] 191 | 0x000000002f2b7800 JavaThread "jar transforms Thread 723" [_thread_blocked, id=37104, stack(0x0000000027fe0000,0x00000000280e0000)] 192 | 0x000000002f2be000 JavaThread "jar transforms Thread 722" [_thread_blocked, id=14832, stack(0x0000000027ee0000,0x0000000027fe0000)] 193 | 0x000000002f2bd800 JavaThread "jar transforms Thread 721" [_thread_blocked, id=59800, stack(0x0000000027de0000,0x0000000027ee0000)] 194 | 0x000000002f2bc800 JavaThread "jar transforms Thread 720" [_thread_blocked, id=73696, stack(0x0000000027ce0000,0x0000000027de0000)] 195 | 0x000000002f2b5000 JavaThread "jar transforms Thread 719" [_thread_blocked, id=67472, stack(0x0000000027ae0000,0x0000000027be0000)] 196 | 0x000000002f2b9000 JavaThread "jar transforms Thread 718" [_thread_blocked, id=63364, stack(0x00000000279e0000,0x0000000027ae0000)] 197 | 0x000000002f2b8000 JavaThread "jar transforms Thread 717" [_thread_blocked, id=43612, stack(0x00000000278e0000,0x00000000279e0000)] 198 | 0x000000002f2bc000 JavaThread "jar transforms Thread 716" [_thread_blocked, id=73200, stack(0x00000000277e0000,0x00000000278e0000)] 199 | 0x000000002f2bb000 JavaThread "jar transforms Thread 715" [_thread_blocked, id=51868, stack(0x00000000276e0000,0x00000000277e0000)] 200 | 0x000000002f2b6000 JavaThread "jar transforms Thread 714" [_thread_blocked, id=73648, stack(0x00000000275e0000,0x00000000276e0000)] 201 | 0x000000002f2ba800 JavaThread "jar transforms Thread 713" [_thread_blocked, id=74420, stack(0x00000000274e0000,0x00000000275e0000)] 202 | 0x000000002f2b6800 JavaThread "jar transforms Thread 712" [_thread_blocked, id=69932, stack(0x00000000273e0000,0x00000000274e0000)] 203 | 0x000000002f2b4800 JavaThread "jar transforms Thread 711" [_thread_blocked, id=63004, stack(0x00000000272e0000,0x00000000273e0000)] 204 | 0x000000002f2b3800 JavaThread "jar transforms Thread 710" [_thread_blocked, id=21496, stack(0x00000000271e0000,0x00000000272e0000)] 205 | 0x000000002f2b9800 JavaThread "jar transforms Thread 709" [_thread_blocked, id=51876, stack(0x00000000270e0000,0x00000000271e0000)] 206 | 0x000000002f2b3000 JavaThread "jar transforms Thread 708" [_thread_blocked, id=38056, stack(0x0000000026fe0000,0x00000000270e0000)] 207 | 0x000000002f2ad000 JavaThread "jar transforms Thread 707" [_thread_blocked, id=69640, stack(0x0000000026ee0000,0x0000000026fe0000)] 208 | 0x000000002f2b2000 JavaThread "jar transforms Thread 706" [_thread_blocked, id=63548, stack(0x0000000026de0000,0x0000000026ee0000)] 209 | 0x000000002f2ac000 JavaThread "jar transforms Thread 705" [_thread_blocked, id=72368, stack(0x0000000026ce0000,0x0000000026de0000)] 210 | 0x000000002f2b1800 JavaThread "jar transforms Thread 704" [_thread_blocked, id=41288, stack(0x0000000026be0000,0x0000000026ce0000)] 211 | 0x000000002f2b0800 JavaThread "jar transforms Thread 703" [_thread_blocked, id=54004, stack(0x0000000026ae0000,0x0000000026be0000)] 212 | 0x000000002f2a9000 JavaThread "jar transforms Thread 702" [_thread_blocked, id=40248, stack(0x00000000269e0000,0x0000000026ae0000)] 213 | 0x000000002f2af000 JavaThread "jar transforms Thread 701" [_thread_blocked, id=74072, stack(0x00000000268e0000,0x00000000269e0000)] 214 | 0x000000002f2b0000 JavaThread "jar transforms Thread 700" [_thread_blocked, id=5604, stack(0x00000000267e0000,0x00000000268e0000)] 215 | 0x000000002f2a7800 JavaThread "jar transforms Thread 699" [_thread_blocked, id=72484, stack(0x00000000266e0000,0x00000000267e0000)] 216 | 0x000000002f2aa800 JavaThread "jar transforms Thread 698" [_thread_blocked, id=37272, stack(0x00000000265e0000,0x00000000266e0000)] 217 | 0x000000002f2a8800 JavaThread "jar transforms Thread 697" [_thread_blocked, id=56124, stack(0x00000000264e0000,0x00000000265e0000)] 218 | 0x000000002f2ab800 JavaThread "jar transforms Thread 696" [_thread_blocked, id=75552, stack(0x00000000263e0000,0x00000000264e0000)] 219 | 0x0000000030d25800 JavaThread "jar transforms Thread 695" [_thread_blocked, id=75656, stack(0x00000000262e0000,0x00000000263e0000)] 220 | 0x0000000030d25000 JavaThread "jar transforms Thread 694" [_thread_blocked, id=58420, stack(0x00000000261e0000,0x00000000262e0000)] 221 | 0x0000000030d24000 JavaThread "jar transforms Thread 693" [_thread_blocked, id=4968, stack(0x00000000260e0000,0x00000000261e0000)] 222 | 0x0000000030d1c800 JavaThread "jar transforms Thread 692" [_thread_blocked, id=67424, stack(0x0000000025fe0000,0x00000000260e0000)] 223 | 0x0000000030d23800 JavaThread "jar transforms Thread 691" [_thread_blocked, id=59312, stack(0x0000000025ee0000,0x0000000025fe0000)] 224 | 0x0000000030d22000 JavaThread "jar transforms Thread 690" [_thread_blocked, id=35284, stack(0x0000000025de0000,0x0000000025ee0000)] 225 | 0x0000000030d21000 JavaThread "jar transforms Thread 689" [_thread_blocked, id=47476, stack(0x0000000025ce0000,0x0000000025de0000)] 226 | 0x0000000030d22800 JavaThread "jar transforms Thread 688" [_thread_blocked, id=62416, stack(0x0000000025be0000,0x0000000025ce0000)] 227 | 0x0000000030d1c000 JavaThread "jar transforms Thread 687" [_thread_blocked, id=64760, stack(0x0000000025ae0000,0x0000000025be0000)] 228 | 0x0000000030d20800 JavaThread "jar transforms Thread 686" [_thread_blocked, id=66208, stack(0x00000000259e0000,0x0000000025ae0000)] 229 | 0x0000000030d1f000 JavaThread "jar transforms Thread 685" [_thread_blocked, id=74588, stack(0x00000000258e0000,0x00000000259e0000)] 230 | 0x0000000030d1d800 JavaThread "jar transforms Thread 684" [_thread_blocked, id=76136, stack(0x00000000257e0000,0x00000000258e0000)] 231 | 0x0000000030d1e000 JavaThread "jar transforms Thread 683" [_thread_blocked, id=47836, stack(0x00000000256e0000,0x00000000257e0000)] 232 | 0x0000000030d1f800 JavaThread "jar transforms Thread 682" [_thread_blocked, id=67380, stack(0x00000000255e0000,0x00000000256e0000)] 233 | 0x0000000030d1b000 JavaThread "jar transforms Thread 681" [_thread_blocked, id=59892, stack(0x00000000254e0000,0x00000000255e0000)] 234 | 0x0000000030d13800 JavaThread "jar transforms Thread 680" [_thread_blocked, id=72168, stack(0x00000000253e0000,0x00000000254e0000)] 235 | 0x0000000030d1a800 JavaThread "jar transforms Thread 679" [_thread_blocked, id=58868, stack(0x00000000252e0000,0x00000000253e0000)] 236 | 0x0000000030d13000 JavaThread "jar transforms Thread 678" [_thread_blocked, id=68264, stack(0x00000000251e0000,0x00000000252e0000)] 237 | 0x0000000030d19800 JavaThread "jar transforms Thread 677" [_thread_blocked, id=53572, stack(0x00000000250e0000,0x00000000251e0000)] 238 | 0x0000000030d12000 JavaThread "jar transforms Thread 676" [_thread_blocked, id=57332, stack(0x0000000024fe0000,0x00000000250e0000)] 239 | 0x0000000030d11800 JavaThread "jar transforms Thread 675" [_thread_blocked, id=42860, stack(0x0000000024ee0000,0x0000000024fe0000)] 240 | 0x0000000030d16800 JavaThread "jar transforms Thread 674" [_thread_blocked, id=42268, stack(0x0000000024de0000,0x0000000024ee0000)] 241 | 0x0000000030d18000 JavaThread "jar transforms Thread 673" [_thread_blocked, id=16804, stack(0x0000000024ce0000,0x0000000024de0000)] 242 | 0x0000000030d17800 JavaThread "Build operations Thread 16" [_thread_blocked, id=74236, stack(0x0000000024be0000,0x0000000024ce0000)] 243 | 0x0000000030d0f000 JavaThread "Build operations Thread 15" [_thread_blocked, id=69256, stack(0x0000000024ae0000,0x0000000024be0000)] 244 | 0x0000000030d16000 JavaThread "Build operations Thread 14" [_thread_blocked, id=26008, stack(0x00000000249e0000,0x0000000024ae0000)] 245 | 0x0000000030d10800 JavaThread "Build operations Thread 13" [_thread_blocked, id=46616, stack(0x00000000248e0000,0x00000000249e0000)] 246 | 0x0000000030d15000 JavaThread "Build operations Thread 12" [_thread_blocked, id=68440, stack(0x00000000247e0000,0x00000000248e0000)] 247 | 0x0000000030d14800 JavaThread "Build operations Thread 11" [_thread_blocked, id=47816, stack(0x00000000246e0000,0x00000000247e0000)] 248 | 0x0000000030d10000 JavaThread "Build operations Thread 10" [_thread_blocked, id=76116, stack(0x00000000245e0000,0x00000000246e0000)] 249 | 0x0000000030d07800 JavaThread "Build operations Thread 9" [_thread_blocked, id=67856, stack(0x00000000244e0000,0x00000000245e0000)] 250 | 0x0000000030d0d000 JavaThread "Build operations Thread 8" [_thread_blocked, id=38380, stack(0x00000000243e0000,0x00000000244e0000)] 251 | 0x0000000030d0e800 JavaThread "Build operations Thread 7" [_thread_blocked, id=70536, stack(0x00000000242e0000,0x00000000243e0000)] 252 | 0x0000000030d07000 JavaThread "Build operations Thread 6" [_thread_blocked, id=74316, stack(0x00000000241e0000,0x00000000242e0000)] 253 | 0x0000000030d0c000 JavaThread "Build operations Thread 5" [_thread_blocked, id=23764, stack(0x00000000240e0000,0x00000000241e0000)] 254 | 0x0000000030d0a000 JavaThread "Build operations Thread 4" [_thread_blocked, id=62944, stack(0x0000000023de0000,0x0000000023ee0000)] 255 | 0x0000000030d0b800 JavaThread "Build operations Thread 3" [_thread_blocked, id=5072, stack(0x00000000235e0000,0x00000000236e0000)] 256 | 0x0000000030d0a800 JavaThread "Build operations Thread 2" [_thread_blocked, id=69908, stack(0x0000000022de0000,0x0000000022ee0000)] 257 | 0x0000000030d09000 JavaThread "Build operations" [_thread_blocked, id=67084, stack(0x0000000022ce0000,0x0000000022de0000)] 258 | 0x0000000030d08800 JavaThread "Cache worker for Build Output Cleanup Cache (S:\Projects\PhantomsXR\UnityProjects\ARMODs\Apps\Flutter\android\.gradle\buildOutputCleanup)" [_thread_blocked, id=65540, stack(0x0000000021740000,0x0000000021840000)] 259 | 0x0000000030d0d800 JavaThread "Cache worker for cache directory md-rule (C:\Users\Administrator\.gradle\caches\6.7\md-rule)" [_thread_blocked, id=44188, stack(0x0000000021640000,0x0000000021740000)] 260 | 0x000000001dc90000 JavaThread "Cache worker for cache directory md-supplier (C:\Users\Administrator\.gradle\caches\6.7\md-supplier)" [_thread_blocked, id=47776, stack(0x000000001eea0000,0x000000001efa0000)] 261 | 0x000000001dc8d800 JavaThread "Cache worker for checksums cache (S:\Projects\PhantomsXR\UnityProjects\ARMODs\Apps\Flutter\android\.gradle\checksums)" [_thread_blocked, id=47184, stack(0x000000001eda0000,0x000000001eea0000)] 262 | 0x000000001dc8d000 JavaThread "Cache worker for file hash cache (S:\Projects\PhantomsXR\UnityProjects\ARMODs\Apps\Flutter\android\.gradle\6.7\fileHashes)" [_thread_blocked, id=24068, stack(0x000000001eca0000,0x000000001eda0000)] 263 | 0x000000001dc83000 JavaThread "Thread-1301" [_thread_blocked, id=74260, stack(0x000000001eba0000,0x000000001eca0000)] 264 | 0x000000001dc8a000 JavaThread "Stdin handler" [_thread_blocked, id=43988, stack(0x000000001e9a0000,0x000000001eaa0000)] 265 | 0x000000001dc82800 JavaThread "Asynchronous log dispatcher for DefaultDaemonConnection: socket connection from /127.0.0.1:61043 to /127.0.0.1:55649" [_thread_blocked, id=60040, stack(0x000000001e8a0000,0x000000001e9a0000)] 266 | 0x000000001dc87000 JavaThread "Cancel handler" [_thread_blocked, id=52760, stack(0x000000001e2f0000,0x000000001e3f0000)] 267 | 0x000000001dc84000 JavaThread "Handler for socket connection from /127.0.0.1:61043 to /127.0.0.1:55649" [_thread_in_native, id=27808, stack(0x000000001e1f0000,0x000000001e2f0000)] 268 | 0x000000001dc89000 JavaThread "ForkJoinPool.commonPool-worker-8" daemon [_thread_blocked, id=76216, stack(0x00000000465c0000,0x00000000466c0000)] 269 | 0x000000001dc88800 JavaThread "ForkJoinPool.commonPool-worker-6" daemon [_thread_blocked, id=76096, stack(0x0000000045810000,0x0000000045910000)] 270 | 0x000000001dc87800 JavaThread "ForkJoinPool.commonPool-worker-13" daemon [_thread_blocked, id=41684, stack(0x0000000045400000,0x0000000045500000)] 271 | 0x000000001dc85800 JavaThread "ForkJoinPool.commonPool-worker-4" daemon [_thread_blocked, id=68388, stack(0x0000000045300000,0x0000000045400000)] 272 | 0x000000002e823000 JavaThread "ForkJoinPool.commonPool-worker-7" daemon [_thread_blocked, id=69624, stack(0x0000000040380000,0x0000000040480000)] 273 | 0x000000002dc30800 JavaThread "ForkJoinPool.commonPool-worker-2" daemon [_thread_in_native, id=47364, stack(0x0000000045200000,0x0000000045300000)] 274 | 0x000000002dc21000 JavaThread "RMI TCP Connection(31)-127.0.0.1" daemon [_thread_in_native, id=67072, stack(0x000000003f900000,0x000000003fa00000)] 275 | 0x000000002e814800 JavaThread "Exec process Thread 15" [_thread_blocked, id=69484, stack(0x0000000033700000,0x0000000033800000)] 276 | 0x000000002e814000 JavaThread "Exec process Thread 14" [_thread_blocked, id=43604, stack(0x0000000033600000,0x0000000033700000)] 277 | 0x000000002e813000 JavaThread "Exec process Thread 13" [_thread_blocked, id=364, stack(0x0000000033500000,0x0000000033600000)] 278 | 0x000000002e4e9800 JavaThread "Daemon worker Thread 6" [_thread_blocked, id=41764, stack(0x000000001eaa0000,0x000000001eba0000)] 279 | 0x000000002e4eb800 JavaThread "Daemon Thread 6" [_thread_blocked, id=7012, stack(0x0000000000d10000,0x0000000000e10000)] 280 | 0x000000002dc29800 JavaThread "ForkJoinPool.commonPool-worker-14" daemon [_thread_blocked, id=74872, stack(0x0000000034c40000,0x0000000034d40000)] 281 | 0x000000001d442800 JavaThread "ForkJoinPool.commonPool-worker-5" daemon [_thread_blocked, id=70132, stack(0x0000000047900000,0x0000000047a00000)] 282 | =>0x000000002e81d000 JavaThread "ForkJoinPool.commonPool-worker-3" daemon [_thread_in_Java, id=74820, stack(0x0000000057c20000,0x0000000057d20000)] 283 | 0x000000002e80b000 JavaThread "RMI Reaper" [_thread_blocked, id=63612, stack(0x0000000034b40000,0x0000000034c40000)] 284 | 0x000000002e80a000 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=61764, stack(0x0000000034820000,0x0000000034920000)] 285 | 0x000000002e80e800 JavaThread "GC Daemon" daemon [_thread_blocked, id=40608, stack(0x0000000034720000,0x0000000034820000)] 286 | 0x000000002e806800 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=75772, stack(0x0000000034300000,0x0000000034400000)] 287 | 0x000000001dc84800 JavaThread "Memory manager" [_thread_blocked, id=4372, stack(0x000000002c6e0000,0x000000002c7e0000)] 288 | 0x000000001d444000 JavaThread "Cache worker for file content cache (C:\Users\Administrator\.gradle\caches\6.7\fileContent)" [_thread_blocked, id=69644, stack(0x00000000236e0000,0x00000000237e0000)] 289 | 0x000000001d43c800 JavaThread "Cache worker for execution history cache (C:\Users\Administrator\.gradle\caches\6.7\executionHistory)" [_thread_blocked, id=40900, stack(0x0000000022ee0000,0x0000000022fe0000)] 290 | 0x000000001d43e800 JavaThread "Cache worker for journal cache (C:\Users\Administrator\.gradle\caches\journal-1)" [_thread_blocked, id=58880, stack(0x000000001f3a0000,0x000000001f4a0000)] 291 | 0x0000000018d0c800 JavaThread "File lock request listener" [_thread_in_native, id=72516, stack(0x000000001f2a0000,0x000000001f3a0000)] 292 | 0x000000001d3e4000 JavaThread "Cache worker for file hash cache (C:\Users\Administrator\.gradle\caches\6.7\fileHashes)" [_thread_blocked, id=65948, stack(0x000000001f1a0000,0x000000001f2a0000)] 293 | 0x000000001d1cf800 JavaThread "Daemon periodic checks" [_thread_blocked, id=50104, stack(0x000000001e5a0000,0x000000001e6a0000)] 294 | 0x000000001d1ba000 JavaThread "Incoming local TCP Connector on port 61043" [_thread_in_native, id=65332, stack(0x000000001e3f0000,0x000000001e4f0000)] 295 | 0x000000001d0d2800 JavaThread "Daemon health stats" [_thread_blocked, id=58348, stack(0x000000001e0f0000,0x000000001e1f0000)] 296 | 0x0000000018dec000 JavaThread "Service Thread" daemon [_thread_blocked, id=72888, stack(0x000000001b550000,0x000000001b650000)] 297 | 0x0000000018d08800 JavaThread "C1 CompilerThread11" daemon [_thread_blocked, id=74376, stack(0x000000001b450000,0x000000001b550000)] 298 | 0x0000000018d0b800 JavaThread "C1 CompilerThread10" daemon [_thread_blocked, id=74244, stack(0x000000001b350000,0x000000001b450000)] 299 | 0x0000000018d0d000 JavaThread "C1 CompilerThread9" daemon [_thread_blocked, id=48748, stack(0x000000001b250000,0x000000001b350000)] 300 | 0x0000000018d0b000 JavaThread "C1 CompilerThread8" daemon [_thread_blocked, id=70500, stack(0x000000001b050000,0x000000001b150000)] 301 | 0x0000000018d0f800 JavaThread "C2 CompilerThread7" daemon [_thread_in_native, id=73144, stack(0x000000001af50000,0x000000001b050000)] 302 | 0x0000000018d0e800 JavaThread "C2 CompilerThread6" daemon [_thread_in_native, id=44804, stack(0x000000001ae50000,0x000000001af50000)] 303 | 0x0000000018d0e000 JavaThread "C2 CompilerThread5" daemon [_thread_in_native, id=56488, stack(0x000000001ad50000,0x000000001ae50000)] 304 | 0x0000000018d09800 JavaThread "C2 CompilerThread4" daemon [_thread_in_native, id=43492, stack(0x000000001ac50000,0x000000001ad50000)] 305 | 0x0000000018d0a000 JavaThread "C2 CompilerThread3" daemon [_thread_in_native, id=73092, stack(0x000000001ab50000,0x000000001ac50000)] 306 | 0x0000000018d06000 JavaThread "C2 CompilerThread2" daemon [_thread_in_native, id=61840, stack(0x000000001aa50000,0x000000001ab50000)] 307 | 0x0000000018d01000 JavaThread "C2 CompilerThread1" daemon [_thread_in_vm, id=75440, stack(0x000000001a950000,0x000000001aa50000)] 308 | 0x0000000018cfe800 JavaThread "C2 CompilerThread0" daemon [_thread_in_native, id=44688, stack(0x000000001a850000,0x000000001a950000)] 309 | 0x0000000018ca9800 JavaThread "Attach Listener" daemon [_thread_blocked, id=64904, stack(0x000000001a750000,0x000000001a850000)] 310 | 0x0000000018ca6800 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=72824, stack(0x000000001a650000,0x000000001a750000)] 311 | 0x0000000018c86800 JavaThread "Finalizer" daemon [_thread_blocked, id=70024, stack(0x000000001a4e0000,0x000000001a5e0000)] 312 | 0x0000000017209800 JavaThread "Reference Handler" daemon [_thread_blocked, id=68784, stack(0x000000001a3e0000,0x000000001a4e0000)] 313 | 0x0000000002e52800 JavaThread "main" [_thread_blocked, id=67960, stack(0x0000000002d50000,0x0000000002e50000)] 314 | 315 | Other Threads: 316 | 0x0000000018c64000 VMThread [stack: 0x000000001a2e0000,0x000000001a3e0000] [id=60700] 317 | 0x0000000018df1800 WatcherThread [stack: 0x000000001b650000,0x000000001b750000] [id=72212] 318 | 319 | VM state:not at safepoint (normal execution) 320 | 321 | VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) 322 | [0x0000000002e50bd0] CompiledIC_lock - owner thread: 0x0000000018d01000 323 | 324 | Heap: 325 | PSYoungGen total 258560K, used 85391K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000) 326 | eden space 175104K, 1% used [0x00000000e0000000,0x00000000e01e55e0,0x00000000eab00000) 327 | from space 83456K, 99% used [0x00000000fa380000,0x00000000ff4fe980,0x00000000ff500000) 328 | to space 174592K, 0% used [0x00000000eab00000,0x00000000eab00000,0x00000000f5580000) 329 | ParOldGen total 1048576K, used 640299K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 330 | object space 1048576K, 61% used [0x00000000a0000000,0x00000000c714acd0,0x00000000e0000000) 331 | Metaspace used 168249K, capacity 181307K, committed 181440K, reserved 1208320K 332 | class space used 21243K, capacity 23516K, committed 23528K, reserved 1048576K 333 | 334 | Card table byte_map: [0x0000000012310000,0x0000000012620000] byte_map_base: 0x0000000011e10000 335 | 336 | Marking Bits: (ParMarkBitMap*) 0x000000005bd5be50 337 | Begin Bits: [0x0000000013520000, 0x0000000014d20000) 338 | End Bits: [0x0000000014d20000, 0x0000000016520000) 339 | 340 | Polling page: 0x00000000010a0000 341 | 342 | CodeCache: size=245760Kb used=126387Kb max_used=127231Kb free=119372Kb 343 | bounds [0x0000000002f50000, 0x000000000ac60000, 0x0000000011f50000] 344 | total_blobs=35690 nmethods=34693 adapters=901 345 | compilation: enabled 346 | 347 | Compilation events (10 events): 348 | Event: 1051.121 Thread 0x0000000018d0b800 45737 3 com.android.build.gradle.tasks.PackageAndroidArtifact$SplitterParams_Decorated::$gradleFactory (13 bytes) 349 | Event: 1051.121 Thread 0x0000000018d08800 nmethod 45735 0x000000000971dc10 code [0x000000000971dd60, 0x000000000971de70] 350 | Event: 1051.121 Thread 0x0000000018d0d000 nmethod 45736 0x000000000972cb90 code [0x000000000972cce0, 0x000000000972cdf0] 351 | Event: 1051.122 Thread 0x0000000018d0b800 nmethod 45737 0x0000000009cfbcd0 code [0x0000000009cfbe60, 0x0000000009cfc368] 352 | Event: 1051.129 Thread 0x0000000018d01000 nmethod 45678 0x0000000009ced690 code [0x0000000009cedb40, 0x0000000009cf0ad8] 353 | Event: 1051.129 Thread 0x0000000018d01000 45713 4 com.android.tools.r8.ir.conversion.o:: (236 bytes) 354 | Event: 1051.145 Thread 0x0000000018d01000 nmethod 45713 0x0000000009cf9b10 code [0x0000000009cf9d60, 0x0000000009cfac50] 355 | Event: 1051.145 Thread 0x0000000018d01000 45708 ! 4 com.android.tools.r8.utils.J::a (116 bytes) 356 | Event: 1051.222 Thread 0x0000000018d01000 nmethod 45708 0x0000000009c7a2d0 code [0x0000000009c7a500, 0x0000000009c7b8c0] 357 | Event: 1051.226 Thread 0x0000000018d01000 45727 4 com.android.tools.r8.graph.d0::a (52 bytes) 358 | 359 | GC Heap History (10 events): 360 | Event: 995.943 GC heap before 361 | {Heap before GC invocations=101 (full 8): 362 | PSYoungGen total 410624K, used 290148K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000) 363 | eden space 306176K, 92% used [0x00000000e0000000,0x00000000f15ec8e8,0x00000000f2b00000) 364 | from space 104448K, 5% used [0x00000000f8c80000,0x00000000f91ec8d0,0x00000000ff280000) 365 | to space 99840K, 0% used [0x00000000f2b00000,0x00000000f2b00000,0x00000000f8c80000) 366 | ParOldGen total 1048576K, used 975926K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 367 | object space 1048576K, 93% used [0x00000000a0000000,0x00000000db90dbc8,0x00000000e0000000) 368 | Metaspace used 168068K, capacity 181073K, committed 181184K, reserved 1206272K 369 | class space used 21239K, capacity 23511K, committed 23528K, reserved 1048576K 370 | Event: 996.092 GC heap after 371 | Heap after GC invocations=101 (full 8): 372 | PSYoungGen total 410624K, used 0K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000) 373 | eden space 306176K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000f2b00000) 374 | from space 104448K, 0% used [0x00000000f8c80000,0x00000000f8c80000,0x00000000ff280000) 375 | to space 99840K, 0% used [0x00000000f2b00000,0x00000000f2b00000,0x00000000f8c80000) 376 | ParOldGen total 1048576K, used 315479K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 377 | object space 1048576K, 30% used [0x00000000a0000000,0x00000000b3415c90,0x00000000e0000000) 378 | Metaspace used 168068K, capacity 181073K, committed 181184K, reserved 1206272K 379 | class space used 21239K, capacity 23511K, committed 23528K, reserved 1048576K 380 | } 381 | Event: 996.402 GC heap before 382 | {Heap before GC invocations=102 (full 8): 383 | PSYoungGen total 410624K, used 306176K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000) 384 | eden space 306176K, 100% used [0x00000000e0000000,0x00000000f2b00000,0x00000000f2b00000) 385 | from space 104448K, 0% used [0x00000000f8c80000,0x00000000f8c80000,0x00000000ff280000) 386 | to space 99840K, 0% used [0x00000000f2b00000,0x00000000f2b00000,0x00000000f8c80000) 387 | ParOldGen total 1048576K, used 354108K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 388 | object space 1048576K, 33% used [0x00000000a0000000,0x00000000b59cf088,0x00000000e0000000) 389 | Metaspace used 168072K, capacity 181073K, committed 181184K, reserved 1206272K 390 | class space used 21239K, capacity 23511K, committed 23528K, reserved 1048576K 391 | Event: 996.407 GC heap after 392 | Heap after GC invocations=102 (full 8): 393 | PSYoungGen total 406016K, used 12733K [0x00000000e0000000, 0x00000000fef80000, 0x0000000100000000) 394 | eden space 306176K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000f2b00000) 395 | from space 99840K, 12% used [0x00000000f2b00000,0x00000000f376f7b8,0x00000000f8c80000) 396 | to space 93696K, 0% used [0x00000000f9400000,0x00000000f9400000,0x00000000fef80000) 397 | ParOldGen total 1048576K, used 354116K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 398 | object space 1048576K, 33% used [0x00000000a0000000,0x00000000b59d1088,0x00000000e0000000) 399 | Metaspace used 168072K, capacity 181073K, committed 181184K, reserved 1206272K 400 | class space used 21239K, capacity 23511K, committed 23528K, reserved 1048576K 401 | } 402 | Event: 1048.161 GC heap before 403 | {Heap before GC invocations=103 (full 8): 404 | PSYoungGen total 406016K, used 311487K [0x00000000e0000000, 0x00000000fef80000, 0x0000000100000000) 405 | eden space 306176K, 97% used [0x00000000e0000000,0x00000000f23c0758,0x00000000f2b00000) 406 | from space 99840K, 12% used [0x00000000f2b00000,0x00000000f376f7b8,0x00000000f8c80000) 407 | to space 93696K, 0% used [0x00000000f9400000,0x00000000f9400000,0x00000000fef80000) 408 | ParOldGen total 1048576K, used 354116K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 409 | object space 1048576K, 33% used [0x00000000a0000000,0x00000000b59d1088,0x00000000e0000000) 410 | Metaspace used 168108K, capacity 181137K, committed 181184K, reserved 1206272K 411 | class space used 21239K, capacity 23511K, committed 23528K, reserved 1048576K 412 | Event: 1048.168 GC heap after 413 | Heap after GC invocations=103 (full 8): 414 | PSYoungGen total 417792K, used 18323K [0x00000000e0000000, 0x00000000fed00000, 0x0000000100000000) 415 | eden space 326656K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000f3f00000) 416 | from space 91136K, 20% used [0x00000000f9400000,0x00000000fa5e4e60,0x00000000fed00000) 417 | to space 87040K, 0% used [0x00000000f3f00000,0x00000000f3f00000,0x00000000f9400000) 418 | ParOldGen total 1048576K, used 354124K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 419 | object space 1048576K, 33% used [0x00000000a0000000,0x00000000b59d3088,0x00000000e0000000) 420 | Metaspace used 168108K, capacity 181137K, committed 181184K, reserved 1206272K 421 | class space used 21239K, capacity 23511K, committed 23528K, reserved 1048576K 422 | } 423 | Event: 1048.732 GC heap before 424 | {Heap before GC invocations=104 (full 8): 425 | PSYoungGen total 417792K, used 344977K [0x00000000e0000000, 0x00000000fed00000, 0x0000000100000000) 426 | eden space 326656K, 99% used [0x00000000e0000000,0x00000000f3eff8c0,0x00000000f3f00000) 427 | from space 91136K, 20% used [0x00000000f9400000,0x00000000fa5e4e60,0x00000000fed00000) 428 | to space 87040K, 0% used [0x00000000f3f00000,0x00000000f3f00000,0x00000000f9400000) 429 | ParOldGen total 1048576K, used 354124K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 430 | object space 1048576K, 33% used [0x00000000a0000000,0x00000000b59d3088,0x00000000e0000000) 431 | Metaspace used 168156K, capacity 181143K, committed 181184K, reserved 1206272K 432 | class space used 21240K, capacity 23512K, committed 23528K, reserved 1048576K 433 | Event: 1048.739 GC heap after 434 | Heap after GC invocations=104 (full 8): 435 | PSYoungGen total 413696K, used 29192K [0x00000000e0000000, 0x00000000ff500000, 0x0000000100000000) 436 | eden space 326656K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000f3f00000) 437 | from space 87040K, 33% used [0x00000000f3f00000,0x00000000f5b82130,0x00000000f9400000) 438 | to space 83456K, 0% used [0x00000000fa380000,0x00000000fa380000,0x00000000ff500000) 439 | ParOldGen total 1048576K, used 354132K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 440 | object space 1048576K, 33% used [0x00000000a0000000,0x00000000b59d5088,0x00000000e0000000) 441 | Metaspace used 168156K, capacity 181143K, committed 181184K, reserved 1206272K 442 | class space used 21240K, capacity 23512K, committed 23528K, reserved 1048576K 443 | } 444 | Event: 1051.187 GC heap before 445 | {Heap before GC invocations=105 (full 8): 446 | PSYoungGen total 413696K, used 333347K [0x00000000e0000000, 0x00000000ff500000, 0x0000000100000000) 447 | eden space 326656K, 93% used [0x00000000e0000000,0x00000000f2906e08,0x00000000f3f00000) 448 | from space 87040K, 33% used [0x00000000f3f00000,0x00000000f5b82130,0x00000000f9400000) 449 | to space 83456K, 0% used [0x00000000fa380000,0x00000000fa380000,0x00000000ff500000) 450 | ParOldGen total 1048576K, used 411179K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 451 | object space 1048576K, 39% used [0x00000000a0000000,0x00000000b918ac28,0x00000000e0000000) 452 | Metaspace used 168249K, capacity 181307K, committed 181440K, reserved 1208320K 453 | class space used 21243K, capacity 23516K, committed 23528K, reserved 1048576K 454 | Event: 1051.214 GC heap after 455 | Heap after GC invocations=105 (full 8): 456 | PSYoungGen total 258560K, used 83450K [0x00000000e0000000, 0x0000000100000000, 0x0000000100000000) 457 | eden space 175104K, 0% used [0x00000000e0000000,0x00000000e0000000,0x00000000eab00000) 458 | from space 83456K, 99% used [0x00000000fa380000,0x00000000ff4fe980,0x00000000ff500000) 459 | to space 174592K, 0% used [0x00000000eab00000,0x00000000eab00000,0x00000000f5580000) 460 | ParOldGen total 1048576K, used 640299K [0x00000000a0000000, 0x00000000e0000000, 0x00000000e0000000) 461 | object space 1048576K, 61% used [0x00000000a0000000,0x00000000c714acd0,0x00000000e0000000) 462 | Metaspace used 168249K, capacity 181307K, committed 181440K, reserved 1208320K 463 | class space used 21243K, capacity 23516K, committed 23528K, reserved 1048576K 464 | } 465 | 466 | Deoptimization events (10 events): 467 | Event: 995.275 Thread 0x000000002e4f6000 Uncommon trap: reason=array_check action=maybe_recompile pc=0x0000000005e82aec method=java.util.LinkedList.toArray([Ljava/lang/Object;)[Ljava/lang/Object; @ 55 468 | Event: 995.275 Thread 0x000000002e4f6000 Uncommon trap: reason=array_check action=maybe_recompile pc=0x0000000005e82aec method=java.util.LinkedList.toArray([Ljava/lang/Object;)[Ljava/lang/Object; @ 55 469 | Event: 995.275 Thread 0x000000002e4f6000 Uncommon trap: reason=array_check action=maybe_recompile pc=0x0000000005e82aec method=java.util.LinkedList.toArray([Ljava/lang/Object;)[Ljava/lang/Object; @ 55 470 | Event: 995.278 Thread 0x000000002e4f6000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000009526184 method=java.io.ExpiringCache$1.removeEldestEntry(Ljava/util/Map$Entry;)Z @ 11 471 | Event: 995.279 Thread 0x000000002e4f6000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000009592678 method=java.io.ExpiringCache$1.removeEldestEntry(Ljava/util/Map$Entry;)Z @ 11 472 | Event: 996.918 Thread 0x000000002e4e9800 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000009af015c method=java.io.ObjectOutputStream$BlockDataOutputStream.writeInt(I)V @ 9 473 | Event: 1048.623 Thread 0x000000002e4e9800 Uncommon trap: reason=null_check action=make_not_entrant pc=0x00000000042a9c6c method=java.lang.Class.isEnum()Z @ 1 474 | Event: 1048.868 Thread 0x0000000030d09000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x0000000004b98b94 method=com.google.common.collect.MapMakerInternalMap$Segment.put(Ljava/lang/Object;ILjava/lang/Object;Z)Ljava/lang/Object; @ 92 475 | Event: 1049.391 Thread 0x000000003b5ce000 Uncommon trap: reason=unstable_if action=reinterpret pc=0x00000000099ae2d4 method=org.gradle.internal.execution.history.changes.CachingChangeContainer.accept(Lorg/gradle/internal/execution/history/changes/ChangeVisitor;)Z @ 108 476 | Event: 1051.102 Thread 0x000000003b5d7800 Uncommon trap: reason=bimorphic action=maybe_recompile pc=0x00000000051946b4 method=org.gradle.internal.snapshot.SnapshotUtil.handleChildren(Ljava/util/List;Lorg/gradle/internal/snapshot/VfsRelativePath;Lorg/gradle/internal/snapshot/CaseSensitivity;Lorg/g 477 | 478 | Classes redefined (0 events): 479 | No events 480 | 481 | Internal exceptions (10 events): 482 | Event: 1050.975 Thread 0x000000003b5d6000 Exception (0x00000000e74b04f8) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 483 | Event: 1050.975 Thread 0x000000003b5d6000 Exception (0x00000000e74b1638) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 484 | Event: 1050.989 Thread 0x000000003b5d6000 Exception (0x00000000e788f858) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 485 | Event: 1050.989 Thread 0x000000003b5d6000 Exception (0x00000000e7890948) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 486 | Event: 1050.993 Thread 0x000000003b5d5800 Exception (0x00000000e78ea418) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 487 | Event: 1050.993 Thread 0x000000003b5d5800 Exception (0x00000000e78eb548) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 488 | Event: 1051.006 Thread 0x000000003b5d7800 Exception (0x00000000e7c2f6d8) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 489 | Event: 1051.067 Thread 0x000000003b5d7800 Exception (0x00000000e9a4b638) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 490 | Event: 1051.126 Thread 0x000000003b5e1800 Exception (0x00000000e9bd97f8) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 491 | Event: 1051.126 Thread 0x000000003b5e1800 Exception (0x00000000e9bda0d8) thrown at [C:\Users\jenkins\workspace\openjdk8_build_x86-64_windows\openjdk\hotspot\src\share\vm\prims\jni.cpp, line 709] 492 | 493 | Events (10 events): 494 | Event: 1051.217 Executing VM operation: RevokeBias done 495 | Event: 1051.218 Executing VM operation: RevokeBias 496 | Event: 1051.218 Executing VM operation: RevokeBias done 497 | Event: 1051.219 Executing VM operation: RevokeBias 498 | Event: 1051.220 Executing VM operation: RevokeBias done 499 | Event: 1051.221 Executing VM operation: RevokeBias 500 | Event: 1051.222 Executing VM operation: RevokeBias done 501 | Event: 1051.223 Thread 0x000000002e81e800 Thread exited: 0x000000002e81e800 502 | Event: 1051.223 Thread 0x000000002e817000 Thread exited: 0x000000002e817000 503 | Event: 1051.225 Thread 0x0000000018d01000 flushing nmethod 0x000000000367e6d0 504 | 505 | 506 | Dynamic libraries: 507 | 0x00007ff6fecb0000 - 0x00007ff6fece5000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin\java.exe 508 | 0x00007ffa2f000000 - 0x00007ffa2f207000 C:\Windows\SYSTEM32\ntdll.dll 509 | 0x00007ffa2ddf0000 - 0x00007ffa2dead000 C:\Windows\System32\KERNEL32.DLL 510 | 0x00007ffa2c7c0000 - 0x00007ffa2cb34000 C:\Windows\System32\KERNELBASE.dll 511 | 0x00007ffa2da80000 - 0x00007ffa2db2c000 C:\Windows\System32\ADVAPI32.dll 512 | 0x00007ffa2d050000 - 0x00007ffa2d0f3000 C:\Windows\System32\msvcrt.dll 513 | 0x00007ffa2e190000 - 0x00007ffa2e22d000 C:\Windows\System32\sechost.dll 514 | 0x00007ffa2cea0000 - 0x00007ffa2cfc1000 C:\Windows\System32\RPCRT4.dll 515 | 0x00007ffa2d8d0000 - 0x00007ffa2da7c000 C:\Windows\System32\USER32.dll 516 | 0x00007ffa2cc80000 - 0x00007ffa2cca6000 C:\Windows\System32\win32u.dll 517 | 0x00007ffa2e030000 - 0x00007ffa2e059000 C:\Windows\System32\GDI32.dll 518 | 0x00007ffa2c4e0000 - 0x00007ffa2c5f2000 C:\Windows\System32\gdi32full.dll 519 | 0x00007ffa2c720000 - 0x00007ffa2c7bd000 C:\Windows\System32\msvcp_win.dll 520 | 0x00007ffa2c600000 - 0x00007ffa2c711000 C:\Windows\System32\ucrtbase.dll 521 | 0x00007ffa1ec40000 - 0x00007ffa1eee5000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.22000.120_none_9d947278b86cc467\COMCTL32.dll 522 | 0x00007ffa2d2c0000 - 0x00007ffa2d2f1000 C:\Windows\System32\IMM32.DLL 523 | 0x000000005bde0000 - 0x000000005beb2000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\msvcr100.dll 524 | 0x000000005b590000 - 0x000000005bdd9000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\server\jvm.dll 525 | 0x00007ffa2deb0000 - 0x00007ffa2deb8000 C:\Windows\System32\PSAPI.DLL 526 | 0x00007ffa24ba0000 - 0x00007ffa24baa000 C:\Windows\SYSTEM32\VERSION.dll 527 | 0x00007ffa21f50000 - 0x00007ffa21f59000 C:\Windows\SYSTEM32\WSOCK32.dll 528 | 0x00007ffa2d860000 - 0x00007ffa2d8cf000 C:\Windows\System32\WS2_32.dll 529 | 0x00007ffa1e2f0000 - 0x00007ffa1e323000 C:\Windows\SYSTEM32\WINMM.dll 530 | 0x00007ffa21ab0000 - 0x00007ffa21abf000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\verify.dll 531 | 0x00007ffa217a0000 - 0x00007ffa217c9000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\java.dll 532 | 0x00007ffa21640000 - 0x00007ffa21656000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\zip.dll 533 | 0x00007ffa2e720000 - 0x00007ffa2eece000 C:\Windows\System32\SHELL32.dll 534 | 0x00007ffa2a680000 - 0x00007ffa2aee7000 C:\Windows\SYSTEM32\windows.storage.dll 535 | 0x00007ffa2e2c0000 - 0x00007ffa2e638000 C:\Windows\System32\combase.dll 536 | 0x00007ffa2a510000 - 0x00007ffa2a676000 C:\Windows\SYSTEM32\wintypes.dll 537 | 0x00007ffa2d770000 - 0x00007ffa2d85a000 C:\Windows\System32\SHCORE.dll 538 | 0x00007ffa2e130000 - 0x00007ffa2e18d000 C:\Windows\System32\shlwapi.dll 539 | 0x00007ffa2c410000 - 0x00007ffa2c431000 C:\Windows\SYSTEM32\profapi.dll 540 | 0x00007ffa21620000 - 0x00007ffa2163a000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\net.dll 541 | 0x00007ffa2bb00000 - 0x00007ffa2bb67000 C:\Windows\system32\mswsock.dll 542 | 0x00007ffa21230000 - 0x00007ffa21241000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\nio.dll 543 | 0x00007ffa20640000 - 0x00007ffa20667000 C:\Users\Administrator\.gradle\native\fdc75f09e3144964f2cf3f50f0aa648679c211496f362492102eb8c894070792\windows-amd64\native-platform.dll 544 | 0x00007ff9e3910000 - 0x00007ff9e3aa6000 C:\Users\Administrator\.gradle\native\12488b8bf47d2d4c9fbf2f6322a914ad602e24e48041cd04a747c6da556b65c4\windows-amd64\native-platform-file-events.dll 545 | 0x00007ffa21aa0000 - 0x00007ffa21aad000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\management.dll 546 | 0x00007ffa2bd40000 - 0x00007ffa2bd58000 C:\Windows\SYSTEM32\CRYPTSP.dll 547 | 0x00007ffa2b560000 - 0x00007ffa2b595000 C:\Windows\system32\rsaenh.dll 548 | 0x00007ffa2bbf0000 - 0x00007ffa2bc19000 C:\Windows\SYSTEM32\USERENV.dll 549 | 0x00007ffa2bec0000 - 0x00007ffa2bee7000 C:\Windows\SYSTEM32\bcrypt.dll 550 | 0x00007ffa2cc00000 - 0x00007ffa2cc7f000 C:\Windows\System32\bcryptprimitives.dll 551 | 0x00007ffa2bd60000 - 0x00007ffa2bd6c000 C:\Windows\SYSTEM32\CRYPTBASE.dll 552 | 0x00007ffa2b140000 - 0x00007ffa2b16d000 C:\Windows\SYSTEM32\IPHLPAPI.DLL 553 | 0x00007ffa2ce90000 - 0x00007ffa2ce99000 C:\Windows\System32\NSI.dll 554 | 0x00007ffa27760000 - 0x00007ffa27779000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL 555 | 0x00007ffa27c80000 - 0x00007ffa27c9e000 C:\Windows\SYSTEM32\dhcpcsvc.DLL 556 | 0x00007ffa2b1b0000 - 0x00007ffa2b297000 C:\Windows\SYSTEM32\DNSAPI.dll 557 | 0x00007ffa27b10000 - 0x00007ffa27b1c000 C:\Windows\SYSTEM32\WINNSI.DLL 558 | 0x00007ffa29eb0000 - 0x00007ffa29ee4000 C:\Windows\SYSTEM32\ntmarta.dll 559 | 0x00007ffa21f80000 - 0x00007ffa21f9e000 C:\Users\Administrator\AppData\Local\Temp\native-platform3795795878951037499dir\native-platform.dll 560 | 0x00007ffa205c0000 - 0x00007ffa205e4000 S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\jre\bin\sunec.dll 561 | 0x00007ffa1a280000 - 0x00007ffa1a4a1000 C:\Windows\SYSTEM32\dbghelp.dll 562 | 563 | VM Arguments: 564 | jvm_args: -Xmx1536M -Dfile.encoding=GBK -Duser.country=CN -Duser.language=zh -Duser.variant 565 | java_command: org.gradle.launcher.daemon.bootstrap.GradleDaemon 6.7 566 | java_class_path (initial): C:\Users\Administrator\.gradle\wrapper\dists\gradle-6.7-all\cuy9mc7upwgwgeb72wkcrupxe\gradle-6.7\lib\gradle-launcher-6.7.jar 567 | Launcher Type: SUN_STANDARD 568 | 569 | Environment Variables: 570 | JAVA_HOME=S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK 571 | CLASSPATH=S:\Projects\PhantomsXR\UnityProjects\ARMODs\Apps\Flutter\android\\gradle\wrapper\gradle-wrapper.jar 572 | PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;S:\Program Files\Git\cmd;C:\Program Files\dotnet\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;S:\Program Files\nodejs\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;S:\Program Files\Microsoft VS Code\bin;C:\Users\Administrator\AppData\Roaming\npm;F:\flutter\bin;S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK;S:\Program Files\UnityEditors\2021.2.7f1\Editor\Data\PlaybackEngines\AndroidPlayer\OpenJDK\bin;C:\Users\Administrator\AppData\Local\GitHubDesktop\bin;F:\flutter\bin\mingit\cmd 573 | USERNAME=Administrator 574 | OS=Windows_NT 575 | PROCESSOR_IDENTIFIER=AMD64 Family 23 Model 113 Stepping 0, AuthenticAMD 576 | 577 | 578 | 579 | --------------- S Y S T E M --------------- 580 | 581 | OS: Windows 10.0 , 64 bit Build 22000 (10.0.22000.318) 582 | 583 | CPU:total 16 (initial active 16) (16 cores per cpu, 1 threads per core) family 23 model 113 stepping 0, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, avx, avx2, aes, clmul, mmxext, 3dnowpref, lzcnt, sse4a, tsc, tscinvbit, tscinv, bmi1 584 | 585 | Memory: 4k page, physical 33474240k(18915904k free), swap 38454976k(19771968k free) 586 | 587 | vm_info: OpenJDK 64-Bit Server VM (25.71-b00) for windows-amd64 JRE (1.8.0-adoptopenjdk-_2018_05_19_00_59-b00), built on May 19 2018 01:02:12 by "jenkins" with MS VC++ 10.0 (VS2010) 588 | 589 | time: Sat Jan 08 15:49:55 2022 590 | elapsed time: 1051 seconds (0d 0h 17m 31s) 591 | 592 | -------------------------------------------------------------------------------- /android/multidex-config.pro: -------------------------------------------------------------------------------- 1 | -keep class com.phantomsxr.armodplugin.** {*;} -------------------------------------------------------------------------------- /android/settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | 3 | def localPropertiesFile = new File(rootProject.projectDir, "local.properties") 4 | def properties = new Properties() 5 | 6 | assert localPropertiesFile.exists() 7 | localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } 8 | 9 | def flutterSdkPath = properties.getProperty("flutter.sdk") 10 | assert flutterSdkPath != null, "flutter.sdk not set in local.properties" 11 | apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" 12 | -------------------------------------------------------------------------------- /android/settings_aar.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /assets/icon/logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/assets/icon/logo.jpg -------------------------------------------------------------------------------- /ios/.gitignore: -------------------------------------------------------------------------------- 1 | *.mode1v3 2 | *.mode2v3 3 | *.moved-aside 4 | *.pbxuser 5 | *.perspectivev3 6 | **/*sync/ 7 | .sconsign.dblite 8 | .tags* 9 | **/.vagrant/ 10 | **/DerivedData/ 11 | Icon? 12 | **/Pods/ 13 | **/.symlinks/ 14 | profile 15 | xcuserdata 16 | **/.generated/ 17 | Flutter/App.framework 18 | Flutter/Flutter.framework 19 | Flutter/Flutter.podspec 20 | Flutter/Generated.xcconfig 21 | Flutter/ephemeral/ 22 | Flutter/app.flx 23 | Flutter/app.zip 24 | Flutter/flutter_assets/ 25 | Flutter/flutter_export_environment.sh 26 | ServiceDefinitions.json 27 | Runner/GeneratedPluginRegistrant.* 28 | 29 | # Exceptions to above rules. 30 | !default.mode1v3 31 | !default.mode2v3 32 | !default.pbxuser 33 | !default.perspectivev3 34 | -------------------------------------------------------------------------------- /ios/Flutter/AppFrameworkInfo.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | en 7 | CFBundleExecutable 8 | App 9 | CFBundleIdentifier 10 | io.flutter.flutter.app 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | App 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | 1.0 23 | MinimumOSVersion 24 | 8.0 25 | 26 | 27 | -------------------------------------------------------------------------------- /ios/Flutter/Debug.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Flutter/Release.xcconfig: -------------------------------------------------------------------------------- 1 | #include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" 2 | #include "Generated.xcconfig" 3 | -------------------------------------------------------------------------------- /ios/Podfile: -------------------------------------------------------------------------------- 1 | # Uncomment this line to define a global platform for your project 2 | platform :ios, '11.0' 3 | 4 | # CocoaPods analytics sends network stats synchronously affecting flutter build latency. 5 | ENV['COCOAPODS_DISABLE_STATS'] = 'true' 6 | 7 | project 'Runner', { 8 | 'Debug' => :debug, 9 | 'Profile' => :release, 10 | 'Release' => :release, 11 | } 12 | 13 | def flutter_root 14 | generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) 15 | unless File.exist?(generated_xcode_build_settings_path) 16 | raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" 17 | end 18 | 19 | File.foreach(generated_xcode_build_settings_path) do |line| 20 | matches = line.match(/FLUTTER_ROOT\=(.*)/) 21 | return matches[1].strip if matches 22 | end 23 | raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" 24 | end 25 | 26 | require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) 27 | 28 | flutter_ios_podfile_setup 29 | 30 | target 'Runner' do 31 | use_frameworks! 32 | use_modular_headers! 33 | 34 | flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) 35 | end 36 | 37 | post_install do |installer| 38 | installer.pods_project.targets.each do |target| 39 | flutter_additional_ios_build_settings(target) 40 | end 41 | end 42 | -------------------------------------------------------------------------------- /ios/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - Flutter (1.0.0) 3 | - flutter_armod_widget (2.0.0): 4 | - Flutter 5 | - path_provider_ios (0.0.1): 6 | - Flutter 7 | 8 | DEPENDENCIES: 9 | - Flutter (from `Flutter`) 10 | - flutter_armod_widget (from `.symlinks/plugins/flutter_armod_widget/ios`) 11 | - path_provider_ios (from `.symlinks/plugins/path_provider_ios/ios`) 12 | 13 | EXTERNAL SOURCES: 14 | Flutter: 15 | :path: Flutter 16 | flutter_armod_widget: 17 | :path: ".symlinks/plugins/flutter_armod_widget/ios" 18 | path_provider_ios: 19 | :path: ".symlinks/plugins/path_provider_ios/ios" 20 | 21 | SPEC CHECKSUMS: 22 | Flutter: 50d75fe2f02b26cc09d224853bb45737f8b3214a 23 | flutter_armod_widget: 73ea38a5c0479a3d9c34c20558d9f93561938904 24 | path_provider_ios: 14f3d2fd28c4fdb42f44e0f751d12861c43cee02 25 | 26 | PODFILE CHECKSUM: 7368163408c647b7eb699d0d788ba6718e18fb8d 27 | 28 | COCOAPODS: 1.11.2 29 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 51; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 11 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 12 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 13 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 14 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 15 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; 16 | B332665D26E621630044EA7B /* ThirdParties in Resources */ = {isa = PBXBuildFile; fileRef = B332665C26E621630044EA7B /* ThirdParties */; }; 17 | B332665E26E6217A0044EA7B /* UnityFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B3642A8A26E0CAD00036BFF8 /* UnityFramework.framework */; }; 18 | B332665F26E6217A0044EA7B /* UnityFramework.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B3642A8A26E0CAD00036BFF8 /* UnityFramework.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 19 | B332666226E621E70044EA7B /* ARMODCallbackAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = B332666126E621E70044EA7B /* ARMODCallbackAPI.swift */; }; 20 | B37C082628912CB200A5ECAF /* NatCorder.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B37C082528912CB200A5ECAF /* NatCorder.framework */; }; 21 | B37C082728912CB200A5ECAF /* NatCorder.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = B37C082528912CB200A5ECAF /* NatCorder.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 22 | CE13F701513330C2DF85FB61 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 54568BD673B8F53F89DDA2DB /* Pods_Runner.framework */; }; 23 | /* End PBXBuildFile section */ 24 | 25 | /* Begin PBXCopyFilesBuildPhase section */ 26 | B332666026E6217A0044EA7B /* Embed Frameworks */ = { 27 | isa = PBXCopyFilesBuildPhase; 28 | buildActionMask = 2147483647; 29 | dstPath = ""; 30 | dstSubfolderSpec = 10; 31 | files = ( 32 | B332665F26E6217A0044EA7B /* UnityFramework.framework in Embed Frameworks */, 33 | B37C082728912CB200A5ECAF /* NatCorder.framework in Embed Frameworks */, 34 | ); 35 | name = "Embed Frameworks"; 36 | runOnlyForDeploymentPostprocessing = 0; 37 | }; 38 | /* End PBXCopyFilesBuildPhase section */ 39 | 40 | /* Begin PBXFileReference section */ 41 | 00D8CFD8C49B56D96C745C60 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 42 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 43 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 44 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 45 | 4C57CC6932587493E26D74F7 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 46 | 54568BD673B8F53F89DDA2DB /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 47 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 48 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 49 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 50 | 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 51 | 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 52 | 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 53 | 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 54 | 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 55 | 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 56 | 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 57 | B332665826E61DB30044EA7B /* UnityFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UnityFramework.framework; path = Pods/ThirdParties/UnityFramework.framework; sourceTree = ""; }; 58 | B332665C26E621630044EA7B /* ThirdParties */ = {isa = PBXFileReference; lastKnownFileType = folder; path = ThirdParties; sourceTree = ""; }; 59 | B332666126E621E70044EA7B /* ARMODCallbackAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ARMODCallbackAPI.swift; sourceTree = ""; }; 60 | B3642A8A26E0CAD00036BFF8 /* UnityFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UnityFramework.framework; path = ThirdParties/UnityFramework.framework; sourceTree = ""; }; 61 | B37C082528912CB200A5ECAF /* NatCorder.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NatCorder.framework; path = ThirdParties/NatCorder.framework; sourceTree = ""; }; 62 | C2E6F909FD3F72F1059917C5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 63 | /* End PBXFileReference section */ 64 | 65 | /* Begin PBXFrameworksBuildPhase section */ 66 | 97C146EB1CF9000F007C117D /* Frameworks */ = { 67 | isa = PBXFrameworksBuildPhase; 68 | buildActionMask = 2147483647; 69 | files = ( 70 | B37C082628912CB200A5ECAF /* NatCorder.framework in Frameworks */, 71 | CE13F701513330C2DF85FB61 /* Pods_Runner.framework in Frameworks */, 72 | B332665E26E6217A0044EA7B /* UnityFramework.framework in Frameworks */, 73 | ); 74 | runOnlyForDeploymentPostprocessing = 0; 75 | }; 76 | /* End PBXFrameworksBuildPhase section */ 77 | 78 | /* Begin PBXGroup section */ 79 | 8192A224E9E2F548A0C52BCF /* Frameworks */ = { 80 | isa = PBXGroup; 81 | children = ( 82 | 54568BD673B8F53F89DDA2DB /* Pods_Runner.framework */, 83 | B332665826E61DB30044EA7B /* UnityFramework.framework */, 84 | B37C082528912CB200A5ECAF /* NatCorder.framework */, 85 | B3642A8A26E0CAD00036BFF8 /* UnityFramework.framework */, 86 | ); 87 | name = Frameworks; 88 | sourceTree = ""; 89 | }; 90 | 9740EEB11CF90186004384FC /* Flutter */ = { 91 | isa = PBXGroup; 92 | children = ( 93 | 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 94 | 9740EEB21CF90195004384FC /* Debug.xcconfig */, 95 | 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, 96 | 9740EEB31CF90195004384FC /* Generated.xcconfig */, 97 | ); 98 | name = Flutter; 99 | sourceTree = ""; 100 | }; 101 | 97C146E51CF9000F007C117D = { 102 | isa = PBXGroup; 103 | children = ( 104 | B332665C26E621630044EA7B /* ThirdParties */, 105 | 9740EEB11CF90186004384FC /* Flutter */, 106 | 97C146F01CF9000F007C117D /* Runner */, 107 | 97C146EF1CF9000F007C117D /* Products */, 108 | A62249401BF9A3036AB81DAA /* Pods */, 109 | 8192A224E9E2F548A0C52BCF /* Frameworks */, 110 | ); 111 | sourceTree = ""; 112 | }; 113 | 97C146EF1CF9000F007C117D /* Products */ = { 114 | isa = PBXGroup; 115 | children = ( 116 | 97C146EE1CF9000F007C117D /* Runner.app */, 117 | ); 118 | name = Products; 119 | sourceTree = ""; 120 | }; 121 | 97C146F01CF9000F007C117D /* Runner */ = { 122 | isa = PBXGroup; 123 | children = ( 124 | B332666126E621E70044EA7B /* ARMODCallbackAPI.swift */, 125 | 97C146FA1CF9000F007C117D /* Main.storyboard */, 126 | 97C146FD1CF9000F007C117D /* Assets.xcassets */, 127 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 128 | 97C147021CF9000F007C117D /* Info.plist */, 129 | 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 130 | 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 131 | 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 132 | 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, 133 | ); 134 | path = Runner; 135 | sourceTree = ""; 136 | }; 137 | A62249401BF9A3036AB81DAA /* Pods */ = { 138 | isa = PBXGroup; 139 | children = ( 140 | C2E6F909FD3F72F1059917C5 /* Pods-Runner.debug.xcconfig */, 141 | 4C57CC6932587493E26D74F7 /* Pods-Runner.release.xcconfig */, 142 | 00D8CFD8C49B56D96C745C60 /* Pods-Runner.profile.xcconfig */, 143 | ); 144 | path = Pods; 145 | sourceTree = ""; 146 | }; 147 | /* End PBXGroup section */ 148 | 149 | /* Begin PBXNativeTarget section */ 150 | 97C146ED1CF9000F007C117D /* Runner */ = { 151 | isa = PBXNativeTarget; 152 | buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; 153 | buildPhases = ( 154 | E6615A0E19AA47A55FEC9137 /* [CP] Check Pods Manifest.lock */, 155 | 9740EEB61CF901F6004384FC /* Run Script */, 156 | 97C146EA1CF9000F007C117D /* Sources */, 157 | 97C146EB1CF9000F007C117D /* Frameworks */, 158 | 97C146EC1CF9000F007C117D /* Resources */, 159 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */, 160 | F729C80D2FB5B32A6EF60B75 /* [CP] Embed Pods Frameworks */, 161 | B332666026E6217A0044EA7B /* Embed Frameworks */, 162 | ); 163 | buildRules = ( 164 | ); 165 | dependencies = ( 166 | ); 167 | name = Runner; 168 | productName = Runner; 169 | productReference = 97C146EE1CF9000F007C117D /* Runner.app */; 170 | productType = "com.apple.product-type.application"; 171 | }; 172 | /* End PBXNativeTarget section */ 173 | 174 | /* Begin PBXProject section */ 175 | 97C146E61CF9000F007C117D /* Project object */ = { 176 | isa = PBXProject; 177 | attributes = { 178 | LastUpgradeCheck = 1020; 179 | ORGANIZATIONNAME = ""; 180 | TargetAttributes = { 181 | 97C146ED1CF9000F007C117D = { 182 | CreatedOnToolsVersion = 7.3.1; 183 | LastSwiftMigration = 1100; 184 | }; 185 | }; 186 | }; 187 | buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; 188 | compatibilityVersion = "Xcode 9.3"; 189 | developmentRegion = en; 190 | hasScannedForEncodings = 0; 191 | knownRegions = ( 192 | en, 193 | Base, 194 | ); 195 | mainGroup = 97C146E51CF9000F007C117D; 196 | productRefGroup = 97C146EF1CF9000F007C117D /* Products */; 197 | projectDirPath = ""; 198 | projectRoot = ""; 199 | targets = ( 200 | 97C146ED1CF9000F007C117D /* Runner */, 201 | ); 202 | }; 203 | /* End PBXProject section */ 204 | 205 | /* Begin PBXResourcesBuildPhase section */ 206 | 97C146EC1CF9000F007C117D /* Resources */ = { 207 | isa = PBXResourcesBuildPhase; 208 | buildActionMask = 2147483647; 209 | files = ( 210 | 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 211 | 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 212 | 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, 213 | 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, 214 | B332665D26E621630044EA7B /* ThirdParties in Resources */, 215 | ); 216 | runOnlyForDeploymentPostprocessing = 0; 217 | }; 218 | /* End PBXResourcesBuildPhase section */ 219 | 220 | /* Begin PBXShellScriptBuildPhase section */ 221 | 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { 222 | isa = PBXShellScriptBuildPhase; 223 | buildActionMask = 2147483647; 224 | files = ( 225 | ); 226 | inputPaths = ( 227 | ); 228 | name = "Thin Binary"; 229 | outputPaths = ( 230 | ); 231 | runOnlyForDeploymentPostprocessing = 0; 232 | shellPath = /bin/sh; 233 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; 234 | }; 235 | 9740EEB61CF901F6004384FC /* Run Script */ = { 236 | isa = PBXShellScriptBuildPhase; 237 | buildActionMask = 2147483647; 238 | files = ( 239 | ); 240 | inputPaths = ( 241 | ); 242 | name = "Run Script"; 243 | outputPaths = ( 244 | ); 245 | runOnlyForDeploymentPostprocessing = 0; 246 | shellPath = /bin/sh; 247 | shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; 248 | }; 249 | E6615A0E19AA47A55FEC9137 /* [CP] Check Pods Manifest.lock */ = { 250 | isa = PBXShellScriptBuildPhase; 251 | buildActionMask = 2147483647; 252 | files = ( 253 | ); 254 | inputFileListPaths = ( 255 | ); 256 | inputPaths = ( 257 | "${PODS_PODFILE_DIR_PATH}/Podfile.lock", 258 | "${PODS_ROOT}/Manifest.lock", 259 | ); 260 | name = "[CP] Check Pods Manifest.lock"; 261 | outputFileListPaths = ( 262 | ); 263 | outputPaths = ( 264 | "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", 265 | ); 266 | runOnlyForDeploymentPostprocessing = 0; 267 | shellPath = /bin/sh; 268 | shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 269 | showEnvVarsInLog = 0; 270 | }; 271 | F729C80D2FB5B32A6EF60B75 /* [CP] Embed Pods Frameworks */ = { 272 | isa = PBXShellScriptBuildPhase; 273 | buildActionMask = 2147483647; 274 | files = ( 275 | ); 276 | inputFileListPaths = ( 277 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", 278 | ); 279 | name = "[CP] Embed Pods Frameworks"; 280 | outputFileListPaths = ( 281 | "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", 282 | ); 283 | runOnlyForDeploymentPostprocessing = 0; 284 | shellPath = /bin/sh; 285 | shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; 286 | showEnvVarsInLog = 0; 287 | }; 288 | /* End PBXShellScriptBuildPhase section */ 289 | 290 | /* Begin PBXSourcesBuildPhase section */ 291 | 97C146EA1CF9000F007C117D /* Sources */ = { 292 | isa = PBXSourcesBuildPhase; 293 | buildActionMask = 2147483647; 294 | files = ( 295 | 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 296 | B332666226E621E70044EA7B /* ARMODCallbackAPI.swift in Sources */, 297 | 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, 298 | ); 299 | runOnlyForDeploymentPostprocessing = 0; 300 | }; 301 | /* End PBXSourcesBuildPhase section */ 302 | 303 | /* Begin PBXVariantGroup section */ 304 | 97C146FA1CF9000F007C117D /* Main.storyboard */ = { 305 | isa = PBXVariantGroup; 306 | children = ( 307 | 97C146FB1CF9000F007C117D /* Base */, 308 | ); 309 | name = Main.storyboard; 310 | sourceTree = ""; 311 | }; 312 | 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { 313 | isa = PBXVariantGroup; 314 | children = ( 315 | 97C147001CF9000F007C117D /* Base */, 316 | ); 317 | name = LaunchScreen.storyboard; 318 | sourceTree = ""; 319 | }; 320 | /* End PBXVariantGroup section */ 321 | 322 | /* Begin XCBuildConfiguration section */ 323 | 249021D3217E4FDB00AE95B9 /* Profile */ = { 324 | isa = XCBuildConfiguration; 325 | buildSettings = { 326 | ALWAYS_SEARCH_USER_PATHS = NO; 327 | ARCHS = arm64; 328 | CLANG_ANALYZER_NONNULL = YES; 329 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 330 | CLANG_CXX_LIBRARY = "libc++"; 331 | CLANG_ENABLE_MODULES = YES; 332 | CLANG_ENABLE_OBJC_ARC = YES; 333 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 334 | CLANG_WARN_BOOL_CONVERSION = YES; 335 | CLANG_WARN_COMMA = YES; 336 | CLANG_WARN_CONSTANT_CONVERSION = YES; 337 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 338 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 339 | CLANG_WARN_EMPTY_BODY = YES; 340 | CLANG_WARN_ENUM_CONVERSION = YES; 341 | CLANG_WARN_INFINITE_RECURSION = YES; 342 | CLANG_WARN_INT_CONVERSION = YES; 343 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 344 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 345 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 346 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 347 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 348 | CLANG_WARN_STRICT_PROTOTYPES = YES; 349 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 350 | CLANG_WARN_UNREACHABLE_CODE = YES; 351 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 352 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 353 | COPY_PHASE_STRIP = NO; 354 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 355 | ENABLE_BITCODE = NO; 356 | ENABLE_NS_ASSERTIONS = NO; 357 | ENABLE_STRICT_OBJC_MSGSEND = YES; 358 | GCC_C_LANGUAGE_STANDARD = gnu99; 359 | GCC_NO_COMMON_BLOCKS = YES; 360 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 361 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 362 | GCC_WARN_UNDECLARED_SELECTOR = YES; 363 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 364 | GCC_WARN_UNUSED_FUNCTION = YES; 365 | GCC_WARN_UNUSED_VARIABLE = YES; 366 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 367 | MTL_ENABLE_DEBUG_INFO = NO; 368 | SDKROOT = iphoneos; 369 | SUPPORTED_PLATFORMS = iphoneos; 370 | TARGETED_DEVICE_FAMILY = "1,2"; 371 | VALIDATE_PRODUCT = YES; 372 | }; 373 | name = Profile; 374 | }; 375 | 249021D4217E4FDB00AE95B9 /* Profile */ = { 376 | isa = XCBuildConfiguration; 377 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 378 | buildSettings = { 379 | ARCHS = arm64; 380 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 381 | CLANG_ENABLE_MODULES = YES; 382 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 383 | DEVELOPMENT_TEAM = ZE624U53Z6; 384 | ENABLE_BITCODE = NO; 385 | FRAMEWORK_SEARCH_PATHS = ( 386 | "$(inherited)", 387 | "$(PROJECT_DIR)/ThirdParties", 388 | "$(PROJECT_DIR)/Pods/ThirdParties", 389 | ); 390 | INFOPLIST_FILE = Runner/Info.plist; 391 | LD_RUNPATH_SEARCH_PATHS = ( 392 | "$(inherited)", 393 | "@executable_path/Frameworks", 394 | ); 395 | PRODUCT_BUNDLE_IDENTIFIER = com.example.armodFlutterStore; 396 | PRODUCT_NAME = "$(TARGET_NAME)"; 397 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 398 | SWIFT_VERSION = 5.0; 399 | VERSIONING_SYSTEM = "apple-generic"; 400 | }; 401 | name = Profile; 402 | }; 403 | 97C147031CF9000F007C117D /* Debug */ = { 404 | isa = XCBuildConfiguration; 405 | buildSettings = { 406 | ALWAYS_SEARCH_USER_PATHS = NO; 407 | ARCHS = arm64; 408 | CLANG_ANALYZER_NONNULL = YES; 409 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 410 | CLANG_CXX_LIBRARY = "libc++"; 411 | CLANG_ENABLE_MODULES = YES; 412 | CLANG_ENABLE_OBJC_ARC = YES; 413 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 414 | CLANG_WARN_BOOL_CONVERSION = YES; 415 | CLANG_WARN_COMMA = YES; 416 | CLANG_WARN_CONSTANT_CONVERSION = YES; 417 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 418 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 419 | CLANG_WARN_EMPTY_BODY = YES; 420 | CLANG_WARN_ENUM_CONVERSION = YES; 421 | CLANG_WARN_INFINITE_RECURSION = YES; 422 | CLANG_WARN_INT_CONVERSION = YES; 423 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 424 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 425 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 426 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 427 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 428 | CLANG_WARN_STRICT_PROTOTYPES = YES; 429 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 430 | CLANG_WARN_UNREACHABLE_CODE = YES; 431 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 432 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 433 | COPY_PHASE_STRIP = NO; 434 | DEBUG_INFORMATION_FORMAT = dwarf; 435 | ENABLE_BITCODE = NO; 436 | ENABLE_STRICT_OBJC_MSGSEND = YES; 437 | ENABLE_TESTABILITY = YES; 438 | GCC_C_LANGUAGE_STANDARD = gnu99; 439 | GCC_DYNAMIC_NO_PIC = NO; 440 | GCC_NO_COMMON_BLOCKS = YES; 441 | GCC_OPTIMIZATION_LEVEL = 0; 442 | GCC_PREPROCESSOR_DEFINITIONS = ( 443 | "DEBUG=1", 444 | "$(inherited)", 445 | ); 446 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 447 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 448 | GCC_WARN_UNDECLARED_SELECTOR = YES; 449 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 450 | GCC_WARN_UNUSED_FUNCTION = YES; 451 | GCC_WARN_UNUSED_VARIABLE = YES; 452 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 453 | MTL_ENABLE_DEBUG_INFO = YES; 454 | ONLY_ACTIVE_ARCH = YES; 455 | SDKROOT = iphoneos; 456 | TARGETED_DEVICE_FAMILY = "1,2"; 457 | }; 458 | name = Debug; 459 | }; 460 | 97C147041CF9000F007C117D /* Release */ = { 461 | isa = XCBuildConfiguration; 462 | buildSettings = { 463 | ALWAYS_SEARCH_USER_PATHS = NO; 464 | ARCHS = arm64; 465 | CLANG_ANALYZER_NONNULL = YES; 466 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; 467 | CLANG_CXX_LIBRARY = "libc++"; 468 | CLANG_ENABLE_MODULES = YES; 469 | CLANG_ENABLE_OBJC_ARC = YES; 470 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 471 | CLANG_WARN_BOOL_CONVERSION = YES; 472 | CLANG_WARN_COMMA = YES; 473 | CLANG_WARN_CONSTANT_CONVERSION = YES; 474 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 475 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 476 | CLANG_WARN_EMPTY_BODY = YES; 477 | CLANG_WARN_ENUM_CONVERSION = YES; 478 | CLANG_WARN_INFINITE_RECURSION = YES; 479 | CLANG_WARN_INT_CONVERSION = YES; 480 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 481 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 482 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 483 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 484 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 485 | CLANG_WARN_STRICT_PROTOTYPES = YES; 486 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 487 | CLANG_WARN_UNREACHABLE_CODE = YES; 488 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 489 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; 490 | COPY_PHASE_STRIP = NO; 491 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 492 | ENABLE_BITCODE = NO; 493 | ENABLE_NS_ASSERTIONS = NO; 494 | ENABLE_STRICT_OBJC_MSGSEND = YES; 495 | GCC_C_LANGUAGE_STANDARD = gnu99; 496 | GCC_NO_COMMON_BLOCKS = YES; 497 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 498 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 499 | GCC_WARN_UNDECLARED_SELECTOR = YES; 500 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 501 | GCC_WARN_UNUSED_FUNCTION = YES; 502 | GCC_WARN_UNUSED_VARIABLE = YES; 503 | IPHONEOS_DEPLOYMENT_TARGET = 12.0; 504 | MTL_ENABLE_DEBUG_INFO = NO; 505 | SDKROOT = iphoneos; 506 | SUPPORTED_PLATFORMS = iphoneos; 507 | SWIFT_COMPILATION_MODE = wholemodule; 508 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 509 | TARGETED_DEVICE_FAMILY = "1,2"; 510 | VALIDATE_PRODUCT = YES; 511 | }; 512 | name = Release; 513 | }; 514 | 97C147061CF9000F007C117D /* Debug */ = { 515 | isa = XCBuildConfiguration; 516 | baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; 517 | buildSettings = { 518 | ARCHS = arm64; 519 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 520 | CLANG_ENABLE_MODULES = YES; 521 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 522 | DEVELOPMENT_TEAM = ZE624U53Z6; 523 | ENABLE_BITCODE = NO; 524 | FRAMEWORK_SEARCH_PATHS = ( 525 | "$(inherited)", 526 | "$(PROJECT_DIR)/ThirdParties", 527 | "$(PROJECT_DIR)/Pods/ThirdParties", 528 | ); 529 | INFOPLIST_FILE = Runner/Info.plist; 530 | LD_RUNPATH_SEARCH_PATHS = ( 531 | "$(inherited)", 532 | "@executable_path/Frameworks", 533 | ); 534 | PRODUCT_BUNDLE_IDENTIFIER = com.example.armodFlutterStore; 535 | PRODUCT_NAME = "$(TARGET_NAME)"; 536 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 537 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 538 | SWIFT_VERSION = 5.0; 539 | VERSIONING_SYSTEM = "apple-generic"; 540 | }; 541 | name = Debug; 542 | }; 543 | 97C147071CF9000F007C117D /* Release */ = { 544 | isa = XCBuildConfiguration; 545 | baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; 546 | buildSettings = { 547 | ARCHS = arm64; 548 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 549 | CLANG_ENABLE_MODULES = YES; 550 | CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; 551 | DEVELOPMENT_TEAM = ZE624U53Z6; 552 | ENABLE_BITCODE = NO; 553 | FRAMEWORK_SEARCH_PATHS = ( 554 | "$(inherited)", 555 | "$(PROJECT_DIR)/ThirdParties", 556 | "$(PROJECT_DIR)/Pods/ThirdParties", 557 | ); 558 | INFOPLIST_FILE = Runner/Info.plist; 559 | LD_RUNPATH_SEARCH_PATHS = ( 560 | "$(inherited)", 561 | "@executable_path/Frameworks", 562 | ); 563 | PRODUCT_BUNDLE_IDENTIFIER = com.example.armodFlutterStore; 564 | PRODUCT_NAME = "$(TARGET_NAME)"; 565 | SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; 566 | SWIFT_VERSION = 5.0; 567 | VERSIONING_SYSTEM = "apple-generic"; 568 | }; 569 | name = Release; 570 | }; 571 | /* End XCBuildConfiguration section */ 572 | 573 | /* Begin XCConfigurationList section */ 574 | 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { 575 | isa = XCConfigurationList; 576 | buildConfigurations = ( 577 | 97C147031CF9000F007C117D /* Debug */, 578 | 97C147041CF9000F007C117D /* Release */, 579 | 249021D3217E4FDB00AE95B9 /* Profile */, 580 | ); 581 | defaultConfigurationIsVisible = 0; 582 | defaultConfigurationName = Release; 583 | }; 584 | 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { 585 | isa = XCConfigurationList; 586 | buildConfigurations = ( 587 | 97C147061CF9000F007C117D /* Debug */, 588 | 97C147071CF9000F007C117D /* Release */, 589 | 249021D4217E4FDB00AE95B9 /* Profile */, 590 | ); 591 | defaultConfigurationIsVisible = 0; 592 | defaultConfigurationName = Release; 593 | }; 594 | /* End XCConfigurationList section */ 595 | }; 596 | rootObject = 97C146E61CF9000F007C117D /* Project object */; 597 | } 598 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 37 | 38 | 39 | 40 | 41 | 42 | 52 | 54 | 60 | 61 | 62 | 63 | 69 | 71 | 77 | 78 | 79 | 80 | 82 | 83 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | PreviewsEnabled 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /ios/Runner/ARMODCallbackAPI.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ARMODCallbackAPI.swift 3 | // ARMOD 4 | // 5 | // Created by phantomsxr on 2021/9/2. 6 | // Copyright © 2020 phantomsxr.com. All rights reserved. 7 | // 8 | 9 | import Foundation 10 | import flutter_armod_widget 11 | 12 | @objc public class ARMODCallbackAPI: UIResponder,NativeCallsProtocol { 13 | public func tryAcquireInformation(_ opTag: String!, callBackFuncP callback: TryAcquireInformationCallBackFuncP!) { 14 | let playload: Dictionary = [ 15 | "opTag": opTag! 16 | ] 17 | 18 | globalChannel?.invokeMethod("events#onTryAcquireInformation", arguments: playload, result: {result in 19 | callback((result as? String ?? "").cString(using: .utf8)) 20 | }) 21 | } 22 | 23 | 24 | public func throwException(_ message: String!, errorCode code: Int32) { 25 | let playload: Dictionary = [ 26 | "message": message ?? "Unknow", 27 | "errorCode":code, 28 | ] 29 | 30 | globalChannel?.invokeMethod("events#throwException", arguments: playload) 31 | } 32 | 33 | public func onARMODExit() { 34 | globalChannel?.invokeMethod("events#onARMODExit", arguments: "") 35 | } 36 | 37 | public func onARMODLaunch() { 38 | //Secondary load 39 | if((GetARMODPlayerUtils()?.isARMODReady()) != nil){ 40 | DispatchQueue.main.asyncAfter(deadline: .now()+0.125, execute: 41 | { 42 | globalChannel?.invokeMethod("events#onARMODLaunch", arguments: "") 43 | }) 44 | }else{ 45 | globalChannel?.invokeMethod("events#onARMODLaunch", arguments: "") 46 | } 47 | } 48 | 49 | public func addLoadingOverlay() { 50 | globalChannel?.invokeMethod("events#onAddLoadingOverlay", arguments: "") 51 | } 52 | 53 | public func updateLoadingProgress(_ progress: Float) { 54 | let playload: Dictionary = [ 55 | "progress": progress 56 | ] 57 | globalChannel?.invokeMethod("events#onUpdateLoadingProgress", arguments: playload) 58 | } 59 | 60 | public func removeLoadingOverlay() { 61 | globalChannel?.invokeMethod("events#onRemoveLoadingOverlay", arguments: "") 62 | } 63 | 64 | public func deviceNotSupport() { 65 | globalChannel?.invokeMethod("events#onDeviceNotSupport", arguments: "") 66 | } 67 | 68 | public func sdkInitialized() { 69 | globalChannel?.invokeMethod("events#onSdkInitialized", arguments: "") 70 | } 71 | 72 | public func openBuilt(inBrowser url: String!) { 73 | let playload: Dictionary = [ 74 | "url": url ?? "" 75 | ] 76 | globalChannel?.invokeMethod("events#onOpenBuiltinBrowser", arguments: playload) 77 | } 78 | 79 | public func recognitionStart() { 80 | globalChannel?.invokeMethod("events#onRecognitionStart", arguments: "") 81 | } 82 | 83 | public func recognitionComplete() { 84 | globalChannel?.invokeMethod("events#onRecognitionComplete", arguments: "") 85 | } 86 | 87 | public func packageSizeMoreThanPresetSize(_ currentSize: Float, preset presetSize: Float) { 88 | let playload: Dictionary = [ 89 | "currentSize": currentSize, 90 | "presetSize":presetSize 91 | ] 92 | globalChannel?.invokeMethod("events#onPackageSizeMoreThanPresetSize", arguments: playload) 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /ios/Runner/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | import UIKit 2 | import Flutter 3 | import flutter_armod_widget 4 | 5 | @UIApplicationMain 6 | @objc class AppDelegate: FlutterAppDelegate { 7 | override func application( 8 | _ application: UIApplication, 9 | didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? 10 | ) -> Bool { 11 | InitARMODIntegrationWithOptions(argc: CommandLine.argc, argv: CommandLine.unsafeArgv, launchOptions) 12 | 13 | let nativeCalls: AnyClass? = NSClassFromString("FrameworkLibAPI") 14 | nativeCalls?.registerAPIforNativeCalls(ARMODCallbackAPI()) 15 | GeneratedPluginRegistrant.register(with: self) 16 | return super.application(application, didFinishLaunchingWithOptions: launchOptions) 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "20x20", 5 | "idiom" : "iphone", 6 | "filename" : "Icon-App-20x20@2x.png", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "size" : "20x20", 11 | "idiom" : "iphone", 12 | "filename" : "Icon-App-20x20@3x.png", 13 | "scale" : "3x" 14 | }, 15 | { 16 | "size" : "29x29", 17 | "idiom" : "iphone", 18 | "filename" : "Icon-App-29x29@1x.png", 19 | "scale" : "1x" 20 | }, 21 | { 22 | "size" : "29x29", 23 | "idiom" : "iphone", 24 | "filename" : "Icon-App-29x29@2x.png", 25 | "scale" : "2x" 26 | }, 27 | { 28 | "size" : "29x29", 29 | "idiom" : "iphone", 30 | "filename" : "Icon-App-29x29@3x.png", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "idiom" : "iphone", 36 | "filename" : "Icon-App-40x40@2x.png", 37 | "scale" : "2x" 38 | }, 39 | { 40 | "size" : "40x40", 41 | "idiom" : "iphone", 42 | "filename" : "Icon-App-40x40@3x.png", 43 | "scale" : "3x" 44 | }, 45 | { 46 | "size" : "60x60", 47 | "idiom" : "iphone", 48 | "filename" : "Icon-App-60x60@2x.png", 49 | "scale" : "2x" 50 | }, 51 | { 52 | "size" : "60x60", 53 | "idiom" : "iphone", 54 | "filename" : "Icon-App-60x60@3x.png", 55 | "scale" : "3x" 56 | }, 57 | { 58 | "size" : "20x20", 59 | "idiom" : "ipad", 60 | "filename" : "Icon-App-20x20@1x.png", 61 | "scale" : "1x" 62 | }, 63 | { 64 | "size" : "20x20", 65 | "idiom" : "ipad", 66 | "filename" : "Icon-App-20x20@2x.png", 67 | "scale" : "2x" 68 | }, 69 | { 70 | "size" : "29x29", 71 | "idiom" : "ipad", 72 | "filename" : "Icon-App-29x29@1x.png", 73 | "scale" : "1x" 74 | }, 75 | { 76 | "size" : "29x29", 77 | "idiom" : "ipad", 78 | "filename" : "Icon-App-29x29@2x.png", 79 | "scale" : "2x" 80 | }, 81 | { 82 | "size" : "40x40", 83 | "idiom" : "ipad", 84 | "filename" : "Icon-App-40x40@1x.png", 85 | "scale" : "1x" 86 | }, 87 | { 88 | "size" : "40x40", 89 | "idiom" : "ipad", 90 | "filename" : "Icon-App-40x40@2x.png", 91 | "scale" : "2x" 92 | }, 93 | { 94 | "size" : "76x76", 95 | "idiom" : "ipad", 96 | "filename" : "Icon-App-76x76@1x.png", 97 | "scale" : "1x" 98 | }, 99 | { 100 | "size" : "76x76", 101 | "idiom" : "ipad", 102 | "filename" : "Icon-App-76x76@2x.png", 103 | "scale" : "2x" 104 | }, 105 | { 106 | "size" : "83.5x83.5", 107 | "idiom" : "ipad", 108 | "filename" : "Icon-App-83.5x83.5@2x.png", 109 | "scale" : "2x" 110 | }, 111 | { 112 | "size" : "1024x1024", 113 | "idiom" : "ios-marketing", 114 | "filename" : "Icon-App-1024x1024@1x.png", 115 | "scale" : "1x" 116 | } 117 | ], 118 | "info" : { 119 | "version" : 1, 120 | "author" : "xcode" 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "filename" : "LaunchImage.png", 6 | "scale" : "1x" 7 | }, 8 | { 9 | "idiom" : "universal", 10 | "filename" : "LaunchImage@2x.png", 11 | "scale" : "2x" 12 | }, 13 | { 14 | "idiom" : "universal", 15 | "filename" : "LaunchImage@3x.png", 16 | "scale" : "3x" 17 | } 18 | ], 19 | "info" : { 20 | "version" : 1, 21 | "author" : "xcode" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Phantomxm2021/ARMOD-FlutterAppDemo/1ec39fc14a696f7e888356c0a132a0180da00325/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png -------------------------------------------------------------------------------- /ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md: -------------------------------------------------------------------------------- 1 | # Launch Screen Assets 2 | 3 | You can customize the launch screen with your own desired assets by replacing the image files in this directory. 4 | 5 | You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 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 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /ios/Runner/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 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 | -------------------------------------------------------------------------------- /ios/Runner/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | armod_flutter_store 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | $(FLUTTER_BUILD_NAME) 19 | CFBundleSignature 20 | ???? 21 | CFBundleVersion 22 | $(FLUTTER_BUILD_NUMBER) 23 | LSRequiresIPhoneOS 24 | 25 | UILaunchStoryboardName 26 | LaunchScreen 27 | UIMainStoryboardFile 28 | Main 29 | NSMicrophoneUsageDescription 30 | Recording the audio for video. 31 | NSPhotoLibraryAddUsageDescription 32 | Save image to photo gallery. 33 | io.flutter.embedded_views_preview 34 | YES 35 | NSCameraUsageDescription 36 | $(PRODUCT_NAME) uses Cameras 37 | NSBonjourServices 38 | 39 | _dartobservatory._tcp 40 | 41 | UISupportedInterfaceOrientations 42 | 43 | UIInterfaceOrientationPortrait 44 | UIInterfaceOrientationLandscapeLeft 45 | UIInterfaceOrientationLandscapeRight 46 | 47 | UISupportedInterfaceOrientations~ipad 48 | 49 | UIInterfaceOrientationPortrait 50 | UIInterfaceOrientationPortraitUpsideDown 51 | UIInterfaceOrientationLandscapeLeft 52 | UIInterfaceOrientationLandscapeRight 53 | 54 | UIViewControllerBasedStatusBarAppearance 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /ios/Runner/Runner-Bridging-Header.h: -------------------------------------------------------------------------------- 1 | #import "GeneratedPluginRegistrant.h" 2 | #import 3 | -------------------------------------------------------------------------------- /ios/ThirdParties/README.md: -------------------------------------------------------------------------------- 1 | # Download UnityFramework.framework to this folder 2 | -------------------------------------------------------------------------------- /lib/main.dart: -------------------------------------------------------------------------------- 1 | import 'package:armod_flutter_store/src/config/route.dart'; 2 | import 'package:armod_flutter_store/src/pages/mainPage.dart'; 3 | import 'package:armod_flutter_store/src/pages/ar_experience_detail.dart'; 4 | import 'package:armod_flutter_store/src/themes/theme.dart'; 5 | import 'package:armod_flutter_store/src/widgets/customRoute.dart'; 6 | import 'package:armod_flutter_store/src/widgets/without_scroll_glow.dart'; 7 | import 'package:flutter/material.dart'; 8 | import 'package:flutter_easyloading/flutter_easyloading.dart'; 9 | 10 | void main() { 11 | runApp(MyApp()); 12 | } 13 | 14 | class MyApp extends StatelessWidget { 15 | @override 16 | Widget build(BuildContext context) { 17 | return MaterialApp( 18 | title: 'AR-MOD Store Flutter', 19 | theme: AppTheme.lightTheme, 20 | debugShowCheckedModeBanner: false, 21 | scrollBehavior: without_scroll_glow(), 22 | builder: EasyLoading.init(), 23 | routes: Routes.getRoute(), 24 | onGenerateRoute: (RouteSettings settings) { 25 | if (settings.name!.contains('detail')) { 26 | return CustomRoute( 27 | builder: (BuildContext context) => ARExperienceDetailPage()); 28 | } else { 29 | return CustomRoute( 30 | builder: (BuildContext context) => MainPage()); 31 | } 32 | }, 33 | initialRoute: "MainPage", 34 | ); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /lib/src/config/phantomsxrConfig.dart: -------------------------------------------------------------------------------- 1 | class PhantomsXRConfig { 2 | // static String AppToken = "eyJhbGciOiJIUzUxMiIsImlhdCI6MTYxODc2OTkzMSwiZXhwIjoxMDI1ODc2OTkzMX0.eyJwYWNrYWdlaWQiOiJjb20ucGhhbnRvbXMuYXJtb2QiLCJ1c2VyX3VpZCI6MTAxMjQ1MTU0M30.TZv-LKoNvQqnvpXKVDGhY7YNu1OFnazLBODbgdZydRsmyHD4z7Nd7kmi7Hbt4bLQndRcgGE_9IRvVjE64foCkQ"; 3 | static String AppToken = "eyJhbGciOiJIUzUxMiIsImlhdCI6MTY0NjQwNzkxNSwiZXhwIjoxMDI4NjQwNzkxNX0.eyJwYWNrYWdlaWQiOiJjb20ucGhhbnRvbXMuYXJtb2QiLCJ1c2VyX3VpZCI6MTAxMjQ1MTU0M30.JS0QsLI6ebMVN_HA9v9U1CT4YMP3BU-IheBojNrBxi282HUWS0LK8w9mG7XPSSsOy-hBopHlw7sP-fa-6wroAA"; 4 | } 5 | -------------------------------------------------------------------------------- /lib/src/config/route.dart: -------------------------------------------------------------------------------- 1 | import 'package:armod_flutter_store/src/pages/ar_view.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:armod_flutter_store/src/pages/mainPage.dart'; 4 | 5 | class Routes { 6 | static Map getRoute() { 7 | return { 8 | '/': (_) => MainPage(), 9 | '/ar_view': (_) => ARView() 10 | }; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /lib/src/model/data.dart: -------------------------------------------------------------------------------- 1 | 2 | 3 | class AppData { 4 | static int seleted_project_id = 0; 5 | static String ar_experience_uid = ""; 6 | } 7 | -------------------------------------------------------------------------------- /lib/src/model/general_experience.dart: -------------------------------------------------------------------------------- 1 | class GeneralExperence { 2 | int? app_uid; 3 | int? user_uid; 4 | int? project_id; 5 | String? project_name; 6 | String? project_brief; 7 | String? project_icon; 8 | 9 | 10 | GeneralExperence( 11 | {this.app_uid, 12 | this.user_uid, 13 | this.project_id, 14 | this.project_name, 15 | this.project_brief, 16 | this.project_icon}); 17 | 18 | GeneralExperence.fromJson(Map json) { 19 | app_uid = json['app_uid']; 20 | user_uid = json['user_uid']; 21 | project_id = json['project_id']; 22 | project_name = json['project_name']; 23 | project_icon = json['project_icon']; 24 | project_brief = json['project_brief']; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /lib/src/model/general_experience_detail.dart: -------------------------------------------------------------------------------- 1 | class GeneralExperenceDetail { 2 | int? app_uid; 3 | int? user_uid; 4 | int? project_id; 5 | String? project_name; 6 | String? project_brief; 7 | String? project_icon; 8 | String? project_header; 9 | String? project_description; 10 | 11 | List? showcase_not_index_tags; 12 | 13 | GeneralExperenceDetail( 14 | {this.app_uid, 15 | this.user_uid, 16 | this.project_id, 17 | this.project_name, 18 | this.project_brief, 19 | this.project_icon, 20 | this.project_description, 21 | }); 22 | 23 | GeneralExperenceDetail.fromJson(Map json) { 24 | app_uid = json['app_uid']; 25 | user_uid = json['user_uid']; 26 | project_id = json['project_id']; 27 | project_name = json['project_name']; 28 | project_brief = json['project_brief']; 29 | project_header = json['project_header']; 30 | project_icon=json['project_icon']; 31 | project_description=json['project_description']; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /lib/src/model/recommand_experience.dart: -------------------------------------------------------------------------------- 1 | class RecommandARExperience { 2 | int? app_uid; 3 | int? user_uid; 4 | int? arexperience_uid; 5 | int? project_id; 6 | String? project_name; 7 | String? project_brief; 8 | String? showcase_icon; 9 | String? project_header; 10 | List? showcase_not_index_tags; 11 | RecommandARExperience( 12 | {this.app_uid, 13 | this.user_uid, 14 | this.arexperience_uid, 15 | this.project_id, 16 | this.project_brief, 17 | this.project_header, 18 | this.showcase_icon, 19 | this.project_name, 20 | this.showcase_not_index_tags}); 21 | 22 | factory RecommandARExperience.fromJson(Map json) { 23 | return RecommandARExperience( 24 | app_uid: json['app_uid'], 25 | user_uid: json['user_uid'], 26 | arexperience_uid: json['arexperience_uid'], 27 | project_header: json['project_header'], 28 | project_id: json['project_id'], 29 | project_name: json['project_name'], 30 | project_brief: json['project_brief'], 31 | showcase_icon: json['showcase_icon'], 32 | showcase_not_index_tags: json['showcase_not_index_tags'], 33 | ); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /lib/src/pages/ar_experience_detail.dart: -------------------------------------------------------------------------------- 1 | import 'package:armod_flutter_store/src/model/general_experience_detail.dart'; 2 | import 'package:flutter/material.dart'; 3 | import 'package:armod_flutter_store/src/model/data.dart'; 4 | import 'package:armod_flutter_store/src/themes/light_color.dart'; 5 | import 'package:armod_flutter_store/src/themes/theme.dart'; 6 | import 'package:armod_flutter_store/src/widgets/title_text.dart'; 7 | import 'package:flutter/services.dart'; 8 | 9 | import '../utils.dart'; 10 | 11 | class ARExperienceDetailPage extends StatefulWidget { 12 | ARExperienceDetailPage({Key? key}) : super(key: key); 13 | @override 14 | _ARExperienceDetailPageState createState() => _ARExperienceDetailPageState(); 15 | } 16 | 17 | class _ARExperienceDetailPageState extends State 18 | with TickerProviderStateMixin { 19 | late AnimationController controller; 20 | late Animation animation; 21 | late GeneralExperenceDetail generalExperience; 22 | bool hasData = false; 23 | bool luanched_ar = false; 24 | @override 25 | void initState() { 26 | super.initState(); 27 | controller = 28 | AnimationController(vsync: this, duration: Duration(milliseconds: 300)); 29 | animation = Tween(begin: 0, end: 1).animate( 30 | CurvedAnimation(parent: controller, curve: Curves.easeInToLinear)); 31 | controller.forward(); 32 | startToPullRecommand(); 33 | } 34 | 35 | @override 36 | void dispose() { 37 | controller.dispose(); 38 | super.dispose(); 39 | hasData = false; 40 | } 41 | 42 | bool isLiked = true; 43 | Widget _appBar() { 44 | return SafeArea( 45 | top: true, 46 | child: GestureDetector( 47 | child: Container( 48 | padding: AppTheme.padding, 49 | child: Row( 50 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 51 | children: [ 52 | Container( 53 | width: 25, 54 | height: 25, 55 | alignment: Alignment.center, 56 | decoration: BoxDecoration( 57 | color: Colors.white, 58 | borderRadius: BorderRadius.all(Radius.circular(15)), 59 | ), 60 | child: 61 | Icon(Icons.arrow_back, color: Colors.black54, size: 20), 62 | ) 63 | ], 64 | ), 65 | ), 66 | onTap: () { 67 | Navigator.of(context).pop(true); 68 | }, 69 | )); 70 | } 71 | 72 | void startToPullRecommand() async { 73 | generalExperience = await queryGeneralExperenceDetail(); 74 | setState(() { 75 | hasData = true; 76 | }); 77 | } 78 | 79 | ///Get all showcases 80 | Future queryGeneralExperenceDetail() async { 81 | var result = await Utils.queryPhantomCloud('getarexperience',"POST", 82 | {"project_id": AppData.seleted_project_id.toString()}); 83 | return GeneralExperenceDetail.fromJson(result['data']); 84 | } 85 | 86 | Widget _arExperienceImage() { 87 | return AnimatedBuilder( 88 | builder: (context, child) { 89 | return AnimatedOpacity( 90 | duration: Duration(milliseconds: 500), 91 | opacity: animation.value, 92 | child: child, 93 | ); 94 | }, 95 | animation: animation, 96 | child: Container( 97 | width: AppTheme.fullWidth(context), 98 | height: AppTheme.fullHeight(context) * 0.5, 99 | decoration: BoxDecoration( 100 | image: DecorationImage( 101 | image: NetworkImage(generalExperience.project_header ?? ""), 102 | fit: BoxFit.cover)), 103 | )); 104 | } 105 | 106 | Widget _detailWidget() { 107 | return DraggableScrollableSheet( 108 | maxChildSize: .8, 109 | initialChildSize: .6, 110 | minChildSize: .6, 111 | builder: (context, scrollController) { 112 | return Container( 113 | padding: AppTheme.padding.copyWith(bottom: 0), 114 | decoration: BoxDecoration( 115 | borderRadius: BorderRadius.only( 116 | topLeft: Radius.circular(40), 117 | topRight: Radius.circular(40), 118 | ), 119 | color: Colors.white), 120 | child: NotificationListener( 121 | onNotification: (OverscrollIndicatorNotification overscroll) { 122 | overscroll.disallowGlow(); 123 | return false; 124 | }, 125 | child: SingleChildScrollView( 126 | controller: scrollController, 127 | child: Column( 128 | crossAxisAlignment: CrossAxisAlignment.start, 129 | mainAxisSize: MainAxisSize.max, 130 | children: [ 131 | SizedBox(height: 5), 132 | Container( 133 | alignment: Alignment.center, 134 | child: Container( 135 | width: 50, 136 | height: 5, 137 | decoration: BoxDecoration( 138 | color: LightColor.iconColor, 139 | borderRadius: 140 | BorderRadius.all(Radius.circular(10))), 141 | ), 142 | ), 143 | SizedBox(height: 10), 144 | Container( 145 | child: Row( 146 | crossAxisAlignment: CrossAxisAlignment.start, 147 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 148 | children: [ 149 | TitleText( 150 | text: generalExperience.project_name ?? "", 151 | fontSize: 25), 152 | ], 153 | ), 154 | ), 155 | SizedBox( 156 | height: 20, 157 | ), 158 | _description(), 159 | ], 160 | ), 161 | ), 162 | )); 163 | }, 164 | ); 165 | } 166 | 167 | Widget _description() { 168 | return Column( 169 | crossAxisAlignment: CrossAxisAlignment.start, 170 | children: [ 171 | TitleText( 172 | text: "描述", 173 | fontSize: 14, 174 | ), 175 | SizedBox(height: 20), 176 | Text(generalExperience.project_description ?? ""), 177 | ], 178 | ); 179 | } 180 | 181 | FloatingActionButton _flotingButton() { 182 | return FloatingActionButton( 183 | onPressed: () { 184 | if (luanched_ar) return; 185 | luanched_ar = true; 186 | AppData.ar_experience_uid = 187 | generalExperience.project_id.toString(); 188 | Navigator.of(context).pushNamed("/ar_view"); 189 | luanched_ar = false; 190 | }, 191 | child: Container( 192 | width: 60, 193 | height: 60, 194 | child: Icon(Icons.view_in_ar, 195 | color: Theme.of(context).floatingActionButtonTheme.backgroundColor), 196 | decoration: BoxDecoration( 197 | shape: BoxShape.circle, 198 | gradient: 199 | LinearGradient(colors: [Color(0xFFCE9FFC), Color(0xFF7367F0)])), 200 | ), 201 | ); 202 | } 203 | 204 | @override 205 | Widget build(BuildContext context) { 206 | //Fix status bar not display 207 | SystemChrome.setEnabledSystemUIOverlays(SystemUiOverlay.values); 208 | 209 | return Scaffold( 210 | floatingActionButton: _flotingButton(), 211 | body: SafeArea( 212 | top: false, 213 | child: hasData 214 | ? Stack( 215 | children: [ 216 | _arExperienceImage(), 217 | _detailWidget(), 218 | _appBar(), 219 | ], 220 | ) 221 | : Stack(children: [ 222 | Column(children: [_appBar()]) 223 | ]), 224 | )); 225 | } 226 | } 227 | -------------------------------------------------------------------------------- /lib/src/pages/ar_view.dart: -------------------------------------------------------------------------------- 1 | import 'dart:async'; 2 | 3 | import 'package:armod_flutter_store/src/model/data.dart'; 4 | import 'package:armod_flutter_store/src/themes/theme.dart'; 5 | import 'package:flutter/cupertino.dart'; 6 | import 'package:flutter/material.dart'; 7 | import 'package:flutter_armod_widget/flutter_armod_widget.dart'; 8 | import 'package:flutter_easyloading/flutter_easyloading.dart'; 9 | import 'package:flutter/services.dart'; 10 | 11 | import '../config/phantomsxrConfig.dart'; 12 | 13 | class ARView extends StatefulWidget { 14 | ARView({Key? key}) : super(key: key); 15 | 16 | @override 17 | ARViewState createState() => ARViewState(); 18 | } 19 | 20 | class ARViewState extends State { 21 | late ARMODWidgetController _armodWidgetController; 22 | bool _onWillPop = false; 23 | bool _isClosedByBack = false; 24 | @override 25 | void initState() { 26 | super.initState(); 27 | } 28 | 29 | @override 30 | void dispose() { 31 | super.dispose(); 32 | EasyLoading.dismiss(); 33 | } 34 | 35 | Widget _appBar() { 36 | return SafeArea( 37 | top: true, 38 | child: GestureDetector( 39 | child: Container( 40 | padding: AppTheme.padding, 41 | child: Row( 42 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 43 | children: [ 44 | Container( 45 | width: 25, 46 | height: 25, 47 | alignment: Alignment.center, 48 | decoration: BoxDecoration( 49 | color: Colors.white, 50 | borderRadius: BorderRadius.all(Radius.circular(15)), 51 | ), 52 | child: Icon(Icons.close, color: Colors.black54, size: 20), 53 | ) 54 | ], 55 | ), 56 | ), 57 | onTap: () async { 58 | await _onBackPressed(); 59 | }, 60 | )); 61 | } 62 | 63 | @override 64 | Widget build(BuildContext context) { 65 | return new WillPopScope( 66 | onWillPop: _onBackPressed, 67 | child: new Scaffold( 68 | body: Card( 69 | margin: const EdgeInsets.all(0), 70 | clipBehavior: Clip.antiAlias, 71 | shape: RoundedRectangleBorder( 72 | borderRadius: BorderRadius.circular(20.0), 73 | ), 74 | child: Stack( 75 | children: [ 76 | ARMODWidget( 77 | onARMODCreated: onARMODCreate, 78 | onARMODExit: onARMODExit, 79 | onARMODLaunch: onARMODLaunch, 80 | onAddLoadingOverlay: onAddLoadingOverlay, 81 | onDeviceNotSupport: onDeviceNotSupport, 82 | onNeedInstallARCoreService: onNeedInstallARCoreService, 83 | onOpenBuiltInBrowser: onOpenBuiltInBrowser, 84 | onPackageSizeMoreThanPresetSize: onPackageSizeMoreThanPresetSize, 85 | onRecognitionComplete: onRecognitionComplete, 86 | onRecognitionStart: onRecognitionStart, 87 | onRemoveLoadingOverlay: onRemoveLoadingOverlay, 88 | onSdkInitialized: onSdkInitialized, 89 | onThrowException: onThrowException, 90 | onTryAcquireInformation: onTryAcquireInformation, 91 | onUpdateLoadingProgress: onUpdateLoadingProgress, 92 | useAndroidViewSurface: false, 93 | ), 94 | _appBar() 95 | ], 96 | ), 97 | ) 98 | ), 99 | ); 100 | } 101 | 102 | ///Handling the back event 103 | Future _onBackPressed() async { 104 | //Close AR-MOD SDK 105 | _armodWidgetController.unloadAndHideARMOD(); 106 | 107 | while (!_onWillPop) { 108 | //We need to delayed executed because release AR-MOD operation is async. 109 | //May need to wait one more frame 110 | await Future.delayed(Duration(milliseconds: 1)); 111 | } 112 | _isClosedByBack = true; 113 | return _onWillPop; 114 | } 115 | 116 | showAlertDialog(BuildContext context, String title, String msg, bool close) { 117 | // set up the button 118 | Widget okButton = TextButton( 119 | child: Text("OK"), 120 | onPressed: () async { 121 | if (close) { 122 | //Dismiss loading ui 123 | EasyLoading.dismiss(); 124 | 125 | //Dismiss alert 126 | Navigator.of(context, rootNavigator: true).pop(); 127 | 128 | //Dismiss view 129 | await _onBackPressed(); 130 | } 131 | }, 132 | ); 133 | 134 | // set up the AlertDialog 135 | AlertDialog alert = AlertDialog( 136 | title: Text(title), 137 | content: Text(msg), 138 | actions: [ 139 | okButton, 140 | ], 141 | ); 142 | 143 | // show the dialog 144 | showDialog( 145 | barrierDismissible: false, 146 | context: context, 147 | builder: (BuildContext context) { 148 | return alert; 149 | }, 150 | ); 151 | } 152 | 153 | Future onARMODCreate(controller) async { 154 | this._armodWidgetController = controller; 155 | if (await _armodWidgetController.isLoaded() != false) 156 | _armodWidgetController.create(); 157 | } 158 | 159 | void onARMODLaunch() { 160 | //Set the app orientation 161 | var orientationId = 162 | MediaQuery.of(context).orientation == Orientation.portrait ? '1' : '2'; 163 | _armodWidgetController.setDeivcesOrientation(orientationId); 164 | 165 | //Init XRMOD Engine 166 | _armodWidgetController.initARMOD( 167 | '{"EngineType":"Native","dashboardConfig":{"dashboardGateway":"https://phantomsxr.cn/api/v2/getarresources","token":"${PhantomsXRConfig.AppToken}","timeout":30,"maximumDownloadSize":30},"imageCloudRecognizerConfig":{"gateway":"","maximumOfRetries":5,"frequencyOfScan":5}}'); 168 | 169 | //Fetch the data from XRMOD Cloud 170 | _armodWidgetController.fetchProject(AppData.ar_experience_uid); 171 | } 172 | 173 | void onThrowException(String errorMsg, int erorCode) { 174 | EasyLoading.dismiss(); 175 | showAlertDialog(context, "(Error:$erorCode)", errorMsg, true); 176 | } 177 | 178 | void onARMODExit() { 179 | //Wait to release all asset 180 | _onWillPop = true; 181 | //Close by AR-Experiences 182 | if (!_isClosedByBack) Navigator.of(context).pop(true); 183 | } 184 | 185 | void onUpdateLoadingProgress(progress) { 186 | print("Load progress:$progress"); 187 | EasyLoading.showProgress(progress, 188 | status: '${(progress * 100).toStringAsFixed(0)}%'); 189 | } 190 | 191 | Future onTryAcquireInformation(String opTag) async { 192 | await Future.delayed(Duration(seconds: 3)); 193 | return "onTryAcquireInformation_$opTag"; 194 | } 195 | 196 | void onAddLoadingOverlay() { 197 | EasyLoading.instance 198 | ..indicatorType = EasyLoadingIndicatorType.fadingCircle 199 | ..maskColor = Colors.red.withOpacity(0.5) 200 | ..dismissOnTap = false; 201 | } 202 | 203 | void onRemoveLoadingOverlay() { 204 | print("onRemoveLoadingOverlay"); 205 | EasyLoading.dismiss(); 206 | } 207 | 208 | void onDeviceNotSupport() { 209 | showAlertDialog( 210 | context, 211 | "Device Not Supported", 212 | "Your device is not supoorted! \n Will downgrade to normal version", 213 | false); 214 | } 215 | 216 | void onRecognitionStart() {} 217 | 218 | void onNeedInstallARCoreService() { 219 | showAlertDialog(context, "ARCore Service Need", 220 | "You need to install the ARCore service!", false); 221 | } 222 | 223 | void onSdkInitialized() { 224 | print("\nSdkInitialized\n"); 225 | } 226 | 227 | void onOpenBuiltInBrowser(url) {} 228 | 229 | void onPackageSizeMoreThanPresetSize(currentSize, presetSize) {} 230 | 231 | void onRecognitionComplete() {} 232 | } 233 | -------------------------------------------------------------------------------- /lib/src/pages/home_page.dart: -------------------------------------------------------------------------------- 1 | import 'package:armod_flutter_store/src/model/general_experience.dart'; 2 | import 'package:armod_flutter_store/src/widgets/column_builder.dart'; 3 | 4 | import 'package:armod_flutter_store/src/model/recommand_experience.dart'; 5 | import 'package:armod_flutter_store/src/widgets/experience_card.dart'; 6 | import 'package:armod_flutter_store/src/widgets/recommend_card.dart'; 7 | import 'package:flutter/gestures.dart'; 8 | import 'package:flutter/material.dart'; 9 | import 'package:armod_flutter_store/src/themes/theme.dart'; 10 | import 'package:scroll_snap_list/scroll_snap_list.dart'; 11 | 12 | import '../utils.dart'; 13 | 14 | class MyHomePage extends StatefulWidget { 15 | MyHomePage({Key? key, this.title}) : super(key: key); 16 | 17 | final String? title; 18 | 19 | @override 20 | _MyHomePageState createState() => _MyHomePageState(); 21 | } 22 | 23 | class _MyHomePageState extends State { 24 | GlobalKey sslKey = GlobalKey(); 25 | late List recommandARExperience = []; 26 | late List generalExperience = []; 27 | 28 | @override 29 | void initState() { 30 | super.initState(); 31 | startToPullRecommand(); 32 | } 33 | 34 | void startToPullRecommand() async { 35 | recommandARExperience = await queryRecommand(); 36 | generalExperience = await queryGeneralExperence(); 37 | setState(() {}); 38 | } 39 | 40 | void _onItemFocus(int index) {} 41 | 42 | Widget _buildListItem(BuildContext context, int index) { 43 | return Container( 44 | child: RecommandCard( 45 | recommandItem: recommandARExperience[index], 46 | )); 47 | } 48 | 49 | final PageController controller = PageController(initialPage: 0); 50 | Widget _recommandWidget() { 51 | return Column( 52 | children: [ 53 | Container( 54 | margin: EdgeInsets.only(top: 10), 55 | width: AppTheme.fullWidth(context), 56 | height: AppTheme.fullHeight(context) * 0.34, 57 | child: NotificationListener( 58 | onNotification: (OverscrollIndicatorNotification overscroll) { 59 | overscroll.disallowGlow(); 60 | return false; 61 | }, 62 | child: ScrollSnapList( 63 | onItemFocus: _onItemFocus, 64 | itemSize: 340, 65 | itemBuilder: _buildListItem, 66 | itemCount: recommandARExperience.length, 67 | key: sslKey, 68 | ), 69 | )), 70 | Padding( 71 | padding: EdgeInsets.symmetric(horizontal: 20), 72 | child: Divider(), 73 | ), 74 | ], 75 | ); 76 | } 77 | 78 | Widget _buildGeneralExperience(BuildContext context, int index) { 79 | return ExperienceCard(generalExperienceItem: generalExperience[index]); 80 | } 81 | 82 | void _onGeneralARExperienceFocus(int index) { 83 | setState(() {}); 84 | } 85 | 86 | Widget _allARexperiences() { 87 | return NotificationListener( 88 | onNotification: (OverscrollIndicatorNotification overscroll) { 89 | overscroll.disallowGlow(); 90 | return false; 91 | }, 92 | child: SingleChildScrollView( 93 | child: ColumnBuilder( 94 | focusToItem: _onGeneralARExperienceFocus, 95 | itemBuilder: _buildGeneralExperience, 96 | itemCount: generalExperience.length))); 97 | } 98 | 99 | @override 100 | Widget build(BuildContext context) { 101 | return NotificationListener( 102 | onNotification: (OverscrollIndicatorNotification overscroll) { 103 | overscroll.disallowGlow(); 104 | return true; 105 | }, 106 | child: Container( 107 | color: Colors.transparent.withOpacity(0), 108 | child: SingleChildScrollView( 109 | // physics: BouncingScrollPhysics(), 110 | // dragStartBehavior: DragStartBehavior.down, 111 | child: Column( 112 | crossAxisAlignment: CrossAxisAlignment.start, 113 | mainAxisAlignment: MainAxisAlignment.start, 114 | children: [ 115 | _recommandWidget(), 116 | _allARexperiences(), 117 | ], 118 | ), 119 | ), 120 | )); 121 | } 122 | 123 | ///Used to get all recommended showcases of the current APP 124 | Future> queryRecommand() async { 125 | var result = await Utils.queryPhantomCloud("getrecommendslist","POST", null); 126 | List recommandItems = result['data']; 127 | List recommandARExperiences = []; 128 | for (var idx = 0; idx < recommandItems.length; idx++) { 129 | recommandARExperiences 130 | .add(RecommandARExperience.fromJson(recommandItems[idx])); 131 | } 132 | return recommandARExperiences; 133 | } 134 | 135 | ///Get all showcases 136 | Future> queryGeneralExperence() async { 137 | var result = await Utils.queryPhantomCloud('getarexperiencelist',"GET", null); 138 | List generalItems = result['data']; 139 | List generalExperences = []; 140 | for (var idx = 0; idx < generalItems.length; idx++) { 141 | generalExperences.add(GeneralExperence.fromJson(generalItems[idx])); 142 | } 143 | return generalExperences; 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /lib/src/pages/mainPage.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:armod_flutter_store/src/pages/home_page.dart'; 3 | import 'package:armod_flutter_store/src/themes/light_color.dart'; 4 | import 'package:armod_flutter_store/src/themes/theme.dart'; 5 | import 'package:armod_flutter_store/src/widgets/extentions.dart'; 6 | 7 | class MainPage extends StatefulWidget { 8 | MainPage({Key? key, this.title}) : super(key: key); 9 | 10 | final String? title; 11 | 12 | @override 13 | _MainPageState createState() => _MainPageState(); 14 | } 15 | 16 | class _MainPageState extends State { 17 | bool isHomePageSelected = true; 18 | Widget _appBar() { 19 | return Container( 20 | padding: AppTheme.padding, 21 | child: Row( 22 | mainAxisAlignment: MainAxisAlignment.spaceBetween, 23 | children: [ 24 | Spacer(), 25 | ClipRRect( 26 | borderRadius: BorderRadius.all(Radius.circular(13)), 27 | child: Container( 28 | decoration: BoxDecoration( 29 | color: Theme.of(context).backgroundColor, 30 | boxShadow: [ 31 | BoxShadow( 32 | color: Color(0xfff8f8f8), 33 | blurRadius: 10, 34 | spreadRadius: 10), 35 | ], 36 | ), 37 | child: 38 | _icon(Icons.document_scanner_outlined, color: Colors.black54), 39 | ), 40 | ) 41 | ], 42 | ), 43 | ); 44 | } 45 | 46 | Widget _icon(IconData icon, {Color color = LightColor.iconColor}) { 47 | return Container( 48 | padding: EdgeInsets.all(10), 49 | decoration: BoxDecoration( 50 | borderRadius: BorderRadius.all(Radius.circular(13)), 51 | color: Theme.of(context).backgroundColor, 52 | boxShadow: AppTheme.shadow), 53 | child: Icon( 54 | icon, 55 | color: color, 56 | ), 57 | ).ripple(() {}, borderRadius: BorderRadius.all(Radius.circular(13))); 58 | } 59 | 60 | void onBottomIconPressed(int index) { 61 | if (index == 0 || index == 1) { 62 | setState(() { 63 | isHomePageSelected = true; 64 | }); 65 | } else { 66 | setState(() { 67 | isHomePageSelected = false; 68 | }); 69 | } 70 | } 71 | 72 | @override 73 | Widget build(BuildContext context) { 74 | return Scaffold( 75 | body: SafeArea( 76 | bottom: false, 77 | top: true, 78 | child: Stack( 79 | fit: StackFit.expand, 80 | children: [ 81 | SingleChildScrollView( 82 | child: Container( 83 | decoration: BoxDecoration( 84 | gradient: LinearGradient( 85 | colors: [ 86 | Color(0xfffbfbfb), 87 | Color(0xfff7f7f7), 88 | ], 89 | begin: Alignment.topCenter, 90 | end: Alignment.bottomCenter, 91 | ), 92 | ), 93 | child: Column( 94 | crossAxisAlignment: CrossAxisAlignment.start, 95 | children: [ 96 | // _appBar(), 97 | MyHomePage(), 98 | ], 99 | ), 100 | ), 101 | ), 102 | ], 103 | ), 104 | ), 105 | ); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /lib/src/themes/light_color.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class LightColor { 4 | static const Color background = Color(0XFFFFFFFF); 5 | 6 | static const Color titleTextColor = const Color(0xff1d2635); 7 | static const Color subTitleTextColor = const Color(0xff797878); 8 | 9 | static const Color skyBlue = Color(0xff2890c8); 10 | static const Color lightBlue = Color(0xff5c3dff); 11 | 12 | 13 | static const Color orange = Color(0xffE65829); 14 | static const Color red = Color(0xffF72804); 15 | 16 | static const Color lightGrey = Color(0xffE1E2E4); 17 | static const Color grey = Color(0xffA1A3A6); 18 | static const Color darkgrey = Color(0xff747F8F); 19 | 20 | static const Color iconColor = Color(0xffa8a09b); 21 | static const Color yellowColor = Color(0xfffbba01); 22 | 23 | static const Color black = Color(0xff20262C); 24 | static const Color lightblack = Color(0xff5F5F60); 25 | } -------------------------------------------------------------------------------- /lib/src/themes/theme.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | import 'light_color.dart'; 4 | 5 | class AppTheme { 6 | const AppTheme(); 7 | static ThemeData lightTheme = ThemeData( 8 | backgroundColor: LightColor.background, 9 | primaryColor: LightColor.background, 10 | cardTheme: CardTheme(color: LightColor.background), 11 | textTheme: TextTheme(bodyText1: TextStyle(color: LightColor.black)), 12 | iconTheme: IconThemeData(color: LightColor.iconColor), 13 | bottomAppBarColor: LightColor.background, 14 | dividerColor: LightColor.lightGrey, 15 | primaryTextTheme: 16 | TextTheme(bodyText1: TextStyle(color: LightColor.titleTextColor))); 17 | 18 | static TextStyle titleStyle = 19 | const TextStyle(color: LightColor.titleTextColor, fontSize: 16); 20 | static TextStyle subTitleStyle = 21 | const TextStyle(color: LightColor.subTitleTextColor, fontSize: 12); 22 | 23 | static TextStyle h1Style = 24 | const TextStyle(fontSize: 24, fontWeight: FontWeight.bold); 25 | static TextStyle h2Style = const TextStyle(fontSize: 22); 26 | static TextStyle h3Style = const TextStyle(fontSize: 20); 27 | static TextStyle h4Style = const TextStyle(fontSize: 18); 28 | static TextStyle h5Style = const TextStyle(fontSize: 16); 29 | static TextStyle h6Style = const TextStyle(fontSize: 14); 30 | 31 | static List shadow = [ 32 | BoxShadow(color: Color(0xfff8f8f8), blurRadius: 10, spreadRadius: 15), 33 | ]; 34 | 35 | static EdgeInsets padding = 36 | const EdgeInsets.symmetric(horizontal: 20, vertical: 10); 37 | static EdgeInsets hPadding = const EdgeInsets.symmetric( 38 | horizontal: 10, 39 | ); 40 | 41 | static double fullWidth(BuildContext context) { 42 | return MediaQuery.of(context).size.width; 43 | } 44 | 45 | static double fullHeight(BuildContext context) { 46 | return MediaQuery.of(context).size.height; 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /lib/src/utils.dart: -------------------------------------------------------------------------------- 1 | import 'dart:convert'; 2 | import 'package:http/http.dart' as http; 3 | 4 | import 'config/phantomsxrConfig.dart'; 5 | 6 | class Utils { 7 | static final String baseAPIGatewayUrl = "https://phantomsxr.cn/api/v2/"; 8 | static Future queryPhantomCloud(String apiAction,String method ,Map? queryBody) async { 9 | Map body = {}; 10 | final packageid="com.phantoms.armod"; 11 | body['packageid'] = packageid; 12 | if (queryBody != null) body.addAll(queryBody); 13 | dynamic response = null; 14 | if(method=="POST"){ 15 | response = await http.post(Uri.parse('$baseAPIGatewayUrl$apiAction'), 16 | headers: { 17 | 'Content-Type': 'application/x-www-form-urlencoded', 18 | 'authorization':'Token ${PhantomsXRConfig.AppToken}', 19 | }, 20 | body: body); 21 | }else{ 22 | response = await http.get(Uri.parse('$baseAPIGatewayUrl$apiAction?packageid=$packageid'), 23 | headers: { 24 | 'Content-Type': 'application/x-www-form-urlencoded', 25 | 'authorization':'Token ${PhantomsXRConfig.AppToken}', 26 | }); 27 | } 28 | 29 | if (response.statusCode == 200) { 30 | dynamic responseData = json.decode(response.body); 31 | return responseData; 32 | } else { 33 | throw Exception('Request Failed'); 34 | } 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /lib/src/widgets/column_builder.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/cupertino.dart'; 2 | 3 | class ColumnBuilder extends StatelessWidget { 4 | final IndexedWidgetBuilder itemBuilder; 5 | final MainAxisAlignment mainAxisAlignment; 6 | final MainAxisSize mainAxisSize; 7 | final CrossAxisAlignment crossAxisAlignment; 8 | final TextDirection? textDirection; 9 | final VerticalDirection verticalDirection; 10 | final int itemCount; 11 | 12 | ///Method to manually trigger focus to an item. Call with help of `GlobalKey`. 13 | final void Function(int)? focusToItem; 14 | static BuildContext? buildContext; 15 | 16 | const ColumnBuilder({ 17 | Key? key, 18 | required this.itemBuilder, 19 | required this.itemCount, 20 | required this.focusToItem, 21 | this.mainAxisAlignment: MainAxisAlignment.start, 22 | this.mainAxisSize: MainAxisSize.max, 23 | this.crossAxisAlignment: CrossAxisAlignment.center, 24 | this.textDirection, 25 | this.verticalDirection: VerticalDirection.down, 26 | }) : super(key: key); 27 | @override 28 | Widget build(BuildContext context) { 29 | buildContext = context; 30 | return new Column( 31 | children: new List.generate(this.itemCount, _buildListItem).toList(), 32 | ); 33 | } 34 | 35 | Widget _buildListItem(int index) { 36 | Widget child; 37 | child = this.itemBuilder(buildContext!, index); 38 | 39 | return GestureDetector( 40 | onTap: () => focusToItem!(index), 41 | child: child, 42 | ); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /lib/src/widgets/customRoute.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | class CustomRoute extends MaterialPageRoute { 4 | CustomRoute({required WidgetBuilder builder, RouteSettings? settings}) 5 | : super(builder: builder, settings: settings); 6 | @override 7 | Widget buildTransitions(BuildContext context, Animation animation, 8 | Animation secondaryAnimation, Widget child) { 9 | if (settings.name == "MainPage") { 10 | return child; 11 | } 12 | return FadeTransition( 13 | opacity: animation, 14 | child: child, 15 | ); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /lib/src/widgets/experience_card.dart: -------------------------------------------------------------------------------- 1 | import 'package:armod_flutter_store/src/model/data.dart'; 2 | import 'package:armod_flutter_store/src/model/general_experience.dart'; 3 | import 'package:armod_flutter_store/src/widgets/subtitle_text.dart'; 4 | import 'package:flutter/material.dart'; 5 | 6 | import 'package:armod_flutter_store/src/themes/light_color.dart'; 7 | import 'package:armod_flutter_store/src/widgets/title_text.dart'; 8 | 9 | class ExperienceCard extends StatelessWidget { 10 | final GeneralExperence? generalExperienceItem; 11 | final ValueChanged? onSelected; 12 | ExperienceCard({Key? key, this.generalExperienceItem, this.onSelected}) 13 | : super(key: key); 14 | @override 15 | Widget build(BuildContext context) { 16 | return GestureDetector( 17 | onTap: () { 18 | AppData.seleted_project_id = generalExperienceItem!.project_id!; 19 | Navigator.of(context).pushNamed('/detail'); 20 | if (onSelected != null) onSelected!(generalExperienceItem!); 21 | }, 22 | child: Container( 23 | decoration: BoxDecoration(color: Colors.transparent), 24 | margin: EdgeInsets.symmetric(horizontal: 20, vertical: 10), 25 | child: Row( 26 | crossAxisAlignment: CrossAxisAlignment.start, 27 | children: [ 28 | Container( 29 | width: 70, 30 | height: 70, 31 | decoration: BoxDecoration( 32 | image: DecorationImage( 33 | image: 34 | NetworkImage(generalExperienceItem!.project_icon!), 35 | fit: BoxFit.cover), 36 | borderRadius: BorderRadius.all(Radius.circular(15)), 37 | ), 38 | ), 39 | SizedBox( 40 | width: 10, 41 | height: 1, 42 | ), 43 | Container( 44 | width: MediaQuery.of(context).size.width - 120, 45 | child: Column( 46 | crossAxisAlignment: CrossAxisAlignment.start, 47 | children: [ 48 | TitleText( 49 | text: generalExperienceItem!.project_name!, 50 | fontSize: 20, 51 | ), 52 | SubTitleText( 53 | text: generalExperienceItem!.project_brief!, 54 | fontSize: 12, 55 | color: LightColor.grey, 56 | ), 57 | Container( 58 | padding: EdgeInsets.only(top: 3), 59 | // width: 250, 60 | child: Divider(), 61 | ), 62 | ], 63 | ), 64 | ) 65 | ], 66 | ))); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /lib/src/widgets/extentions.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | 3 | extension OnPressed on Widget { 4 | Widget ripple(Function onPressed, 5 | {BorderRadiusGeometry borderRadius = 6 | const BorderRadius.all(Radius.circular(5))}) => 7 | Stack( 8 | children: [ 9 | this, 10 | Positioned( 11 | left: 0, 12 | right: 0, 13 | top: 0, 14 | bottom: 0, 15 | child: TextButton( 16 | style: ButtonStyle( 17 | shape: MaterialStateProperty.all( 18 | RoundedRectangleBorder(borderRadius: borderRadius), 19 | )), 20 | onPressed: () { 21 | onPressed(); 22 | }, 23 | child: Container()), 24 | ) 25 | ], 26 | ); 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/widgets/recommend_card.dart: -------------------------------------------------------------------------------- 1 | import 'package:armod_flutter_store/src/model/data.dart'; 2 | import 'package:armod_flutter_store/src/model/recommand_experience.dart'; 3 | import 'package:armod_flutter_store/src/widgets/subtitle_text.dart'; 4 | import 'package:flutter/material.dart'; 5 | import 'package:armod_flutter_store/src/themes/light_color.dart'; 6 | import 'package:armod_flutter_store/src/widgets/title_text.dart'; 7 | 8 | class RecommandCard extends StatelessWidget { 9 | final RecommandARExperience recommandItem; 10 | final ValueChanged? onSelected; 11 | RecommandCard({Key? key, required this.recommandItem, this.onSelected}) 12 | : super(key: key); 13 | @override 14 | Widget build(BuildContext context) { 15 | return GestureDetector( 16 | onTap: () { 17 | AppData.seleted_project_id = recommandItem.project_id!; 18 | Navigator.of(context).pushNamed('/detail'); 19 | if (onSelected != null) onSelected!(recommandItem); 20 | }, 21 | child: Container( 22 | padding: EdgeInsets.only(right: 8), 23 | width: MediaQuery.of(context).size.width * 0.95, 24 | child: Column( 25 | crossAxisAlignment: CrossAxisAlignment.start, 26 | children: [ 27 | TitleText( 28 | text: recommandItem.project_name!, 29 | fontSize: 20, 30 | ), 31 | SubTitleText( 32 | text: recommandItem.project_brief!, 33 | fontSize: 12, 34 | color: LightColor.grey, 35 | ), 36 | Container( 37 | height: 200, 38 | decoration: BoxDecoration( 39 | image: DecorationImage( 40 | image: NetworkImage(recommandItem.project_header!), 41 | fit: BoxFit.cover), 42 | color: LightColor.background, 43 | borderRadius: BorderRadius.all(Radius.circular(5)), 44 | boxShadow: [ 45 | BoxShadow( 46 | color: Color(0xfff8f8f8), 47 | blurRadius: 5, 48 | spreadRadius: 2), 49 | ], 50 | ), 51 | ) 52 | ], 53 | ))); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /lib/src/widgets/subtitle_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:armod_flutter_store/src/themes/light_color.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | 5 | class SubTitleText extends StatelessWidget { 6 | final String text; 7 | final double fontSize; 8 | final Color color; 9 | final FontWeight fontWeight; 10 | const SubTitleText( 11 | {Key? key, 12 | required this.text, 13 | this.fontSize = 18, 14 | this.color = LightColor.titleTextColor, 15 | this.fontWeight = FontWeight.w500}) 16 | : super(key: key); 17 | @override 18 | Widget build(BuildContext context) { 19 | return Container( 20 | height: 32, 21 | child: Text(text, 22 | overflow: TextOverflow.ellipsis, 23 | softWrap: true, 24 | maxLines: 2, 25 | style: GoogleFonts.mulish( 26 | fontSize: fontSize, fontWeight: fontWeight, color: color))); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /lib/src/widgets/title_text.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:armod_flutter_store/src/themes/light_color.dart'; 3 | import 'package:google_fonts/google_fonts.dart'; 4 | 5 | class TitleText extends StatelessWidget { 6 | final String text; 7 | final double fontSize; 8 | final Color color; 9 | final FontWeight fontWeight; 10 | const TitleText( 11 | {Key? key, 12 | required this.text, 13 | this.fontSize = 18, 14 | this.color = LightColor.titleTextColor, 15 | this.fontWeight = FontWeight.w800 16 | }) 17 | : super(key: key); 18 | @override 19 | Widget build(BuildContext context) { 20 | return Text(text, 21 | style: GoogleFonts.mulish( 22 | fontSize: fontSize, fontWeight: fontWeight, color: color)); 23 | } 24 | } -------------------------------------------------------------------------------- /lib/src/widgets/without_scroll_glow.dart: -------------------------------------------------------------------------------- 1 | import 'package:flutter/material.dart'; 2 | import 'package:flutter/widgets.dart'; 3 | 4 | class without_scroll_glow extends MaterialScrollBehavior { 5 | @override 6 | Widget buildOverscrollIndicator( 7 | BuildContext context, Widget child, ScrollableDetails details) { 8 | return child; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: armod_flutter_store 2 | description: A new Flutter project. 3 | 4 | # The following line prevents the package from being accidentally published to 5 | # pub.dev using `pub publish`. This is preferred for private packages. 6 | publish_to: 'none' # Remove this line if you wish to publish to pub.dev 7 | 8 | # The following defines the version and build number for your application. 9 | # A version number is three numbers separated by dots, like 1.2.43 10 | # followed by an optional build number separated by a +. 11 | # Both the version and the builder number may be overridden in flutter 12 | # build by specifying --build-name and --build-number, respectively. 13 | # In Android, build-name is used as versionName while build-number used as versionCode. 14 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning 15 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. 16 | # Read more about iOS versioning at 17 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html 18 | version: 2.0.0-pre.10 19 | 20 | environment: 21 | sdk: ">=2.12.0 <3.0.0" 22 | 23 | dependencies: 24 | flutter: 25 | sdk: flutter 26 | flutter_armod_widget: ^2.0.0-pre.1 27 | flutter_easyloading: ^3.0.5 28 | flutter_launcher_icons: ^0.9.2 29 | # The following adds the Cupertino Icons font to your application. 30 | # Use with the CupertinoIcons class for iOS style icons. 31 | cupertino_icons: ^1.0.2 32 | google_fonts: 33 | scroll_snap_list: ^0.9.1 34 | http: ^0.13.3 35 | dev_dependencies: 36 | flutter_test: 37 | sdk: flutter 38 | 39 | 40 | # For information on the generic Dart part of this file, see the 41 | # following page: https://dart.dev/tools/pub/pubspec 42 | 43 | # The following section is specific to Flutter. 44 | flutter: 45 | 46 | # The following line ensures that the Material Icons font is 47 | # included with your application, so that you can use the icons in 48 | # the material Icons class. 49 | uses-material-design: true 50 | 51 | # To add assets to your application, add an assets section, like this: 52 | # assets: 53 | # - assets/ 54 | # - images/a_dot_burr.jpeg 55 | # - images/a_dot_ham.jpeg 56 | 57 | # An image asset can refer to one or more resolution-specific "variants", see 58 | # https://flutter.dev/assets-and-images/#resolution-aware. 59 | 60 | # For details regarding adding assets from package dependencies, see 61 | # https://flutter.dev/assets-and-images/#from-packages 62 | 63 | # To add custom fonts to your application, add a fonts section here, 64 | # in this "flutter" section. Each entry in this list should have a 65 | # "family" key with the font family name, and a "fonts" key with a 66 | # list giving the asset and other descriptors for the font. For 67 | # example: 68 | # fonts: 69 | # - family: Schyler 70 | # fonts: 71 | # - asset: fonts/Schyler-Regular.ttf 72 | # - asset: fonts/Schyler-Italic.ttf 73 | # style: italic 74 | # - family: Trajan Pro 75 | # fonts: 76 | # - asset: fonts/TrajanPro.ttf 77 | # - asset: fonts/TrajanPro_Bold.ttf 78 | # weight: 700 79 | # 80 | # For details regarding fonts from package dependencies, 81 | # see https://flutter.dev/custom-fonts/#from-packages 82 | flutter_icons: 83 | android: "launcher_icon" 84 | ios: true 85 | image_path: "assets/icon/logo.jpg" -------------------------------------------------------------------------------- /test/widget_test.dart: -------------------------------------------------------------------------------- 1 | // This is a basic Flutter widget test. 2 | // 3 | // To perform an interaction with a widget in your test, use the WidgetTester 4 | // utility that Flutter provides. For example, you can send tap and scroll 5 | // gestures. You can also use WidgetTester to find child widgets in the widget 6 | // tree, read text, and verify that the values of widget properties are correct. 7 | 8 | import 'package:flutter/material.dart'; 9 | import 'package:flutter_test/flutter_test.dart'; 10 | 11 | import 'package:armod_flutter_store/main.dart'; 12 | 13 | void main() { 14 | testWidgets('Counter increments smoke test', (WidgetTester tester) async { 15 | // Build our app and trigger a frame. 16 | await tester.pumpWidget(MyApp()); 17 | 18 | // Verify that our counter starts at 0. 19 | expect(find.text('0'), findsOneWidget); 20 | expect(find.text('1'), findsNothing); 21 | 22 | // Tap the '+' icon and trigger a frame. 23 | await tester.tap(find.byIcon(Icons.add)); 24 | await tester.pump(); 25 | 26 | // Verify that our counter has incremented. 27 | expect(find.text('0'), findsNothing); 28 | expect(find.text('1'), findsOneWidget); 29 | }); 30 | } 31 | --------------------------------------------------------------------------------