├── .gitignore
├── LICENSE
├── README.md
├── add_flutter_to_ios.md
├── assets
├── 20210706122057.jpg
├── 20210706122355.jpg
├── 20210706123759.jpg
├── 20210706145922.jpg
├── 20210708120329.png
├── 20210712172151.jpg
├── 20210723121210.jpg
├── ezgif-com-gif-make.webp
├── ezgif.com-gif-maker.webp
├── flutter_build_script.png
└── flutter_page_container.png
├── depend_flutter_module_remotely.md
├── depend_flutter_remotely_upgrades.md
├── flutter_boost_dark_mode.md
├── flutter_boost_memory_leak.md
├── flutter_build
└── Frameworks
│ ├── Debug
│ └── Flutter.podspec
│ └── Profile
│ └── Flutter.podspec
├── flutter_build_script.md
├── flutter_build_script.sh
├── flutter_module
├── .gitignore
├── .metadata
├── README.md
├── flutter_01.log
├── flutter_module.iml
├── flutter_module_android.iml
├── lib
│ ├── app
│ │ └── flutter_app.dart
│ ├── main.dart
│ ├── pages
│ │ ├── app_root_page.dart
│ │ └── search_page.dart
│ ├── routes
│ │ └── routes.dart
│ ├── utils
│ │ ├── color_util.dart
│ │ ├── native_messenger.dart
│ │ ├── observers_holder.dart
│ │ └── theme_mode_dispatcher.dart
│ └── views
│ │ ├── navigation_bar.dart
│ │ ├── search_field.dart
│ │ └── search_navigation_bar.dart
├── pubspec.lock
├── pubspec.yaml
└── test
│ └── widget_test.dart
├── ios_module
├── Flutter.podspec
├── FlutterBoostPro.xcodeproj
│ ├── project.pbxproj
│ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ │ └── IDEWorkspaceChecks.plist
│ └── xcshareddata
│ │ └── xcschemes
│ │ ├── FlutterBoostPro.xcscheme
│ │ ├── FlutterBoostProRelease.xcscheme
│ │ └── FlutterBoostProTest.xcscheme
├── FlutterBoostPro.xcworkspace
│ ├── contents.xcworkspacedata
│ └── xcshareddata
│ │ └── IDEWorkspaceChecks.plist
├── FlutterBoostPro
│ ├── AppDelegate.h
│ ├── AppDelegate.m
│ ├── Assets.xcassets
│ │ ├── AccentColor.colorset
│ │ │ └── Contents.json
│ │ ├── AppIcon.appiconset
│ │ │ └── Contents.json
│ │ ├── AppIconDebug.appiconset
│ │ │ └── Contents.json
│ │ ├── AppIconTest.appiconset
│ │ │ └── Contents.json
│ │ └── Contents.json
│ ├── Base.lproj
│ │ ├── LaunchScreen.storyboard
│ │ └── Main.storyboard
│ ├── BasicNavigationController.h
│ ├── BasicNavigationController.m
│ ├── BasicViewController.h
│ ├── BasicViewController.m
│ ├── FlutterModule
│ │ ├── FlutterModuleAgent.h
│ │ ├── FlutterModuleAgent.m
│ │ ├── FlutterModuleChannel.h
│ │ ├── FlutterModuleChannel.m
│ │ ├── FlutterModuleConstants.h
│ │ ├── FlutterModuleHelper.h
│ │ ├── FlutterModuleHelper.m
│ │ ├── FlutterModuleNavigator.h
│ │ ├── FlutterModuleNavigator.m
│ │ ├── FlutterModuleViewController.h
│ │ └── FlutterModuleViewController.m
│ ├── Func.h
│ ├── Info-Debug.plist
│ ├── Info-Release.plist
│ ├── Info-Test.plist
│ ├── NSObject+Extension.h
│ ├── NSObject+Extension.m
│ ├── NativeViewController.h
│ ├── NativeViewController.m
│ ├── UIButton+Extension.h
│ ├── UIButton+Extension.m
│ ├── UIView+Extension.h
│ ├── UIView+Extension.m
│ ├── ViewController.h
│ ├── ViewController.m
│ └── main.m
├── Podfile
├── Podfile.lock
└── Pods
│ ├── AppleDevices
│ ├── LICENSE
│ ├── README.md
│ └── src
│ │ ├── AppleDevice.h
│ │ └── AppleDevice.m
│ ├── FDFullscreenPopGesture
│ ├── FDFullscreenPopGesture
│ │ ├── UINavigationController+FDFullscreenPopGesture.h
│ │ └── UINavigationController+FDFullscreenPopGesture.m
│ ├── LICENSE
│ └── README.md
│ ├── FlutterAppSDK
│ └── README.md
│ ├── FlutterPluginSDK
│ └── README.md
│ ├── JKRetractableGCDDelay
│ ├── LICENSE
│ ├── README.md
│ └── src
│ │ ├── NSObject+GCDDelayTask.h
│ │ └── NSObject+GCDDelayTask.m
│ ├── Local Podspecs
│ ├── App.podspec.json
│ ├── Flutter.podspec.json
│ ├── FlutterAppSDK.podspec.json
│ ├── FlutterPluginRegistrant.podspec.json
│ ├── FlutterPluginSDK.podspec.json
│ ├── PodSpecs.podspec.json
│ ├── flutter_boost.podspec.json
│ ├── flutter_module.podspec.json
│ ├── package_info_plus.podspec.json
│ └── sentry_flutter.podspec.json
│ ├── Manifest.lock
│ ├── Masonry
│ ├── LICENSE
│ ├── Masonry
│ │ ├── MASCompositeConstraint.h
│ │ ├── MASCompositeConstraint.m
│ │ ├── MASConstraint+Private.h
│ │ ├── MASConstraint.h
│ │ ├── MASConstraint.m
│ │ ├── MASConstraintMaker.h
│ │ ├── MASConstraintMaker.m
│ │ ├── MASLayoutConstraint.h
│ │ ├── MASLayoutConstraint.m
│ │ ├── MASUtilities.h
│ │ ├── MASViewAttribute.h
│ │ ├── MASViewAttribute.m
│ │ ├── MASViewConstraint.h
│ │ ├── MASViewConstraint.m
│ │ ├── Masonry.h
│ │ ├── NSArray+MASAdditions.h
│ │ ├── NSArray+MASAdditions.m
│ │ ├── NSArray+MASShorthandAdditions.h
│ │ ├── NSLayoutConstraint+MASDebugAdditions.h
│ │ ├── NSLayoutConstraint+MASDebugAdditions.m
│ │ ├── View+MASAdditions.h
│ │ ├── View+MASAdditions.m
│ │ ├── View+MASShorthandAdditions.h
│ │ ├── ViewController+MASAdditions.h
│ │ └── ViewController+MASAdditions.m
│ └── README.md
│ ├── PodSpecs
│ ├── Flutter.podspec
│ ├── LICENSE
│ ├── PodSpecs.podspec
│ └── README.md
│ ├── Pods.xcodeproj
│ └── project.pbxproj
│ └── Target Support Files
│ ├── AppleDevices
│ ├── AppleDevices-Info.plist
│ ├── AppleDevices-dummy.m
│ ├── AppleDevices-prefix.pch
│ ├── AppleDevices-umbrella.h
│ ├── AppleDevices.debug.xcconfig
│ ├── AppleDevices.modulemap
│ └── AppleDevices.release.xcconfig
│ ├── FDFullscreenPopGesture
│ ├── FDFullscreenPopGesture-Info.plist
│ ├── FDFullscreenPopGesture-dummy.m
│ ├── FDFullscreenPopGesture-prefix.pch
│ ├── FDFullscreenPopGesture-umbrella.h
│ ├── FDFullscreenPopGesture.debug.xcconfig
│ ├── FDFullscreenPopGesture.modulemap
│ └── FDFullscreenPopGesture.release.xcconfig
│ ├── Flutter
│ ├── Flutter-xcframeworks-input-files.xcfilelist
│ ├── Flutter-xcframeworks-output-files.xcfilelist
│ ├── Flutter-xcframeworks.sh
│ ├── Flutter.debug.xcconfig
│ └── Flutter.release.xcconfig
│ ├── FlutterAppSDK
│ ├── FlutterAppSDK-xcframeworks-input-files.xcfilelist
│ ├── FlutterAppSDK-xcframeworks-output-files.xcfilelist
│ ├── FlutterAppSDK-xcframeworks.sh
│ ├── FlutterAppSDK.debug.xcconfig
│ └── FlutterAppSDK.release.xcconfig
│ ├── FlutterPluginSDK
│ ├── FlutterPluginSDK-xcframeworks-input-files.xcfilelist
│ ├── FlutterPluginSDK-xcframeworks-output-files.xcfilelist
│ ├── FlutterPluginSDK-xcframeworks.sh
│ ├── FlutterPluginSDK.debug.xcconfig
│ └── FlutterPluginSDK.release.xcconfig
│ ├── JKRetractableGCDDelay
│ ├── JKRetractableGCDDelay-Info.plist
│ ├── JKRetractableGCDDelay-dummy.m
│ ├── JKRetractableGCDDelay-prefix.pch
│ ├── JKRetractableGCDDelay-umbrella.h
│ ├── JKRetractableGCDDelay.debug.xcconfig
│ ├── JKRetractableGCDDelay.modulemap
│ └── JKRetractableGCDDelay.release.xcconfig
│ ├── Masonry
│ ├── Masonry-Info.plist
│ ├── Masonry-dummy.m
│ ├── Masonry-prefix.pch
│ ├── Masonry-umbrella.h
│ ├── Masonry.debug.xcconfig
│ ├── Masonry.modulemap
│ └── Masonry.release.xcconfig
│ └── Pods-FlutterBoostPro
│ ├── Pods-FlutterBoostPro-Info.plist
│ ├── Pods-FlutterBoostPro-acknowledgements.markdown
│ ├── Pods-FlutterBoostPro-acknowledgements.plist
│ ├── Pods-FlutterBoostPro-dummy.m
│ ├── Pods-FlutterBoostPro-frameworks-Debug-input-files.xcfilelist
│ ├── Pods-FlutterBoostPro-frameworks-Debug-output-files.xcfilelist
│ ├── Pods-FlutterBoostPro-frameworks-Release-input-files.xcfilelist
│ ├── Pods-FlutterBoostPro-frameworks-Release-output-files.xcfilelist
│ ├── Pods-FlutterBoostPro-frameworks-Test-input-files.xcfilelist
│ ├── Pods-FlutterBoostPro-frameworks-Test-output-files.xcfilelist
│ ├── Pods-FlutterBoostPro-frameworks.sh
│ ├── Pods-FlutterBoostPro-umbrella.h
│ ├── Pods-FlutterBoostPro.debug.xcconfig
│ ├── Pods-FlutterBoostPro.modulemap
│ ├── Pods-FlutterBoostPro.release.xcconfig
│ └── Pods-FlutterBoostPro.test.xcconfig
├── multiple_commands_produce_framework.md
├── podhelper.rb
└── xcode_backend.sh
/.gitignore:
--------------------------------------------------------------------------------
1 |
2 | # Flutter编译产物
3 | ios_module/FlutterFrameworks/Debug/*.xcframework
4 | ios_module/FlutterFrameworks/Profile/*.xcframework
5 | ios_module/FlutterFrameworks/Release/*.xcframework
6 |
7 |
8 |
9 |
10 | flutter_build/Frameworks/Debug/*.xcframework
11 | flutter_build/Frameworks/Profile/*.xcframework
12 | flutter_build/Frameworks/Release/*.xcframework
13 |
14 |
15 | ios_module/Pods/Flutter/*.xcframework
16 | ios_module/Pods/FlutterAppSDK/*.xcframework
17 | ios_module/Pods/FlutterModuleSDK/*.xcframework
18 | ios_module/Pods/FlutterPluginSDK/*.xcframework
19 |
20 |
21 | flutter_module/.ios/Flutter/
22 | flutter_module/.android/Flutter/
23 | flutter_module/build/ios
24 | flutter_module/build/*.dill
25 |
26 |
27 |
28 |
29 | # Xcode
30 | #
31 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
32 |
33 | ## User settings
34 | xcuserdata/
35 |
36 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9)
37 | *.xcscmblueprint
38 | *.xccheckout
39 |
40 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4)
41 | build/
42 | DerivedData/
43 | *.moved-aside
44 | *.pbxuser
45 | !default.pbxuser
46 | *.mode1v3
47 | !default.mode1v3
48 | *.mode2v3
49 | !default.mode2v3
50 | *.perspectivev3
51 | !default.perspectivev3
52 |
53 | ## Obj-C/Swift specific
54 | *.hmap
55 |
56 | ## App packaging
57 | *.ipa
58 | *.dSYM.zip
59 | *.dSYM
60 |
61 | # CocoaPods
62 | #
63 | # We recommend against adding the Pods directory to your .gitignore. However
64 | # you should judge for yourself, the pros and cons are mentioned at:
65 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
66 | #
67 | # Pods/
68 | #
69 | # Add this line if you want to avoid checking in source code from the Xcode workspace
70 | # *.xcworkspace
71 |
72 | # Carthage
73 | #
74 | # Add this line if you want to avoid checking in source code from Carthage dependencies.
75 | # Carthage/Checkouts
76 |
77 | Carthage/Build/
78 |
79 | # fastlane
80 | #
81 | # It is recommended to not store the screenshots in the git repo.
82 | # Instead, use fastlane to re-generate the screenshots whenever they are needed.
83 | # For more information about the recommended setup visit:
84 | # https://docs.fastlane.tools/best-practices/source-control/#source-control
85 |
86 | fastlane/report.xml
87 | fastlane/Preview.html
88 | fastlane/screenshots/**/*.png
89 | fastlane/test_output
90 |
91 | # Code Injection
92 | #
93 | # After new code Injection tools there's a generated folder /iOSInjectionProject
94 | # https://github.com/johnno1962/injectionforxcode
95 |
96 | iOSInjectionProject/
97 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 溪枫狼
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/assets/20210706122057.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210706122057.jpg
--------------------------------------------------------------------------------
/assets/20210706122355.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210706122355.jpg
--------------------------------------------------------------------------------
/assets/20210706123759.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210706123759.jpg
--------------------------------------------------------------------------------
/assets/20210706145922.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210706145922.jpg
--------------------------------------------------------------------------------
/assets/20210708120329.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210708120329.png
--------------------------------------------------------------------------------
/assets/20210712172151.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210712172151.jpg
--------------------------------------------------------------------------------
/assets/20210723121210.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/20210723121210.jpg
--------------------------------------------------------------------------------
/assets/ezgif-com-gif-make.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/ezgif-com-gif-make.webp
--------------------------------------------------------------------------------
/assets/ezgif.com-gif-maker.webp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/ezgif.com-gif-maker.webp
--------------------------------------------------------------------------------
/assets/flutter_build_script.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/flutter_build_script.png
--------------------------------------------------------------------------------
/assets/flutter_page_container.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/XiFengLang/flutter_notes/2411bcc43ac56811ed0f648f528784079827ee40/assets/flutter_page_container.png
--------------------------------------------------------------------------------
/flutter_boost_dark_mode.md:
--------------------------------------------------------------------------------
1 | 我们的项目使用`flutter_boost`来实现iOS & Flutter混合项目开发,目前也已经适配到`flutter_boost v3.0.0`。`FlutterBoost`在`3.0.0`新增一个Flutter控制器容器,但我们项目有统一的控制器基类,为了统一控制器页面的某些特性和接口功能, 我在`FlutterBoost`的容器上又封装了一层控制器容器,也就是这层封装导致我在开发过程遇到了深浅色适配和内存泄漏的问题。
2 |
3 |
4 | ```C
5 | FlutterModuleViewController.m
6 |
7 | self.flutterContainer.view.frame = self.view.bounds;
8 | [self.view insertSubview:self.flutterContainer.view atIndex:0];
9 | [self addChildViewController:self.flutterContainer];
10 | ```
11 |
12 | 
13 |
14 |
15 | ------
16 |
17 | 深浅色适配和`Push/Present`进入Flutter页面是我在项目开发中真实用到的场景,在Demo中我还原了这2个场景,给原生页面和Flutter页面都适配了深浅色,其中的搜索页`SearchPage`就是Flutter页面,而APP的主页就是原生页面(可以切换深浅色),另外进入`SearchPage`采用了`Push、Present` 2种转场方式,以对比效果。
18 |
19 |
20 | 下面的动图就是实现后的初始效果,仔细观察,就可以发现下面列出的前2个问题。
21 |
22 |
1.首次进入Flutter页面出现短暂空白
23 |
24 | 由于缺少缓存,安装APP后首次进入Flutter页面会出现短暂的空白,然后再渲染出Flutter的UI,之后重启APP基本不会出现这个问题。
25 |
26 | 2.在原生页面切换深浅色后进入Flutter页面会先渲染上一次的配色模式
27 |
28 | 在APP内的原生页面切换深浅色后进入Flutter页面,会先渲染上一次的深浅色样式,再切换当前的配色,先白后黑或者先黑后白;
29 |
30 |
31 | 
32 |
33 | 对于这2个问题,我的解决思路是一样的,就是提前预加载一个Flutter页面,让Flutter提前完成渲染和缓存。
34 |
35 | * 首先是在初始化`FlutterBoost`后预加载一个Flutter页面,再立刻(延迟0.6秒)关掉这个页面。
36 | * 切换深浅色之后同样也预加载一个Flutter页面,然后又立刻关掉这个页面,完成Flutter侧的深浅色渲染。
37 |
38 | 具体的代码参考`[FlutterModuleAgent preloadFlutterModuleAfterDelay:]`和`@"root_page"`空白页的处理逻辑。需要注意的是为了不让用户体察到这个动作,需要用`addChildViewController:flutterVC`的方式把这个页面放在屏幕外面,即设置`flutterVC.view.frame`,而不是采用`push/present`带转场方式。`push/present`会有转场动效,即使无动效也可能干扰到正常的控制器栈,而`addChildViewController: flutterVC `和`addSubview:flutterVC.view`则简单粗暴的多,几乎不会影响到现有的控制器栈。
39 |
40 | 这是启用预加载之后的效果,无论是首次进入Flutter页面,还是切换深浅色后进入Flutter页面,~~都不会有闪白卡顿的现象~~,流畅了很多,只有第一次启动APP进入Flutter页面才会出现短暂的闪白,原因还未找到,不过影响不大。
41 |
42 | 
--------------------------------------------------------------------------------
/flutter_boost_memory_leak.md:
--------------------------------------------------------------------------------
1 | 我们的项目使用`flutter_boost`来实现iOS & Flutter混合项目开发,目前也已经适配到`flutter_boost v3.0.0`。`FlutterBoost`在`3.0.0`新增一个Flutter控制器容器,但我们项目有统一的控制器基类,为了统一控制器页面的某些特性和接口功能, 我在`FlutterBoost`的容器上又封装了一层控制器容器,导致在开发过程遇到了深浅色适配和内存泄漏的问题。
2 |
3 | 自定义Flutter(Boost)容器后,Flutter页面退出后没有调用dispose,出现内存泄漏
4 |
5 | 效果图展示的搜索页`SearchPage`就是Flutter页面,而APP的主页就是原生页面(可以切换深浅色),另外进入`SearchPage`采用了`Push、Present` 2种转场方式,以对比效果。
6 |
7 | 
8 |
9 | 在`search_page.dart`文件`_SearchPageState`中重写`dispose()`方法,监听页面内存释放。`search_page`是Push进入的,Pop页面后原生控制器被释放,但是Flutter侧页面并没有释放,没有打印页面已释放,检查2端代码后发现问题出在原生侧自定义的Flutter控制器容器上。
10 |
11 | ```C
12 | class _SearchPageState extends State {
13 | TextEditingController controller = TextEditingController();
14 | FocusNode focusNode = FocusNode();
15 |
16 | ...
17 |
18 | @override
19 | void dispose() {
20 | print('搜索页已释放');
21 |
22 | focusNode.dispose();
23 | controller.dispose();
24 | super.dispose();
25 | }
26 |
27 | ...
28 | }
29 | ```
30 |
31 | 我使用的页面结构如下图所示,之所以这么做是为了统一控制器页面的某些特性和接口功能。选择在`FBFlutterViewContainer `基础上自定义一个Flutter控制器容器,最后所有的Flutter页面都由`FlutterModuleViewController`承载,而`FBFlutterViewContainer`则添加在容器`FlutterModuleViewController`上,但是2者不是继承关系,而是父子控制器的关系。
32 |
33 | ```C
34 | FlutterModuleViewController.m
35 |
36 | self.flutterContainer.view.frame = self.view.bounds;
37 | [self.view insertSubview:self.flutterContainer.view atIndex:0];
38 | [self addChildViewController:self.flutterContainer];
39 | ```
40 |
41 | 
42 |
43 | 由于我漏掉了`[self.flutterContainer removeFromParentViewController]`,导致了`FBFlutterViewContainer`的`notifyWillDealloc`逻辑没有执行,Flutter侧没有移除掉对应的页面Widget,也就不会调用`dispose()`。于是重写了`didMoveToParentViewController:`方法,退出控制器时调用`[self.flutterContainer removeFromParentViewController]`,以触发`notifyWillDealloc`逻辑,完成Flutter侧的内存释放。
44 |
45 | ```C
46 | FlutterModuleViewController.m
47 |
48 | - (void)didMoveToParentViewController:(UIViewController *)parent {
49 | /// MARK: 下面这行代码在这儿会触发2次notifyWillDealloc,会导致FlutterBoost出现异常
50 | /// 比如 NoSuchMethodError: The getter 'topPage' was called on null.
51 | /// [self.flutterContainer didMoveToParentViewController:parent];
52 |
53 | /// 下面只会触发一次notifyWillDealloc,正常
54 | if (parent == nil && self.flutterContainer.parentViewController) {
55 | [self.flutterContainer removeFromParentViewController];
56 | }
57 | [super didMoveToParentViewController:parent];
58 | }
59 | ```
60 |
61 | 但是随后发现`Present`进入`search_page`时同样也会出现内存泄漏,Flutter页面没有被释放。调试发现 'dismissViewControllerAnimated:completion:' 并没有触发'didMoveToParentViewController:'方法,😓怪自己基础不扎实。于是又加了下面的代码,解决了嵌套`FBFlutterViewContainer`页面出现的内存泄漏问题。
62 |
63 | ```C
64 | - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion {
65 | [super dismissViewControllerAnimated:flag completion:^{
66 | /// MARK: 解决NavigationController嵌套CustomFlutterVC导致Flutter页面不释放的问题
67 | /// 原因是 'dismissViewControllerAnimated:completion:' 并不会触发 'didMoveToParentViewController:'方法
68 | /// FBFlutterViewContainer 有重写 'dismissViewControllerAnimated:completion:' 方法来移除Flutter页面
69 | /// 但如果FBFlutterVC又被嵌套在自定义的CustomFlutterVC里面,CustomFlutterVC就需要实现移除Flutter页面的逻辑,主动触发Flutter侧内存释放
70 |
71 | [self didMoveToParentViewController:nil];
72 | }];
73 | }
74 | ``
--------------------------------------------------------------------------------
/flutter_build/Frameworks/Debug/Flutter.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'Flutter'
3 | s.version = '2.0.300' # 2.0.3
4 | s.summary = 'Flutter Engine Framework'
5 | s.description = <<-DESC
6 | Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
7 | This pod vends the iOS Flutter engine framework. It is compatible with application frameworks created with this version of the engine and tools.
8 | The pod version matches Flutter version major.minor.(patch * 100) + hotfix.
9 | DESC
10 | s.homepage = 'https://flutter.dev'
11 | s.license = { :type => 'MIT', :text => <<-LICENSE
12 | Copyright 2014 The Flutter Authors. All rights reserved.
13 |
14 | Redistribution and use in source and binary forms, with or without modification,
15 | are permitted provided that the following conditions are met:
16 |
17 | * Redistributions of source code must retain the above copyright
18 | notice, this list of conditions and the following disclaimer.
19 | * Redistributions in binary form must reproduce the above
20 | copyright notice, this list of conditions and the following
21 | disclaimer in the documentation and/or other materials provided
22 | with the distribution.
23 | * Neither the name of Google Inc. nor the names of its
24 | contributors may be used to endorse or promote products derived
25 | from this software without specific prior written permission.
26 |
27 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
28 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
31 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
34 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 |
38 | LICENSE
39 | }
40 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
41 | s.source = { :http => 'https://storage.flutter-io.cn/flutter_infra/flutter/3459eb24361807fb186953a864cf890fa8e9d26a/ios/artifacts.zip' }
42 | s.documentation_url = 'https://flutter.dev/docs'
43 | s.platform = :ios, '8.0'
44 | s.vendored_frameworks = 'Flutter.xcframework'
45 | end
46 |
--------------------------------------------------------------------------------
/flutter_build/Frameworks/Profile/Flutter.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'Flutter'
3 | s.version = '2.0.300' # 2.0.3
4 | s.summary = 'Flutter Engine Framework'
5 | s.description = <<-DESC
6 | Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
7 | This pod vends the iOS Flutter engine framework. It is compatible with application frameworks created with this version of the engine and tools.
8 | The pod version matches Flutter version major.minor.(patch * 100) + hotfix.
9 | DESC
10 | s.homepage = 'https://flutter.dev'
11 | s.license = { :type => 'MIT', :text => <<-LICENSE
12 | Copyright 2014 The Flutter Authors. All rights reserved.
13 |
14 | Redistribution and use in source and binary forms, with or without modification,
15 | are permitted provided that the following conditions are met:
16 |
17 | * Redistributions of source code must retain the above copyright
18 | notice, this list of conditions and the following disclaimer.
19 | * Redistributions in binary form must reproduce the above
20 | copyright notice, this list of conditions and the following
21 | disclaimer in the documentation and/or other materials provided
22 | with the distribution.
23 | * Neither the name of Google Inc. nor the names of its
24 | contributors may be used to endorse or promote products derived
25 | from this software without specific prior written permission.
26 |
27 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
28 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
31 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
34 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 |
38 | LICENSE
39 | }
40 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
41 | s.source = { :http => 'https://storage.flutter-io.cn/flutter_infra/flutter/3459eb24361807fb186953a864cf890fa8e9d26a/ios-profile/artifacts.zip' }
42 | s.documentation_url = 'https://flutter.dev/docs'
43 | s.platform = :ios, '8.0'
44 | s.vendored_frameworks = 'Flutter.xcframework'
45 | end
46 |
--------------------------------------------------------------------------------
/flutter_build_script.md:
--------------------------------------------------------------------------------
1 | # iOS远程依赖flutter module构建脚本
2 |
3 | 构建脚本是基于[远程依赖Flutter Module组件库编译产物 方案0x05](https://github.com/XiFengLang/flutter_notes/blob/main/depend_flutter_module_remotely.md#id-h3-05)实现的,但同样适用于[远程依赖Flutter Module组件库编译产物(升级版 )](https://github.com/XiFengLang/flutter_notes/blob/main/depend_flutter_remotely_upgrades.md)。
4 |
5 | 脚本内容详见[`flutter_build_script.sh 文件`](https://github.com/XiFengLang/flutter_notes/blob/main/flutter_build_script.sh),脚本的大致流程如图所示。
6 |
7 | 
8 |
9 | ## 实现功能
10 |
11 | - [x] 校验git是否有未提交的更新
12 | - [x] git commit, git tag ,git push等一系列git操作
13 | - [x] 校验.ios/Runner.xcworkspace
14 | - [x] 编译Flutter module,导出framework
15 | - [ ] 选择debug / profile / release 编译模式
16 | - [x] 版本号自增 或 手动输入
17 | - [x] 修改podspec版本号
18 | - [x] 钉钉通知
19 | - [x] 杂七杂八的结果校验
20 | - [x] xcframework黑名单,过滤掉重复依赖的framwork,用来解决问题[内嵌依赖的xcframework和pod依赖的第三方库重复冲突,新版Xcode编译失败](https://github.com/XiFengLang/flutter_notes/blob/main/multiple_commands_produce_framework.md)
21 |
22 |
23 | ## 使用
24 |
25 | 1.修改这几个本地仓库的路径
26 |
27 | ```C
28 | readonly workspace_root_path="$HOME/Desktop/workspace"
29 | readonly flutter_module_path="${workspace_root_path}/flutter_notes/flutter_module"
30 | readonly flutter_build_output_path="${workspace_root_path}/futter_build_tmp"
31 | readonly flutter_module_sdk_podspec_path="${workspace_root_path}/flutter_module_sdk_podspec"
32 | readonly flutter_app_sdk_path="${workspace_root_path}/flutter_app_sdk"
33 | readonly flutter_plugin_sdk_path="${workspace_root_path}/flutter_plugin_sdk"
34 |
35 | readonly app_sdk_podspec_path="$flutter_module_sdk_podspec_path/FlutterAppSDK.podspec"
36 | readonly plugin_sdk_podspec_path="$flutter_module_sdk_podspec_path/FlutterPluginSDK.podspec"
37 | ```
38 |
39 | 2.修改黑名单,不需要黑名单就清空
40 |
41 | ```C
42 | blacklist=(
43 | "FMDB.xcframework"
44 | "MMKV.xcframework"
45 | "MMKVCore.xcframework"
46 | "Sentry.xcframework"
47 | )
48 | ```
49 |
50 | 3.执行脚本,按提示输入即可
51 |
52 |
53 | ## 参考
54 |
55 | > * [linux shell 实现自增版本号](https://github.com/zedxpp/PPPrivatePodPushScript/blob/master/README.md)
56 | > * [PPPrivatePodPushScript iOS私有库发布脚本](https://github.com/zedxpp/PPPrivatePodPushScript)
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/flutter_module/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .dart_tool/
3 |
4 | .packages
5 | .pub/
6 |
7 | .idea/
8 | .vagrant/
9 | .sconsign.dblite
10 | .svn/
11 |
12 | *.swp
13 | profile
14 |
15 | DerivedData/
16 |
17 | .generated/
18 |
19 | *.pbxuser
20 | *.mode1v3
21 | *.mode2v3
22 | *.perspectivev3
23 |
24 | !default.pbxuser
25 | !default.mode1v3
26 | !default.mode2v3
27 | !default.perspectivev3
28 |
29 | xcuserdata
30 |
31 | *.moved-aside
32 |
33 | *.pyc
34 | *sync/
35 | Icon?
36 | .tags*
37 |
38 | build/
39 | .android/
40 | .ios/
41 | .flutter-plugins
42 | .flutter-plugins-dependencies
43 |
44 | # Symbolication related
45 | app.*.symbols
46 |
47 | # Obfuscation related
48 | app.*.map.json
49 |
--------------------------------------------------------------------------------
/flutter_module/.metadata:
--------------------------------------------------------------------------------
1 | # This file tracks properties of this Flutter project.
2 | # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 | #
4 | # This file should be version controlled and should not be manually edited.
5 |
6 | version:
7 | revision: 02c026b03cd31dd3f867e5faeb7e104cce174c5f
8 | channel: stable
9 |
10 | project_type: module
11 |
--------------------------------------------------------------------------------
/flutter_module/README.md:
--------------------------------------------------------------------------------
1 | # flutter_module
2 |
3 | A new flutter module project.
4 |
5 | ## Getting Started
6 |
7 | For help getting started with Flutter, view our online
8 | [documentation](https://flutter.dev/).
9 |
10 | For instructions integrating Flutter modules to your existing applications,
11 | see the [add-to-app documentation](https://flutter.dev/docs/development/add-to-app).
12 |
--------------------------------------------------------------------------------
/flutter_module/flutter_module.iml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/flutter_module/flutter_module_android.iml:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/flutter_module/lib/app/flutter_app.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | // ignore: import_of_legacy_library_into_null_safe
4 | import 'package:flutter_boost/flutter_boost.dart';
5 |
6 | import '../routes/routes.dart';
7 |
8 | class FlutterApp extends StatefulWidget {
9 | const FlutterApp({Key key}) : super(key: key);
10 |
11 | @override
12 | _FlutterAppState createState() => _FlutterAppState();
13 | }
14 |
15 | class _FlutterAppState extends State {
16 | @override
17 | void initState() {
18 | /// init
19 | super.initState();
20 | }
21 |
22 | @override
23 | Widget build(BuildContext context) {
24 | return FlutterBoostApp(
25 | AppRouter.routeFactory,
26 | initialRoute: '/',
27 | appBuilder: (Widget home) {
28 | return MaterialApp(
29 | home: home,
30 | title: 'flutter_boost采坑',
31 | themeMode: ThemeMode.system,
32 | theme: ThemeData(
33 | brightness: Brightness.light,
34 | scaffoldBackgroundColor: Colors.yellow,//Color(0xFFFFFFFF),
35 | ),
36 | darkTheme: ThemeData(
37 | brightness: Brightness.dark,
38 | scaffoldBackgroundColor: Color(0xFF000000),
39 | ),
40 | );
41 | },
42 | );
43 | }
44 | }
45 |
--------------------------------------------------------------------------------
/flutter_module/lib/main.dart:
--------------------------------------------------------------------------------
1 | import 'dart:async';
2 | import 'dart:io';
3 |
4 | import 'package:flutter/services.dart';
5 | import 'package:flutter/material.dart';
6 |
7 | import 'app/flutter_app.dart';
8 | import 'utils/native_messenger.dart';
9 |
10 | void main() {
11 | runZonedGuarded(() {
12 | runApp(FlutterApp());
13 |
14 | /// App.native通信员初始化
15 | NativeMessenger.shared();
16 |
17 | configureSystemUIOverlayStyle();
18 | }, (Object error, StackTrace stack) {
19 | /// 处理所有未处理的异常
20 | print("catch error in main() func. $error");
21 | // reportErrorLog(makeErrorDetails(error, stack));
22 | }, zoneSpecification: ZoneSpecification(
23 | print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
24 | parent.print(zone, "JK Log: $line");
25 | // collectLog(line);
26 | }));
27 | }
28 |
29 | /// 状态栏
30 | configureSystemUIOverlayStyle() {
31 | if (Platform.isAndroid) {
32 | /// 沉侵式状态栏
33 | SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
34 | statusBarColor: Colors.transparent,
35 | // statusBarBrightness: Brightness.dark,
36 | ));
37 | }
38 | // else if (Platform.isIOS) {
39 | // SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle.dark);
40 | // }
41 |
42 | /// 单页面沉侵式导航栏 AnnotatedRegion
43 | // AnnotatedRegion(
44 | // value: SystemUiOverlayStyle.dark,
45 | // child: Scaffold,
46 | // );
47 | }
48 |
--------------------------------------------------------------------------------
/flutter_module/lib/pages/app_root_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_module/utils/color_util.dart';
3 | import '../views/navigation_bar.dart';
4 |
5 | class AppRootPage extends StatelessWidget {
6 | const AppRootPage({Key key}) : super(key: key);
7 |
8 | @override
9 | Widget build(BuildContext context) {
10 | return Scaffold(
11 | body: Stack(
12 | children: [
13 | ControllerView(
14 | child: Container(
15 | color: Colors.transparent,
16 | alignment: Alignment.center,
17 | child: Text(
18 | "flutter_boost",
19 | style: TextStyle(
20 | fontSize: 15,
21 | color: ColorUtil.dynamicColor(
22 | context: context,
23 | light: Colors.black45,
24 | dark: Colors.white,
25 | ),
26 | fontWeight: FontWeight.normal,
27 | ),
28 | ),
29 | ),
30 | ),
31 | NavigationBar(
32 | title: "",
33 | ),
34 | ],
35 | ),
36 | );
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/flutter_module/lib/pages/search_page.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_boost/flutter_boost.dart';
3 | import 'package:flutter_boost/messages.dart';
4 | import 'package:flutter_boost/boost_navigator.dart';
5 |
6 | import '../views/navigation_bar.dart';
7 | import '../views/navigation_bar.dart';
8 | import '../views/navigation_bar.dart';
9 | import '../views/search_navigation_bar.dart';
10 | import '../views/navigation_bar.dart';
11 | import '../views/search_navigation_bar.dart';
12 |
13 | class SearchPage extends StatefulWidget {
14 | const SearchPage({Key key}) : super(key: key);
15 |
16 | @override
17 | _SearchPageState createState() => _SearchPageState();
18 | }
19 |
20 | class _SearchPageState extends State {
21 | TextEditingController controller = TextEditingController();
22 | FocusNode focusNode = FocusNode();
23 |
24 | @override
25 | void initState() {
26 | /// 延迟弹出键盘,不然会导致Flutter渲染异常抖动
27 | Future.delayed(Duration(milliseconds: 800), (){
28 | if (mounted) {
29 | focusNode.requestFocus();
30 | }
31 | });
32 | super.initState();
33 | }
34 |
35 | @override
36 | void dispose() {
37 | print('搜索页已释放');
38 |
39 | focusNode.dispose();
40 | controller.dispose();
41 | super.dispose();
42 | }
43 |
44 | @override
45 | Widget build(BuildContext context) {
46 | return Scaffold(
47 | backgroundColor: Colors.black,
48 | body: Stack(
49 | children: [
50 | ControllerView(
51 | child: Container(
52 | color: Colors.transparent,
53 | child: GestureDetector(
54 | onTap: (){
55 | CommonParams params = CommonParams()..pageName = "a"..arguments = {"a":"a",
56 | "b":"a"}..uniqueId = "asadadas";
57 | NativeRouterApi().pushNativeRoute(params);
58 | BoostNavigator.instance.push("name");
59 | },
60 | child: SizedBox(
61 | width: 100,
62 | height: 40,
63 | child: Container(
64 | color: Colors.purple,
65 | ),
66 | ),
67 | ),
68 | ),
69 | ),
70 | SearchNavigationBar(
71 | focusNode: focusNode,
72 | controller: controller,
73 | placeholder: "输入你想搜索的东东或者西西",
74 | onSubmitted: (query) {
75 | print('搜索 :${query.trim()}');
76 | },
77 | onChanged: (text) {
78 | print('输入文字 :$text');
79 | },
80 | ),
81 | ],
82 | ),
83 | );
84 | }
85 | }
86 |
--------------------------------------------------------------------------------
/flutter_module/lib/routes/routes.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/widgets.dart';
2 | import 'package:flutter/material.dart';
3 |
4 |
5 | import 'package:flutter_boost/boost_navigator.dart';
6 |
7 | import '../pages/app_root_page.dart';
8 | import '../pages/search_page.dart';
9 |
10 | class AppRouter {
11 | static Map routerMap = {
12 | '/': (settings, uniqueId) {
13 | return PageRouteBuilder(
14 | settings: settings,
15 | pageBuilder: (_, __, ___) => AppRootPage(),
16 | );
17 | },
18 |
19 | 'root_page': (settings, uniqueId) {
20 | return PageRouteBuilder(
21 | settings: settings,
22 | pageBuilder: (_, __, ___) => AppRootPage(),
23 | );
24 | },
25 |
26 |
27 | 'search_page': (settings, uniqueId) {
28 | return PageRouteBuilder(
29 | settings: settings,
30 | pageBuilder: (_, __, ___) => SearchPage(),
31 | );
32 | },
33 |
34 | };
35 |
36 | static Route routeFactory(RouteSettings setting, String uniqueId) {
37 | FlutterBoostRouteFactory factory = routerMap[setting.name];
38 | if (factory == null) {
39 | return null;
40 | }
41 | return factory(setting, uniqueId);
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/flutter_module/lib/utils/color_util.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 |
3 | class ColorUtil {
4 | /// 动态选择深浅色
5 | static Color dynamicColor({
6 | @required BuildContext context,
7 | @required Color light,
8 | @required Color dark,
9 | }) {
10 | final brightness = Theme.of(context).brightness;
11 | return brightness == Brightness.dark ? dark : light;
12 | }
13 | }
14 |
--------------------------------------------------------------------------------
/flutter_module/lib/utils/native_messenger.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/services.dart';
2 |
3 | import 'package:flutter_boost/boost_navigator.dart';
4 | // import 'theme_mode_dispatcher.dart';
5 |
6 | class NativeMessenger {
7 | static final NativeMessenger _shared = NativeMessenger._init();
8 |
9 | static NativeMessenger shared() => _shared;
10 |
11 | NativeMessenger._init() {
12 | _initMessageChannel();
13 | }
14 |
15 | final _methodChannel = const MethodChannel('app_global_channel');
16 |
17 | MethodChannel get channel => _methodChannel;
18 |
19 | /// 跟Native通信交互
20 | void _initMessageChannel() {
21 | _methodChannel.setMethodCallHandler((MethodCall call) {
22 | print(
23 | 'NativeMessenger收到native消息: method:${call.method} arguments:${call.arguments}');
24 |
25 | if (call.method == 'set_theme_mode') {
26 | // final Brightness brightness = call.arguments['mode'] as String == 'dark'
27 | // ? Brightness.dark
28 | // : Brightness.light;
29 | // ThemeModeDispatcher.shared()
30 | // .handlePlatformBrightnessChanged(brightness);
31 | } else if (call.method == 'exit_current_page') {
32 | BoostNavigator.instance.pop();
33 | }
34 | return Future.value();
35 | });
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/flutter_module/lib/utils/observers_holder.dart:
--------------------------------------------------------------------------------
1 | import 'dart:ui';
2 |
3 | /// 仿写了FlutterBoost的ObserversHolder类,都是监听者容器
4 | class ObserversHolder {
5 | final Map> _observers = >{};
6 |
7 | VoidCallback addObserver(T observer) {
8 | final Set set = _observers[T.toString()] as Set ?? {};
9 |
10 | set.add(observer);
11 | _observers[T.toString()] = set;
12 |
13 | return () => set.remove(observer);
14 | }
15 |
16 | void removeObserver(T observer) =>
17 | _observers[T.toString()]?.remove(observer);
18 |
19 | void cleanObservers() => _observers[T.toString()]?.clear();
20 |
21 | Set observersOf() => _observers[T.toString()] as Set ?? {};
22 | }
--------------------------------------------------------------------------------
/flutter_module/lib/utils/theme_mode_dispatcher.dart:
--------------------------------------------------------------------------------
1 | // import 'dart:ui';
2 | // import 'package:flutter/material.dart' show Brightness;
3 | // import 'observers_holder.dart';
4 | //
5 | // typedef ThemeModeObserver = void Function(Brightness brightness);
6 | //
7 | //
8 | // class ThemeModeDispatcher {
9 | // static final ThemeModeDispatcher _shared = ThemeModeDispatcher._init();
10 | //
11 | // ThemeModeDispatcher._init();
12 | //
13 | // static ThemeModeDispatcher shared() => _shared;
14 | //
15 | // final ObserversHolder _observers = ObserversHolder();
16 | //
17 | //
18 | // VoidCallback addObserver(ThemeModeObserver observer) =>
19 | // _observers.addObserver(observer);
20 | //
21 | // void removeObserver(ThemeModeObserver observer) =>
22 | // _observers.removeObserver(observer);
23 | //
24 | // void handlePlatformBrightnessChanged(Brightness brightness) {
25 | // for (final ThemeModeObserver observer
26 | // in _observers.observersOf()) {
27 | // observer(brightness);
28 | // }
29 | // }
30 | // }
--------------------------------------------------------------------------------
/flutter_module/lib/views/search_navigation_bar.dart:
--------------------------------------------------------------------------------
1 | import 'package:flutter/material.dart';
2 | import 'package:flutter_boost/boost_navigator.dart';
3 |
4 | import 'navigation_bar.dart';
5 | import 'search_field.dart';
6 |
7 | class SearchNavigationBar extends StatelessWidget {
8 | final FocusNode focusNode;
9 | final String placeholder;
10 | final TextEditingController controller;
11 | final Function(String query) onSubmitted;
12 | final Function(String text) onChanged;
13 |
14 | SearchNavigationBar({
15 | Key key,
16 | this.focusNode,
17 | this.placeholder,
18 | this.controller,
19 | this.onSubmitted,
20 | this.onChanged,
21 | }) : super(key: key);
22 |
23 | @override
24 | Widget build(BuildContext context) {
25 | return NavigationBarContainer(
26 | child: Flex(
27 | direction: Axis.horizontal,
28 | children: [
29 | Expanded(
30 | flex: 1,
31 | child: Padding(
32 | padding: EdgeInsets.only(left: 15),
33 | child: SearchField(
34 | focusNode: focusNode,
35 | placeholder: placeholder,
36 | controller: controller,
37 | onChanged: onChanged,
38 | onSubmitted: onSubmitted,
39 | ),
40 | ),
41 | ),
42 | Expanded(
43 | flex: 0,
44 | child: GestureDetector(
45 | onTap: () {
46 | focusNode.unfocus();
47 | BoostNavigator.instance.pop();
48 | },
49 | child: Container(
50 | padding: EdgeInsets.symmetric(horizontal: 15),
51 | color: Colors.transparent,
52 | height: 30,
53 | alignment: Alignment.center,
54 | child: Text(
55 | '取消',
56 | style: TextStyle(
57 | fontSize: 15,
58 | color: Colors.blue,
59 | ),
60 | ),
61 | ),
62 | ),
63 | ),
64 | ],
65 | ),
66 | );
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/flutter_module/pubspec.lock:
--------------------------------------------------------------------------------
1 | # Generated by pub
2 | # See https://dart.dev/tools/pub/glossary#lockfile
3 | packages:
4 | async:
5 | dependency: transitive
6 | description:
7 | name: async
8 | url: "http://localhost:8086"
9 | source: hosted
10 | version: "2.5.0"
11 | boolean_selector:
12 | dependency: transitive
13 | description:
14 | name: boolean_selector
15 | url: "http://localhost:8086"
16 | source: hosted
17 | version: "2.1.0"
18 | characters:
19 | dependency: transitive
20 | description:
21 | name: characters
22 | url: "http://localhost:8086"
23 | source: hosted
24 | version: "1.1.0"
25 | charcode:
26 | dependency: transitive
27 | description:
28 | name: charcode
29 | url: "http://localhost:8086"
30 | source: hosted
31 | version: "1.2.0"
32 | clock:
33 | dependency: transitive
34 | description:
35 | name: clock
36 | url: "http://localhost:8086"
37 | source: hosted
38 | version: "1.1.0"
39 | collection:
40 | dependency: transitive
41 | description:
42 | name: collection
43 | url: "http://localhost:8086"
44 | source: hosted
45 | version: "1.15.0"
46 | cupertino_icons:
47 | dependency: "direct main"
48 | description:
49 | name: cupertino_icons
50 | url: "http://localhost:8086"
51 | source: hosted
52 | version: "1.0.3"
53 | fake_async:
54 | dependency: transitive
55 | description:
56 | name: fake_async
57 | url: "http://localhost:8086"
58 | source: hosted
59 | version: "1.2.0"
60 | flutter:
61 | dependency: "direct main"
62 | description: flutter
63 | source: sdk
64 | version: "0.0.0"
65 | flutter_boost:
66 | dependency: "direct main"
67 | description:
68 | path: "."
69 | ref: "v3.0-beta.11"
70 | resolved-ref: a3938eff699cfa9bd6e922ba736339db4f976314
71 | url: "https://github.com/alibaba/flutter_boost.git"
72 | source: git
73 | version: "3.0.0"
74 | flutter_test:
75 | dependency: "direct dev"
76 | description: flutter
77 | source: sdk
78 | version: "0.0.0"
79 | matcher:
80 | dependency: transitive
81 | description:
82 | name: matcher
83 | url: "http://localhost:8086"
84 | source: hosted
85 | version: "0.12.10"
86 | meta:
87 | dependency: transitive
88 | description:
89 | name: meta
90 | url: "http://localhost:8086"
91 | source: hosted
92 | version: "1.3.0"
93 | path:
94 | dependency: transitive
95 | description:
96 | name: path
97 | url: "http://localhost:8086"
98 | source: hosted
99 | version: "1.8.0"
100 | sky_engine:
101 | dependency: transitive
102 | description: flutter
103 | source: sdk
104 | version: "0.0.99"
105 | source_span:
106 | dependency: transitive
107 | description:
108 | name: source_span
109 | url: "http://localhost:8086"
110 | source: hosted
111 | version: "1.8.0"
112 | stack_trace:
113 | dependency: transitive
114 | description:
115 | name: stack_trace
116 | url: "http://localhost:8086"
117 | source: hosted
118 | version: "1.10.0"
119 | stream_channel:
120 | dependency: transitive
121 | description:
122 | name: stream_channel
123 | url: "http://localhost:8086"
124 | source: hosted
125 | version: "2.1.0"
126 | string_scanner:
127 | dependency: transitive
128 | description:
129 | name: string_scanner
130 | url: "http://localhost:8086"
131 | source: hosted
132 | version: "1.1.0"
133 | term_glyph:
134 | dependency: transitive
135 | description:
136 | name: term_glyph
137 | url: "http://localhost:8086"
138 | source: hosted
139 | version: "1.2.0"
140 | test_api:
141 | dependency: transitive
142 | description:
143 | name: test_api
144 | url: "http://localhost:8086"
145 | source: hosted
146 | version: "0.2.19"
147 | typed_data:
148 | dependency: transitive
149 | description:
150 | name: typed_data
151 | url: "http://localhost:8086"
152 | source: hosted
153 | version: "1.3.0"
154 | vector_math:
155 | dependency: transitive
156 | description:
157 | name: vector_math
158 | url: "http://localhost:8086"
159 | source: hosted
160 | version: "2.1.0"
161 | sdks:
162 | dart: ">=2.12.0 <3.0.0"
163 |
--------------------------------------------------------------------------------
/flutter_module/pubspec.yaml:
--------------------------------------------------------------------------------
1 | name: flutter_module
2 | description: flutter_boost采坑
3 |
4 | # The following defines the version and build number for your application.
5 | # A version number is three numbers separated by dots, like 1.2.43
6 | # followed by an optional build number separated by a +.
7 | # Both the version and the builder number may be overridden in flutter
8 | # build by specifying --build-name and --build-number, respectively.
9 | # In Android, build-name is used as versionName while build-number used as versionCode.
10 | # Read more about Android versioning at https://developer.android.com/studio/publish/versioning
11 | # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
12 | # Read more about iOS versioning at
13 | # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
14 | #
15 | # This version is used _only_ for the Runner app, which is used if you just do
16 | # a `flutter run` or a `flutter make-host-app-editable`. It has no impact
17 | # on any other native host app that you embed your Flutter project into.
18 | version: 1.0.0+1
19 |
20 | environment:
21 | sdk: ">=2.7.0 <3.0.0"
22 |
23 | dependencies:
24 | flutter:
25 | sdk: flutter
26 |
27 | flutter_boost:
28 | git:
29 | url: 'https://github.com/alibaba/flutter_boost.git'
30 | ref: 'v3.0-beta.11'
31 |
32 |
33 | # The following adds the Cupertino Icons font to your application.
34 | # Use with the CupertinoIcons class for iOS style icons.
35 | cupertino_icons: ^1.0.2
36 |
37 | dev_dependencies:
38 | flutter_test:
39 | sdk: flutter
40 |
41 | # For information on the generic Dart part of this file, see the
42 | # following page: https://dart.dev/tools/pub/pubspec
43 |
44 | flutter:
45 | # The following line ensures that the Material Icons font is
46 | # included with your application, so that you can use the icons in
47 | # the material Icons class.
48 | uses-material-design: true
49 |
50 | # To add Flutter specific assets to your application, add an assets section,
51 | # like this:
52 | # assets:
53 | # - images/a_dot_burr.jpeg
54 | # - images/a_dot_ham.jpeg
55 |
56 | # An image asset can refer to one or more resolution-specific "variants", see
57 | # https://flutter.dev/assets-and-images/#resolution-aware.
58 |
59 | # For details regarding adding assets from package dependencies, see
60 | # https://flutter.dev/assets-and-images/#from-packages
61 |
62 | # To add Flutter specific custom fonts to your application, add a fonts
63 | # section here, in this "flutter" section. Each entry in this list should
64 | # have a "family" key with the font family name, and a "fonts" key with a
65 | # list giving the asset and other descriptors for the font. For
66 | # example:
67 | # fonts:
68 | # - family: Schyler
69 | # fonts:
70 | # - asset: fonts/Schyler-Regular.ttf
71 | # - asset: fonts/Schyler-Italic.ttf
72 | # style: italic
73 | # - family: Trajan Pro
74 | # fonts:
75 | # - asset: fonts/TrajanPro.ttf
76 | # - asset: fonts/TrajanPro_Bold.ttf
77 | # weight: 700
78 | #
79 | # For details regarding fonts from package dependencies,
80 | # see https://flutter.dev/custom-fonts/#from-packages
81 |
82 |
83 | # This section identifies your Flutter project as a module meant for
84 | # embedding in a native host app. These identifiers should _not_ ordinarily
85 | # be changed after generation - they are used to ensure that the tooling can
86 | # maintain consistency when adding or modifying assets and plugins.
87 | # They also do not have any bearing on your native host application's
88 | # identifiers, which may be completely independent or the same as these.
89 | module:
90 | androidX: true
91 | androidPackage: com.example.flutter_module
92 | iosBundleIdentifier: com.example.flutterModule
93 |
--------------------------------------------------------------------------------
/flutter_module/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:flutter_module/app/flutter_app.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(FlutterApp());
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 |
--------------------------------------------------------------------------------
/ios_module/Flutter.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'Flutter'
3 | s.version = '2.0.300' # 2.0.3
4 | s.summary = 'Flutter Engine Framework'
5 | s.description = <<-DESC
6 | Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
7 | This pod vends the iOS Flutter engine framework. It is compatible with application frameworks created with this version of the engine and tools.
8 | The pod version matches Flutter version major.minor.(patch * 100) + hotfix.
9 | DESC
10 | s.homepage = 'https://flutter.dev'
11 | s.license = { :type => 'MIT', :text => <<-LICENSE
12 | Copyright 2014 The Flutter Authors. All rights reserved.
13 |
14 | Redistribution and use in source and binary forms, with or without modification,
15 | are permitted provided that the following conditions are met:
16 |
17 | * Redistributions of source code must retain the above copyright
18 | notice, this list of conditions and the following disclaimer.
19 | * Redistributions in binary form must reproduce the above
20 | copyright notice, this list of conditions and the following
21 | disclaimer in the documentation and/or other materials provided
22 | with the distribution.
23 | * Neither the name of Google Inc. nor the names of its
24 | contributors may be used to endorse or promote products derived
25 | from this software without specific prior written permission.
26 |
27 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
28 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
31 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
34 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 |
38 | LICENSE
39 | }
40 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
41 | # s.source = { :http => 'https://storage.flutter-io.cn/flutter_infra/flutter/3459eb24361807fb186953a864cf890fa8e9d26a/ios-release/artifacts.zip' }
42 | # s.source = { :git => 'http://gitlab.private.com/flutter/flutter_sdk.git', :tag => "#{s.version}" }
43 | s.source = { :http => 'https://storage.flutter-io.cn/flutter_infra/flutter/3459eb24361807fb186953a864cf890fa8e9d26a/ios-release/artifacts.zip' }
44 | s.documentation_url = 'https://flutter.dev/docs'
45 | s.platform = :ios, '8.0'
46 | s.vendored_frameworks = 'Flutter.xcframework'
47 | end
48 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcodeproj/xcshareddata/xcschemes/FlutterBoostPro.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcodeproj/xcshareddata/xcschemes/FlutterBoostProRelease.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcodeproj/xcshareddata/xcschemes/FlutterBoostProTest.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
5 |
8 |
9 |
15 |
21 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
43 |
45 |
51 |
52 |
53 |
54 |
60 |
62 |
68 |
69 |
70 |
71 |
73 |
74 |
77 |
78 |
79 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/AppDelegate.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 |
10 | @interface AppDelegate : UIResponder
11 |
12 | @property (nonatomic, strong) UIWindow * window;
13 |
14 | @end
15 |
16 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/AppDelegate.m:
--------------------------------------------------------------------------------
1 | //
2 | // AppDelegate.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "AppDelegate.h"
9 | #import "ViewController.h"
10 | #import "FlutterModuleAgent.h"
11 |
12 |
13 | @interface AppDelegate ()
14 |
15 |
16 |
17 | @end
18 |
19 | @implementation AppDelegate
20 |
21 |
22 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
23 | // Override point for customization after application launch.
24 |
25 | self.window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
26 | self.window.backgroundColor = UIColor.blackColor;
27 | self.window.rootViewController = [[BasicNavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];
28 |
29 | [self.window makeKeyAndVisible];
30 |
31 |
32 |
33 |
34 | #if TEST
35 | [FlutterModuleAgent.shared startFlutterInApp:application callback:^(FlutterEngine * _Nonnull engine, FlutterModuleAgent * _Nonnull agent) {
36 | /// 尽量在启动APP后就进行FlutterModule预加载,提前渲染一个Flutter页面
37 | /// 以解决首次进入Flutter页面闪白的问题
38 | [agent preloadFlutterModuleAfterDelay:0.6];
39 | }];
40 | #endif
41 | #if DEV
42 | [FlutterModuleAgent.shared startFlutterInApp:application callback:^(FlutterEngine * _Nonnull engine, FlutterModuleAgent * _Nonnull agent) {
43 | /// 尽量在启动APP后就进行FlutterModule预加载,提前渲染一个Flutter页面
44 | /// 以解决首次进入Flutter页面闪白的问题
45 | [agent preloadFlutterModuleAfterDelay:0.6];
46 | }];
47 | #endif
48 |
49 | return YES;
50 | }
51 |
52 |
53 |
54 | @end
55 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Assets.xcassets/AccentColor.colorset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "colors" : [
3 | {
4 | "idiom" : "universal"
5 | }
6 | ],
7 | "info" : {
8 | "author" : "xcode",
9 | "version" : 1
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Assets.xcassets/AppIconDebug.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Assets.xcassets/AppIconTest.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "iphone",
5 | "scale" : "2x",
6 | "size" : "20x20"
7 | },
8 | {
9 | "idiom" : "iphone",
10 | "scale" : "3x",
11 | "size" : "20x20"
12 | },
13 | {
14 | "idiom" : "iphone",
15 | "scale" : "2x",
16 | "size" : "29x29"
17 | },
18 | {
19 | "idiom" : "iphone",
20 | "scale" : "3x",
21 | "size" : "29x29"
22 | },
23 | {
24 | "idiom" : "iphone",
25 | "scale" : "2x",
26 | "size" : "40x40"
27 | },
28 | {
29 | "idiom" : "iphone",
30 | "scale" : "3x",
31 | "size" : "40x40"
32 | },
33 | {
34 | "idiom" : "iphone",
35 | "scale" : "2x",
36 | "size" : "60x60"
37 | },
38 | {
39 | "idiom" : "iphone",
40 | "scale" : "3x",
41 | "size" : "60x60"
42 | },
43 | {
44 | "idiom" : "ipad",
45 | "scale" : "1x",
46 | "size" : "20x20"
47 | },
48 | {
49 | "idiom" : "ipad",
50 | "scale" : "2x",
51 | "size" : "20x20"
52 | },
53 | {
54 | "idiom" : "ipad",
55 | "scale" : "1x",
56 | "size" : "29x29"
57 | },
58 | {
59 | "idiom" : "ipad",
60 | "scale" : "2x",
61 | "size" : "29x29"
62 | },
63 | {
64 | "idiom" : "ipad",
65 | "scale" : "1x",
66 | "size" : "40x40"
67 | },
68 | {
69 | "idiom" : "ipad",
70 | "scale" : "2x",
71 | "size" : "40x40"
72 | },
73 | {
74 | "idiom" : "ipad",
75 | "scale" : "1x",
76 | "size" : "76x76"
77 | },
78 | {
79 | "idiom" : "ipad",
80 | "scale" : "2x",
81 | "size" : "76x76"
82 | },
83 | {
84 | "idiom" : "ipad",
85 | "scale" : "2x",
86 | "size" : "83.5x83.5"
87 | },
88 | {
89 | "idiom" : "ios-marketing",
90 | "scale" : "1x",
91 | "size" : "1024x1024"
92 | }
93 | ],
94 | "info" : {
95 | "author" : "xcode",
96 | "version" : 1
97 | }
98 | }
99 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/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 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/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 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/BasicNavigationController.h:
--------------------------------------------------------------------------------
1 | //
2 | // BasicNavigationController.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface BasicNavigationController : UINavigationController
13 |
14 |
15 |
16 |
17 | @end
18 |
19 | NS_ASSUME_NONNULL_END
20 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/BasicNavigationController.m:
--------------------------------------------------------------------------------
1 | //
2 | // BasicNavigationController.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "BasicNavigationController.h"
9 |
10 | @interface BasicNavigationController ()
11 |
12 | @end
13 |
14 | @implementation BasicNavigationController
15 |
16 | - (void)viewDidLoad {
17 | [super viewDidLoad];
18 | self.view.backgroundColor = UIColor.whiteColor;
19 |
20 | }
21 |
22 | #pragma mark - 如果返回visibleViewController,则可能导致UIAlertViewControler闪退,全部用topViewController就好
23 |
24 | -(BOOL)shouldAutorotate{
25 | return self.topViewController.shouldAutorotate;
26 | }
27 |
28 | -(UIInterfaceOrientationMask)supportedInterfaceOrientations{
29 | return self.topViewController.supportedInterfaceOrientations;
30 | }
31 |
32 | //一开始的方向
33 | -(UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
34 | return self.topViewController.preferredInterfaceOrientationForPresentation;
35 | }
36 |
37 |
38 | - (UIViewController *)childViewControllerForStatusBarStyle {
39 | return self.topViewController;
40 | }
41 |
42 | - (UIViewController *)childViewControllerForStatusBarHidden {
43 | return self.topViewController;
44 | }
45 |
46 | - (UIViewController *)childViewControllerForHomeIndicatorAutoHidden {
47 | return self.topViewController;
48 | }
49 |
50 | @end
51 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/BasicViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // BasicViewController.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import "Func.h"
10 | #import
11 | #import "BasicNavigationController.h"
12 | #import "UIButton+Extension.h"
13 | #import
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 | @interface BasicViewController : UIViewController
18 |
19 |
20 | /** 状态栏样式,默认UIStatusBarStyleDefault,不要在info.plist文件添加全局配置
21 | */
22 | @property (nonatomic, assign) UIStatusBarStyle statusBarStyle;
23 |
24 |
25 | /** 隐藏状态栏,默认false,不要在info.plist文件添加全局配置
26 | */
27 | @property (nonatomic, assign) BOOL statusBarHidden;
28 |
29 |
30 | /** 退出页面的回调,在`viewControllerWillDismissFromStack`中调用
31 | */
32 | @property (nonatomic, copy) void (^__nullable exitCallBack)(void);
33 |
34 |
35 |
36 | /** 一些初始化配置 */
37 | - (void)didInit NS_REQUIRES_SUPER;
38 |
39 |
40 | /** 即将退出viewController,子类可重写此方法监听页面退出事件,可实现一些内存管理的事情,移除定时器之类的。
41 | * 调用popViewController / dismissViewController / removeFromParentViewController 后触发此方法
42 | * 注意: 作为UISearchController.searchResultController时会被多次调用
43 | */
44 | - (void)viewControllerWillDismissFromStack NS_REQUIRES_SUPER;
45 |
46 |
47 | - (void)exitViewControllerAnimated:(BOOL)animated;
48 |
49 |
50 | - (void)resetStatusBarStyle:(UIStatusBarStyle)statusBarStyle;
51 | @end
52 |
53 | NS_ASSUME_NONNULL_END
54 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleAgent.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleAgent.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import "FlutterModuleConstants.h"
10 |
11 | #import
12 |
13 | #import "FlutterModuleNavigator.h"
14 | #import "FlutterModuleChannel.h"
15 | #import "FlutterModuleHelper.h"
16 | #import "FlutterModuleViewController.h"
17 |
18 |
19 | NS_ASSUME_NONNULL_BEGIN
20 |
21 | /// flutter boost页面路由的代理, 差不多就是flutter端的navigator的代理
22 | /// 实现页面的入栈出栈
23 | @interface FlutterModuleAgent : NSObject
24 |
25 | /// 单例
26 | @property (nonatomic, strong, readonly, class) FlutterModuleAgent * shared;
27 |
28 | @property (nonatomic, strong, readonly) FlutterModuleChannel * globalChannel;
29 |
30 |
31 | /// 初始化flutter,会触发flutter的main(),同时Agent内部会实现一个全局的FlutterModuleChannel,用于2端交互
32 | ///
33 | /// 在FLBFlutterApplication文件中,初始化引擎后便调用了
34 | /// Class clazz = NSClassFromString(@"GeneratedPluginRegistrant");
35 | /// [clazz performSelector:NSSelectorFromString(@"registerWithRegistry:") withObject:myengine];
36 | /// 所以不需要再手动注册插件,即下面一行代码
37 | /// [GeneratedPluginRegistrant registerWithRegistry:self];
38 | ///
39 | - (void)startFlutterInApp:(UIApplication *)application
40 | callback:(void (^)(FlutterEngine * engine, FlutterModuleAgent * agent))callback ;
41 |
42 |
43 |
44 | /// 尽量在启动APP后就进行FlutterModule预加载,提前渲染一个Flutter页面
45 | /// 以解决首次进入Flutter页面闪白的问题
46 | /// @param delay 秒
47 | - (void)preloadFlutterModuleAfterDelay:(CGFloat)delay;
48 |
49 |
50 |
51 | @end
52 |
53 | NS_ASSUME_NONNULL_END
54 |
55 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleChannel.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleChannel.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import
10 | #import "Func.h"
11 |
12 | NS_ASSUME_NONNULL_BEGIN
13 |
14 | @interface FlutterModuleChannel : NSObject
15 | @property (class, nonatomic, strong, readonly) FlutterModuleChannel * global;
16 |
17 | @property (nonatomic, strong, readonly) FlutterMethodChannel* channel;
18 |
19 |
20 | - (void)initMessageChannelWithEngine:(FlutterEngine * _Nonnull)engine;
21 |
22 | - (void)addInterceptorForMethod:(NSString *)method received:(FlutterMethodCallHandler _Nullable)received;
23 |
24 | - (void)removeInterceptorForMethod:(NSString *)method;
25 |
26 |
27 | @end
28 |
29 | NS_ASSUME_NONNULL_END
30 |
31 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleChannel.m:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleChannel.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "FlutterModuleChannel.h"
9 |
10 | @interface FlutterModuleChannel ()
11 |
12 | @property (nonatomic, strong) NSMutableDictionary * interceptors;
13 |
14 | @end
15 |
16 |
17 | @implementation FlutterModuleChannel
18 |
19 | - (NSMutableDictionary *)interceptors{
20 | if (!_interceptors) {
21 | _interceptors = [[NSMutableDictionary alloc]init];
22 | }return _interceptors;
23 | }
24 |
25 |
26 | + (FlutterModuleChannel *)global {
27 | static FlutterModuleChannel * channel;
28 | static dispatch_once_t onceToken;
29 | dispatch_once(&onceToken, ^{
30 | channel = [[FlutterModuleChannel alloc] init];
31 | });
32 | return channel;
33 | }
34 |
35 |
36 |
37 | - (void)initMessageChannelWithEngine:(FlutterEngine *)engine {
38 | _channel = [FlutterMethodChannel methodChannelWithName:@"app_global_channel" binaryMessenger:engine.binaryMessenger];
39 | __weak typeof(self) weakSelf = self;
40 | [_channel setMethodCallHandler:^(FlutterMethodCall * _Nonnull call, FlutterResult _Nonnull result) {
41 | __strong typeof(weakSelf) self = weakSelf;
42 |
43 | /// 业务层注册的一些拦截器
44 | FlutterMethodCallHandler handler = [self.interceptors objectForKey:call.method];
45 | if (handler) {
46 | handler(call, result);
47 | return;
48 | }
49 |
50 |
51 | /// MARK: 实现一些通用的响应
52 |
53 | /// 磁盘总容量
54 | if ([call.method isEqualToString:@"total_disk_size"]) {
55 | var totalSpace = [self totalDiskSize];
56 | result([NSNumber numberWithUnsignedLongLong:totalSpace]);
57 | }
58 | /// 磁盘可用容量
59 | else if ([call.method isEqualToString:@"free_disk_size"]) {
60 | var freeSpace = [self freeDiskSize];
61 | result([NSNumber numberWithUnsignedLongLong:freeSpace]);
62 | } else {
63 | result(FlutterMethodNotImplemented);
64 | }
65 | }];
66 | }
67 |
68 |
69 | - (void)addInterceptorForMethod:(NSString *)method received:(FlutterMethodCallHandler)received {
70 | if (method && received) {
71 | NSAssert(!self.interceptors[method], @"请勿重复注册");
72 | [self.interceptors setObject:received forKey:method];
73 | } else {
74 | NSAssert(false, @"搞啥呢");
75 | }
76 | }
77 |
78 | - (void)removeInterceptorForMethod:(NSString *)method {
79 | if (method) {
80 | [self.interceptors removeObjectForKey:method];
81 | }
82 | }
83 |
84 |
85 |
86 |
87 |
88 |
89 | - (unsigned long long)totalDiskSize {
90 | unsigned long long totalSpace = 0;
91 | if (@available(iOS 11.0, *)) {
92 | NSDictionary * resource = [[NSURL fileURLWithPath:NSHomeDirectory()] resourceValuesForKeys:@[NSURLVolumeTotalCapacityKey] error:nil];
93 | totalSpace = [[resource objectForKey:NSURLVolumeTotalCapacityKey] unsignedLongLongValue];
94 | } else {
95 | totalSpace = [[[[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil] objectForKey:NSFileSystemSize] unsignedLongLongValue];
96 | }
97 | return totalSpace/(1024*1024);
98 | }
99 |
100 | - (unsigned long long)freeDiskSize {
101 | unsigned long long freeSpace = 0;
102 | if (@available(iOS 11.0, *)) {
103 | /// NSURLVolumeAvailableCapacityKey, NSURLVolumeAvailableCapacityForImportantUsageKey, NSURLVolumeAvailableCapacityForOpportunisticUsageKey
104 | NSDictionary * resource = [[NSURL fileURLWithPath:NSHomeDirectory()] resourceValuesForKeys:@[NSURLVolumeAvailableCapacityKey] error:nil];
105 | freeSpace = [[resource objectForKey:NSURLVolumeAvailableCapacityKey] unsignedLongLongValue];
106 | } else {
107 | freeSpace = [[[[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:nil] objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
108 | }
109 | return freeSpace/(1024*1024);
110 | }
111 |
112 |
113 | @end
114 |
115 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleConstants.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleConstants.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #ifndef FlutterModuleConstants_h
9 | #define FlutterModuleConstants_h
10 | #import
11 |
12 | /// Flutter开关
13 | static const NSInteger kFlutterEnable = 1;
14 |
15 |
16 | /// 禁用侧滑返回
17 | static NSString * const kDisableFullscreenPopGesture = @"disable_fullscreen_pop_gesture";
18 |
19 | /// 指定状态栏样式
20 | static NSString * const kStatusBarStyle = @"statusBarStyle";
21 |
22 | /// 通过FlutterBoost打开native页面时传的url
23 | static NSString * const kNativePage = @"native_page";
24 |
25 |
26 | /// 通过FlutterBoost打开native页面时携带的参数:指定native的路由
27 | static NSString * const kNativeRouteUrl = @"route_url";
28 |
29 |
30 | /// 通过FlutterBoost打开native页面时携带的参数:指定native的路由参数
31 | static NSString * const kNativeRouteParams = @"route_params";
32 |
33 |
34 | #endif /* FlutterModuleConstants_h */
35 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleHelper.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleHelper.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface FlutterModuleHelper : NSObject
13 |
14 | /// 获取当前展示的window
15 | + (UIWindow * _Nullable)visibleWindow;
16 |
17 | /// 获取当前显示的控制器
18 | + (UIViewController * _Nullable)visibleViewController;
19 |
20 | /// 获取当前控制器的NaviagtionController
21 | + (UINavigationController * _Nullable)visibleNaviagtionController;
22 |
23 | /// 退出控制器
24 | + (void)exitViewController:(UIViewController *)vc animated:(BOOL)animated;
25 |
26 | @end
27 |
28 | NS_ASSUME_NONNULL_END
29 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleNavigator.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleNavigator.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import "FlutterModuleConstants.h"
10 |
11 | #import
12 | #import "FlutterModuleViewController.h"
13 |
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 | /// 相当于页面navigator
18 | @interface FlutterModuleNavigator : NSObject
19 |
20 |
21 | /// 关闭页面
22 | + (void)close:(NSString *)uniqueId;
23 |
24 | /// 打开Flutter页面
25 | + (void)push:(NSString *)url
26 | arguments:(NSDictionary * _Nullable)arguments;
27 |
28 | /// 打开Flutter页面
29 | + (void)push:(NSString *)url;
30 |
31 | /// 打开Flutter页面
32 | + (void)present:(NSString *)url
33 | arguments:(NSDictionary * _Nullable)arguments;
34 |
35 | /// 打开Flutter页面
36 | + (void)present:(NSString *)url;
37 |
38 |
39 | @end
40 |
41 | NS_ASSUME_NONNULL_END
42 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleNavigator.m:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleNavigator.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "FlutterModuleNavigator.h"
9 |
10 | @implementation FlutterModuleNavigator
11 |
12 | + (void)close:(NSString *)uniqueId {
13 | [FlutterBoost.instance close:uniqueId];
14 | }
15 |
16 | + (void)push:(NSString *)url
17 | arguments:(NSDictionary *)arguments {
18 | [FlutterBoost.instance open:url arguments:arguments completion:^(BOOL finished) {
19 |
20 | }];
21 | }
22 |
23 | + (void)push:(NSString *)url {
24 | [self push:url arguments:@{}];
25 | }
26 |
27 | + (void)present:(NSString *)url
28 | arguments:(NSDictionary *)arguments {
29 | NSMutableDictionary * parameters = SafeMutDictionary(arguments);
30 | parameters[@"present"] = @(true);
31 | [FlutterBoost.instance open:url arguments:parameters completion:^(BOOL finished) {
32 |
33 | }];
34 | }
35 |
36 |
37 | + (void)present:(NSString *)url {
38 | [self present:url arguments:@{}];
39 | }
40 |
41 |
42 | @end
43 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleViewController.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "BasicViewController.h"
9 | #import "FlutterModuleConstants.h"
10 |
11 |
12 | #import
13 | #import
14 |
15 | NS_ASSUME_NONNULL_BEGIN
16 |
17 | @interface FlutterModuleViewController : BasicViewController
18 |
19 | /// flutter定义的路由
20 | @property (nonatomic, copy) NSString * route;
21 |
22 |
23 | /// 用Flutter测的路由和参数来初始化,不需要子类重写 `willMountFlutterContainer` 调用 `setName:(NSString *)name params:(NSDictionary *)params;`
24 | /// 2个特殊参数:
25 | /// params.disableFullscreenPopGesture 禁用FDFullscreenPopGesture的全屏侧滑返回效果
26 | /// params.statusBarStyle 控制状态栏的颜色
27 | - (instancetype)initWithRoute:(NSString *)route params:(NSDictionary *)params;
28 |
29 |
30 | /// 此时设置setInitialRoute没有用,main()拿到的defaultRouteName是'/'
31 | @property(nonatomic, strong, readonly)FBFlutterViewContainer * flutterContainer;
32 |
33 |
34 | /// Flutter容器刚初始化,还未添加到view上,子类可重写设置路由
35 | - (void)willMountFlutterContainer;
36 |
37 | /// 布局,子类可重写
38 | - (void)willLayoutFlutterContainer;
39 |
40 |
41 | @end
42 |
43 | NS_ASSUME_NONNULL_END
44 |
45 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/FlutterModule/FlutterModuleViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // FlutterModuleViewController.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "FlutterModuleViewController.h"
9 |
10 |
11 | @interface FlutterModuleViewController ()
12 |
13 | @property (nonatomic, strong) NSMutableDictionary * params;
14 |
15 | @end
16 |
17 | @implementation FlutterModuleViewController
18 |
19 |
20 | - (instancetype)initWithRoute:(NSString *)route params:(NSDictionary *)params {
21 | if (self = [super init]) {
22 | self.route = SafeString(route);
23 | self.params = SafeMutDictionary(params);
24 | }return self;
25 | }
26 |
27 | - (void)didInit {
28 | [super didInit];
29 | /// 因为继承BasicViewController,导致Flutter控制不了native的statusBarStyle
30 | /// 所以这里由初始参数控制,不随默认的
31 | if (self.params[kStatusBarStyle]) {
32 | [self resetStatusBarStyle:[self.params[kStatusBarStyle] integerValue]];
33 | [self.params removeObjectForKey:kStatusBarStyle];
34 | }
35 |
36 | _flutterContainer = [[FBFlutterViewContainer alloc] init];
37 | }
38 |
39 | - (void)viewDidLoad {
40 | [super viewDidLoad];
41 |
42 | /// 隐藏系统自带的导航栏,由Flutter侧实现
43 | self.fd_prefersNavigationBarHidden = true;
44 |
45 | /// FDFullscreenPopGesture的全屏侧滑手势优先于Flutter页面的手势
46 | /// 如果Flutter页面是类似PageView的结构,就会导致Flutter页面的右向滑动失效,并触发FDFullscreenPopGesture的侧滑返回
47 | if (self.params[kDisableFullscreenPopGesture]) {
48 | self.fd_interactivePopDisabled = [self.params[kDisableFullscreenPopGesture] boolValue];
49 | [self.params removeObjectForKey:kDisableFullscreenPopGesture];
50 | }
51 |
52 | /// 供子类重写 调用 `setName:(NSString *)name params:(NSDictionary *)params;`
53 | [self willMountFlutterContainer];
54 |
55 | self.flutterContainer.view.frame = self.view.bounds;
56 | [self.view insertSubview:self.flutterContainer.view atIndex:0];
57 | [self addChildViewController:self.flutterContainer];
58 |
59 | [self willLayoutFlutterContainer];
60 | }
61 |
62 | - (void)didMoveToParentViewController:(UIViewController *)parent {
63 | /// MARK: 下面这行代码在这儿会触发2次notifyWillDealloc,会导致FlutterBoost出现异常
64 | /// 比如 NoSuchMethodError: The getter 'topPage' was called on null.
65 | /// [self.flutterContainer didMoveToParentViewController:parent];
66 |
67 | /// 下面只会触发一次notifyWillDealloc,正常
68 | if (parent == nil && self.flutterContainer.parentViewController) {
69 | [self.flutterContainer removeFromParentViewController];
70 | }
71 | [super didMoveToParentViewController:parent];
72 | }
73 |
74 | - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void (^)(void))completion {
75 | [super dismissViewControllerAnimated:flag completion:^{
76 | /// MARK: 解决NavigationController嵌套CustomFlutterVC导致Flutter页面不释放的问题
77 | /// 原因是 'dismissViewControllerAnimated:completion:' 并不会触发 'didMoveToParentViewController:'方法
78 | /// FBFlutterViewContainer 由重写 'dismissViewControllerAnimated:completion:' 方法来移除Flutter页面
79 | /// 但如果FBFlutterVC又被嵌套在自定义的CustomFlutterVC里面,CustomFlutterVC就需要实现移除Flutter页面的逻辑
80 | /// 比如下面的嵌套层级,NavigationController是present出来的
81 | /// NavigationController ---root vc---> CustomFlutterVC --- add sub vc ---> FBFlutterVC --- add sub vc ---> FlutterVC
82 |
83 | [self didMoveToParentViewController:nil];
84 | }];
85 | }
86 |
87 |
88 | #pragma mark - Override
89 |
90 | - (void)willMountFlutterContainer {
91 | if (IsNonempty(self.route)) {
92 | [self.flutterContainer setName:self.route uniqueId:nil params:self.params opaque:false];
93 | } else {
94 | NSAssert(false, @"参数异常");
95 | }
96 | }
97 |
98 | - (void)willLayoutFlutterContainer {
99 | [self.flutterContainer.view mas_makeConstraints:^(MASConstraintMaker *make) {
100 | make.edges.mas_offset(0);
101 | }];
102 | }
103 |
104 |
105 | @end
106 |
107 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Info-Debug.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSBonjourServices
6 |
7 | _dartobservatory._tcp
8 |
9 | UIViewControllerBasedStatusBarAppearance
10 |
11 | CFBundleDevelopmentRegion
12 | $(DEVELOPMENT_LANGUAGE)
13 | CFBundleExecutable
14 | $(EXECUTABLE_NAME)
15 | CFBundleIdentifier
16 | $(CustomAppBundleld)
17 | CFBundleInfoDictionaryVersion
18 | 6.0
19 | CFBundleName
20 | $(CustomProductName)
21 | CFBundlePackageType
22 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
23 | CFBundleShortVersionString
24 | 1.0
25 | CFBundleVersion
26 | 1
27 | LSRequiresIPhoneOS
28 |
29 | UIApplicationSupportsIndirectInputEvents
30 |
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | UIMainStoryboardFile
34 | Main
35 | UIRequiredDeviceCapabilities
36 |
37 | armv7
38 |
39 | UISupportedInterfaceOrientations
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 |
45 | UISupportedInterfaceOrientations~ipad
46 |
47 | UIInterfaceOrientationPortrait
48 | UIInterfaceOrientationPortraitUpsideDown
49 | UIInterfaceOrientationLandscapeLeft
50 | UIInterfaceOrientationLandscapeRight
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Info-Release.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | UIViewControllerBasedStatusBarAppearance
6 |
7 | CFBundleDevelopmentRegion
8 | $(DEVELOPMENT_LANGUAGE)
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(CustomAppBundleld)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(CustomProductName)
17 | CFBundlePackageType
18 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | UIApplicationSupportsIndirectInputEvents
26 |
27 | UILaunchStoryboardName
28 | LaunchScreen
29 | UIMainStoryboardFile
30 | Main
31 | UIRequiredDeviceCapabilities
32 |
33 | armv7
34 |
35 | UISupportedInterfaceOrientations
36 |
37 | UIInterfaceOrientationPortrait
38 | UIInterfaceOrientationLandscapeLeft
39 | UIInterfaceOrientationLandscapeRight
40 |
41 | UISupportedInterfaceOrientations~ipad
42 |
43 | UIInterfaceOrientationPortrait
44 | UIInterfaceOrientationPortraitUpsideDown
45 | UIInterfaceOrientationLandscapeLeft
46 | UIInterfaceOrientationLandscapeRight
47 |
48 |
49 |
50 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/Info-Test.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | NSBonjourServices
6 |
7 | _dartobservatory._tcp
8 |
9 | UIViewControllerBasedStatusBarAppearance
10 |
11 | CFBundleDevelopmentRegion
12 | $(DEVELOPMENT_LANGUAGE)
13 | CFBundleExecutable
14 | $(EXECUTABLE_NAME)
15 | CFBundleIdentifier
16 | $(CustomAppBundleld)
17 | CFBundleInfoDictionaryVersion
18 | 6.0
19 | CFBundleName
20 | $(CustomProductName)
21 | CFBundlePackageType
22 | $(PRODUCT_BUNDLE_PACKAGE_TYPE)
23 | CFBundleShortVersionString
24 | 1.0
25 | CFBundleVersion
26 | 1
27 | LSRequiresIPhoneOS
28 |
29 | UIApplicationSupportsIndirectInputEvents
30 |
31 | UILaunchStoryboardName
32 | LaunchScreen
33 | UIMainStoryboardFile
34 | Main
35 | UIRequiredDeviceCapabilities
36 |
37 | armv7
38 |
39 | UISupportedInterfaceOrientations
40 |
41 | UIInterfaceOrientationPortrait
42 | UIInterfaceOrientationLandscapeLeft
43 | UIInterfaceOrientationLandscapeRight
44 |
45 | UISupportedInterfaceOrientations~ipad
46 |
47 | UIInterfaceOrientationPortrait
48 | UIInterfaceOrientationPortraitUpsideDown
49 | UIInterfaceOrientationLandscapeLeft
50 | UIInterfaceOrientationLandscapeRight
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/NSObject+Extension.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+Extension.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface NSObject (Extension)
13 |
14 |
15 | /**
16 | * 作为链式调用的保护层,可以这么写,能有效避免野指针
17 | * [obj jk_chained:^{
18 | * obj.jk_backgroundColor(UIColor.clearColor);
19 | * }];
20 | */
21 | - (void)jk_chained:(dispatch_block_t)chained;
22 |
23 |
24 | /**
25 | * 作为链式调用的保护层,能有效避免野指针,并且会在主线程安全回调
26 | * [obj jk_chainedInMainQueue:^{
27 | * obj.jk_backgroundColor(UIColor.clearColor);
28 | * }];
29 | */
30 | - (void)jk_chainedInMainQueue:(dispatch_block_t)chained;
31 |
32 |
33 | @end
34 |
35 | NS_ASSUME_NONNULL_END
36 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/NSObject+Extension.m:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+Extension.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "NSObject+Extension.h"
9 |
10 | @implementation NSObject (Extension)
11 |
12 | - (void)jk_chained:(dispatch_block_t)chained {
13 | chained ? chained() : NULL;
14 | }
15 |
16 |
17 | - (void)jk_chainedInMainQueue:(dispatch_block_t)chained {
18 | if (NSThread.isMainThread) {
19 | chained ? chained() : NULL;
20 | } else {
21 | __weak __typeof(self)weakSelf = self;
22 | dispatch_async(dispatch_get_main_queue(), ^{
23 | __strong __typeof(weakSelf)self = weakSelf;
24 | [self jk_chained:chained];
25 | });
26 | }
27 | }
28 |
29 |
30 | @end
31 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/NativeViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // NativeViewController.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "BasicViewController.h"
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | @interface NativeViewController : BasicViewController
13 |
14 | @end
15 |
16 | NS_ASSUME_NONNULL_END
17 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/NativeViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // NativeViewController.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "NativeViewController.h"
9 |
10 | @interface NativeViewController ()
11 |
12 | @end
13 |
14 | @implementation NativeViewController
15 |
16 | - (void)viewDidLoad {
17 | [super viewDidLoad];
18 | self.navigationItem.title = @"native page";
19 |
20 | var nativeButton = [UIButton jk_buttonWithFrame:CGRectMake(0, 0, 150, 40) titleColor:UIColor.whiteColor title:@"Push Native Page"];
21 | nativeButton.center = self.view.center;
22 | nativeButton.jk_font(PingFangMediumFont(15)).jk_backgroundColor(UIColor.purpleColor).jk_cornrRadius(4);
23 | [self.view addSubview:nativeButton];
24 | [nativeButton addTarget:self action:@selector(pushNativePage) forControlEvents:(UIControlEventTouchUpInside)];
25 | }
26 |
27 |
28 | - (void)pushNativePage {
29 | var vc = [[NativeViewController alloc] init];
30 | [self.navigationController pushViewController:vc animated:true];
31 | }
32 |
33 | @end
34 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/UIButton+Extension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIButton+Extension.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import "UIView+Extension.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface UIButton (Extension)
14 |
15 | /** 设置按钮的标题字体 */
16 | @property (nonatomic, copy, readonly) UIButton * (^jk_font)(UIFont * titleFont);
17 |
18 |
19 | /** runtime标记当前为normal状态,并不会改变按钮实际状态 */
20 | @property (nonatomic, copy, readonly) UIButton * jk_normal;
21 |
22 | /** runtime标记当前为highlighted状态,并不会改变按钮实际状态 */
23 | @property (nonatomic, copy, readonly) UIButton * jk_highlighted;
24 |
25 | /** runtime标记当前为selected状态,并不会改变按钮实际状态 */
26 | @property (nonatomic, copy, readonly) UIButton * jk_selected;
27 |
28 | /** runtime标记当前为disabled状态,并不会改变按钮实际状态 */
29 | @property (nonatomic, copy, readonly) UIButton * jk_disabled;
30 |
31 | /** runtime标记通用状态, highlighted + normal + selected + disabled,并不会改变按钮实际状态 */
32 | @property (nonatomic, copy, readonly) UIButton * jk_general;
33 |
34 | /** 设置title,默认是.jk_normal,需要配合.jk_normal .jk_highlighted .jk_selected .jk_disabled .jk_general一起使用
35 | */
36 | @property (nonatomic, copy, readonly) UIButton * (^jk_title)(NSString * __nullable title);
37 |
38 | /** 设置titleColor,默认是.jk_normal,需要配合.jk_normal .jk_highlighted .jk_selected .jk_disabled .jk_general一起使用
39 | */
40 | @property (nonatomic, copy, readonly) UIButton * (^jk_titleColor)(UIColor * __nullable titleColor);
41 |
42 | /** 设置image,默认是.jk_normal,需要配合.jk_normal .jk_highlighted .jk_selected .jk_disabled .jk_general一起使用
43 | */
44 | @property (nonatomic, copy, readonly) UIButton * (^jk_image)(UIImage * __nullable image);
45 |
46 | /** 设置backgroundImage,默认是.jk_normal,需要配合.jk_normal .jk_highlighted .jk_selected .jk_disabled .jk_general一起使用
47 | */
48 | @property (nonatomic, copy, readonly) UIButton * (^jk_backgroundImage)(UIImage * __nullable backgroundImage);
49 |
50 |
51 | /** 按钮的标题字体 */
52 | @property (nonatomic, strong) UIFont * titleFont;
53 |
54 |
55 | - (void)jk_setTitle:(NSString * __nullable)title titleColor:(UIColor * __nullable)titleColor forState:(UIControlState)state;
56 |
57 |
58 | /** 高亮button便利构造方法 */
59 | + (instancetype)jk_buttonWithFrame:(CGRect)frame;
60 |
61 |
62 | /**
63 | 普通的文字按钮
64 |
65 | @param frame frame
66 | @param color titleColor
67 | @param title title
68 | @return 普通
69 | */
70 | + (instancetype)jk_buttonWithFrame:(CGRect)frame titleColor:(UIColor * __nullable)color title:(NSString * __nullable)title;
71 |
72 |
73 |
74 | @end
75 |
76 | NS_ASSUME_NONNULL_END
77 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/UIView+Extension.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+Extension.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import "NSObject+Extension.h"
10 |
11 | NS_ASSUME_NONNULL_BEGIN
12 |
13 | @interface UIView (Extension)
14 |
15 | /**
16 | 不安全的属性,可能会出现野指针错误,请在[UIView jk_chained:]里面调用
17 | */
18 | @property (nonatomic, copy, readonly) UIView * (^jk_backgroundColor)(UIColor * __nullable color);
19 |
20 |
21 | @property (nonatomic, copy, readonly) UIView * (^jk_cornrRadius)(CGFloat cornrRadius);
22 |
23 | @property (nonatomic, copy, readonly) UIView * (^jk_borderWidth)(CGFloat borderWidth);
24 |
25 | @property (nonatomic, copy, readonly) UIView * (^jk_borderColor)(UIColor * __nullable borderColor);
26 |
27 | @property (nonatomic, copy, readonly) UIView * (^jk_masksToBounds)(BOOL masksToBounds);
28 |
29 | @property (nonatomic, assign) CGFloat jk_centerX;
30 | @property (nonatomic, assign) CGFloat jk_centerY;
31 |
32 | /**
33 | 相对View本身bounds的中心点,也就是宽高的一半
34 | */
35 | @property (nonatomic, assign, readonly) CGPoint jk_centerOfBounds;
36 |
37 |
38 | @end
39 |
40 | NS_ASSUME_NONNULL_END
41 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/UIView+Extension.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIView+Extension.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "UIView+Extension.h"
9 |
10 | @implementation UIView (Extension)
11 |
12 |
13 | - (UIView * _Nonnull (^)(UIColor * _Nullable))jk_backgroundColor {
14 | return ^UIView *(UIColor * value) {
15 | self.backgroundColor = value;
16 | return self;
17 | };
18 | }
19 |
20 | - (UIView * _Nonnull (^)(CGFloat))jk_cornrRadius {
21 | return ^UIView *(CGFloat value) {
22 | self.layer.cornerRadius = value;
23 | return self;
24 | };
25 | }
26 |
27 | - (UIView * _Nonnull (^)(CGFloat))jk_borderWidth {
28 | return ^UIView *(CGFloat value) {
29 | self.layer.borderWidth = value;
30 | self.layer.masksToBounds = value > 0.01;
31 | return self;
32 | };
33 | }
34 |
35 | - (UIView * _Nonnull (^)(UIColor * _Nullable))jk_borderColor {
36 | return ^UIView *(UIColor * value) {
37 | self.layer.borderColor = value.CGColor;
38 | return self;
39 | };
40 | }
41 |
42 | - (UIView * _Nonnull (^)(BOOL))jk_masksToBounds {
43 | return ^UIView *(BOOL value) {
44 | self.layer.masksToBounds = value;
45 | return self;
46 | };
47 | }
48 |
49 |
50 | - (void)setJk_centerX:(CGFloat)jk_centerX {
51 | CGPoint temp = self.center;
52 | temp.x = jk_centerX;
53 | self.center = temp;
54 | }
55 | - (CGFloat)jk_centerX {
56 | return self.center.x;
57 | }
58 |
59 |
60 |
61 | - (void)setJk_centerY:(CGFloat)jk_centerY {
62 | CGPoint temp = self.center;
63 | temp.y = jk_centerY;
64 | self.center = temp;
65 | }
66 | - (CGFloat)jk_centerY {
67 | return self.center.y;
68 | }
69 |
70 | - (CGPoint)jk_centerOfBounds {
71 | return CGPointMake(self.bounds.size.width * 0.5, self.bounds.size.height * 0.5);
72 | }
73 |
74 | @end
75 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/ViewController.h:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.h
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "BasicViewController.h"
9 |
10 | @interface ViewController : BasicViewController
11 |
12 |
13 | @end
14 |
15 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/ViewController.m:
--------------------------------------------------------------------------------
1 | //
2 | // ViewController.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import "ViewController.h"
9 | #import "NativeViewController.h"
10 | #import "FlutterModuleAgent.h"
11 |
12 |
13 |
14 | @interface ViewController ()
15 |
16 | @property (nonatomic, assign) NSInteger index;
17 |
18 | @end
19 |
20 | @implementation ViewController
21 |
22 | - (void)viewDidLoad {
23 | [super viewDidLoad];
24 | self.navigationItem.title = @"Native Page";
25 |
26 |
27 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"present search" style:(UIBarButtonItemStylePlain) target:self action:@selector(presentSearchPage)];
28 | self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"push search" style:(UIBarButtonItemStylePlain) target:self action:@selector(pushSearchPage)];
29 |
30 |
31 |
32 |
33 | if (@available(iOS 13.0, *)) {
34 | var system = [UIButton jk_buttonWithFrame:CGRectMake(0, 150, 150, 40) titleColor:UIColor.whiteColor title:@"System"];
35 | system.jk_font(PingFangMediumFont(15)).jk_backgroundColor(UIColor.purpleColor).jk_cornrRadius(4);
36 | [system addTarget:self action:@selector(setSystemMode) forControlEvents:(UIControlEventTouchUpInside)];
37 | system.jk_centerX = self.view.jk_centerX;
38 | [self.view addSubview:system];
39 |
40 | var dark = [UIButton jk_buttonWithFrame:CGRectMake(0, 220, 150, 40) titleColor:UIColor.whiteColor title:@"DarkMode"];
41 | dark.jk_font(PingFangMediumFont(15)).jk_backgroundColor(UIColor.purpleColor).jk_cornrRadius(4);
42 | [dark addTarget:self action:@selector(setDarkMode) forControlEvents:(UIControlEventTouchUpInside)];
43 | dark.jk_centerX = self.view.jk_centerX;
44 | [self.view addSubview:dark];
45 |
46 | var light = [UIButton jk_buttonWithFrame:CGRectMake(0, 290, 150, 40) titleColor:UIColor.whiteColor title:@"LightMode"];
47 | light.jk_font(PingFangMediumFont(15)).jk_backgroundColor(UIColor.purpleColor).jk_cornrRadius(4);
48 | [light addTarget:self action:@selector(setLightMode) forControlEvents:(UIControlEventTouchUpInside)];
49 | light.jk_centerX = self.view.jk_centerX;
50 | [self.view addSubview:light];
51 | }
52 |
53 |
54 |
55 | var nativeButton = [UIButton jk_buttonWithFrame:CGRectMake(0, 400, 150, 40) titleColor:UIColor.whiteColor title:@"Push Native Page"];
56 | nativeButton.center = self.view.center;
57 | nativeButton.jk_font(PingFangMediumFont(15)).jk_backgroundColor(UIColor.purpleColor).jk_cornrRadius(4);
58 | [self.view addSubview:nativeButton];
59 | [nativeButton addTarget:self action:@selector(pushNativePage) forControlEvents:(UIControlEventTouchUpInside)];
60 | }
61 |
62 |
63 | - (void)presentSearchPage {
64 | self.index ++;
65 | [FlutterModuleNavigator present:@"search_page" arguments:@{@"index":@(self.index)}];
66 | }
67 |
68 | - (void)pushSearchPage {
69 | self.index ++;
70 | [FlutterModuleNavigator push:@"search_page" arguments:@{@"index":@(self.index)}];
71 | }
72 |
73 | - (void)pushNativePage {
74 | var vc = [[NativeViewController alloc] init];
75 | [self.navigationController pushViewController:vc animated:true];
76 | }
77 |
78 |
79 | - (void)setSystemMode API_AVAILABLE(ios(13.0), tvos(13.0)) {
80 | self.view.window.overrideUserInterfaceStyle = UIUserInterfaceStyleUnspecified;
81 | [FlutterModuleAgent.shared preloadFlutterModuleAfterDelay:0.5];
82 | }
83 |
84 | - (void)setDarkMode API_AVAILABLE(ios(13.0), tvos(13.0)) {
85 | self.view.window.overrideUserInterfaceStyle = UIUserInterfaceStyleDark;
86 | [FlutterModuleAgent.shared preloadFlutterModuleAfterDelay:0.5];
87 | }
88 |
89 | - (void)setLightMode API_AVAILABLE(ios(13.0), tvos(13.0)) {
90 | self.view.window.overrideUserInterfaceStyle = UIUserInterfaceStyleLight;
91 | [FlutterModuleAgent.shared preloadFlutterModuleAfterDelay:0.5];
92 | }
93 |
94 |
95 |
96 | @end
97 |
--------------------------------------------------------------------------------
/ios_module/FlutterBoostPro/main.m:
--------------------------------------------------------------------------------
1 | //
2 | // main.m
3 | // FlutterBoostPro
4 | //
5 | // Created by JK on 2021/6/10.
6 | //
7 |
8 | #import
9 | #import "AppDelegate.h"
10 |
11 | int main(int argc, char * argv[]) {
12 | NSString * appDelegateClassName;
13 | @autoreleasepool {
14 | // Setup code that might create autoreleased objects goes here.
15 | appDelegateClassName = NSStringFromClass([AppDelegate class]);
16 | }
17 | return UIApplicationMain(argc, argv, nil, appDelegateClassName);
18 | }
19 |
--------------------------------------------------------------------------------
/ios_module/Podfile:
--------------------------------------------------------------------------------
1 | # Uncomment the next line to define a global platform for your project
2 | #source 'https://github.com/XiFengLang/JKFlutter.git'
3 |
4 | platform :ios,'11.0'
5 | source 'https://github.com/CocoaPods/Specs.git'
6 | #source 'http://gitlab.private.cn/flutter/flutter_module_sdk_podspec.git'
7 |
8 | target 'FlutterBoostPro' do
9 | # Comment the next line if you don't want to use dynamic frameworks
10 | use_frameworks!
11 |
12 | pod 'AppleDevices'
13 | pod 'FDFullscreenPopGesture'
14 | pod 'JKRetractableGCDDelay'
15 | pod 'Masonry'
16 |
17 |
18 | # 0x01:可行,本地依赖(官方推荐) 缺点:每次编译的时候会顺带编译Flutter的framework,耗时
19 | # flutter_application_path = '../flutter_module/'
20 | # load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
21 | # install_all_flutter_pods(flutter_application_path)
22 |
23 |
24 | # 0x02:可行,本地依赖Flutter的编译产物(.xcframework),手动创建podspec,依赖的时候指定:path
25 | # 缺点:不管是否将产物输出到iOS项目目录里,都是本地的相对路径,而还要对编译产物做git管理,对项目的侵入性或耦合性较强
26 |
27 |
28 | # 0x03:可行,Flutter.framework选择本地podspec+远程zip,App和PluginSDK则是本地依赖(方案同上)
29 | # 缺点:不管是否将产物输出到iOS项目目录里,都是本地的相对路径,要对编译产物做git管理,仅仅只是Flutter远程下载,对项目的侵入性或耦合性还是较强
30 |
31 |
32 | # 0x04:可行(Flutter本地podspec+远程zip,App和PluginSDK经Git远程依赖)
33 | # 如果用Git依赖远程代码,不加tag的话,每次update都会clone git,会有时间损耗,
34 | # 加了tag后首次下载会建本地缓存,后面就节省时间,缓存地址在 cd ~/Library/Caches/CocoaPods/Pods/External/
35 | # 缺点:Flutter.podspec还是本地的,需要指定相对路径,多个SDK的依赖方式不一致
36 | # pod 'Flutter', :podspec => '../flutter_build/Frameworks/Release/Flutter.podspec'
37 | # pod 'FlutterAppSDK', :git => 'http://gitlab.private.cn/flutter/flutter_app_sdk.git', :tag => '1.0.1'
38 | # pod 'FlutterPluginSDK', :git => 'http://gitlab.private.cn/flutter/flutter_plugin_sdk.git', :tag => '1.0.1'
39 |
40 |
41 | # 0x05:可行,podspec 和 framework都在同一个仓库,同时给Flutter/App/Plugin建立了3个不同的库
42 | # 缺点 Flutter.framework文件太大,没有压缩,可能有480M,造成整个git文件较大,首次clone非常耗时
43 | # pod 'Flutter', :git => 'http://gitlab.private.cn/flutter/flutter_sdk.git', :tag => '1.0.3'
44 | # pod 'FlutterAppSDK', :git => 'http://gitlab.private.cn/flutter/flutter_app_sdk.git', :tag => '1.0.1'
45 | # pod 'FlutterPluginSDK', :git => 'http://gitlab.private.cn/flutter/flutter_plugin_sdk.git', :tag => '1.0.1'
46 |
47 | # 0x06:可行,全部经本地podspec(另一个仓库flutter_module_sdk_podspec)转远程zip依赖,因为都是zip文件,首次下载比完成git依赖要快
48 | # 缺点:本地依赖的podspec都放在另一个git仓库,指向的还是本地的相对地址,而且update之前还要拉取更新另一个git
49 | # pod 'Flutter', :podspec => './../../flutter_module_sdk_podspec/Flutter.podspec'
50 | # pod 'FlutterAppSDK', :podspec => './../../flutter_module_sdk_podspec/FlutterAppSDK.podspec'
51 | # pod 'FlutterPluginSDK', :podspec => './../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec'
52 |
53 |
54 | # 0x07:可行,全部经本地podspec(另一个仓库flutter_module_sdk_podspec)转远程git依赖
55 | # 缺点:本地依赖的podspec都放在另一个git仓库,指向的还是本地的相对地址,而且update之前还要拉取更新另一个git,且flutter所在仓库克隆很慢
56 | # pod 'Flutter', :podspec => './../../flutter_module_sdk_podspec/Flutter.podspec'
57 | # pod 'FlutterAppSDK', :podspec => './../../flutter_module_sdk_podspec/FlutterAppSDK.podspec'
58 | # pod 'FlutterPluginSDK', :podspec => './../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec'
59 |
60 |
61 | # 0x08:可行,全部经本地podspec(另一个仓库flutter_module_sdk_podspec)转远程zip&git混合依赖,但是
62 | # Flutter.framework文件大,选择依赖远程服务器的zip文件,其它framework文件小,选择git依赖;
63 | # 缺点:本地依赖的podspec都放在另一个git仓库,指向的还是本地的相对地址,而且update之前还要拉取更新另一个git
64 | pod 'Flutter', :podspec => './../../flutter_module_sdk_podspec/Flutter.podspec'
65 | pod 'FlutterAppSDK', :podspec => './../../flutter_module_sdk_podspec/FlutterAppSDK.podspec'
66 | pod 'FlutterPluginSDK', :podspec => './../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec'
67 |
68 |
69 | # 0x09:行不通 基于0x08的远程仓库做中转,而不是将0x08的远程拉到本地做中转,而且中转远程的文件有服务器的zip和私有git仓库2种方案;
70 | # pod update不会报错,但实际上并没有下载Flutter.framework、App.framework以及其它的framework文件,只是个空架子
71 | # pod 'Flutter', :git => 'http://gitlab.private.cn/flutter/flutter_module_sdk_podspec.git'
72 | # pod 'FlutterAppSDK', :git => 'http://gitlab.private.cn/flutter/flutter_module_sdk_podspec.git'
73 | # pod 'FlutterAppSDK', :git => 'http://gitlab.private.cn/flutter/flutter_module_sdk_podspec.git'
74 |
75 |
76 | # 0x0A:行不通,远程git的podspec,但是通过:http 指向服务器的zip文件
77 | # pod update不会报错,但实际上并没有下载Flutter.framework
78 | # pod 'Flutter', :git => 'http://gitlab.private.cn/flutter/flutter_module_sdk_podspec.git'
79 |
80 | # 0x0B:行不通,远程服务器上的podspec,通过:http 指向同服务器的zip文件
81 | # 会直接报错
82 | # pod 'Flutter', :podspec => 'http://ftp.private.com/flutter/Flutter.podspec'
83 |
84 |
85 |
86 | end
87 |
--------------------------------------------------------------------------------
/ios_module/Podfile.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - AppleDevices (1.0.0)
3 | - FDFullscreenPopGesture (1.1)
4 | - Flutter (2.0.300)
5 | - FlutterAppSDK (2.0.0.6)
6 | - FlutterPluginSDK (2.0.0.6)
7 | - JKRetractableGCDDelay (1.0.2)
8 | - Masonry (1.1.0)
9 |
10 | DEPENDENCIES:
11 | - AppleDevices
12 | - FDFullscreenPopGesture
13 | - Flutter (from `./../../flutter_module_sdk_podspec/Flutter.podspec`)
14 | - FlutterAppSDK (from `./../../flutter_module_sdk_podspec/FlutterAppSDK.podspec`)
15 | - FlutterPluginSDK (from `./../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec`)
16 | - JKRetractableGCDDelay
17 | - Masonry
18 |
19 | SPEC REPOS:
20 | https://github.com/CocoaPods/Specs.git:
21 | - AppleDevices
22 | - FDFullscreenPopGesture
23 | - JKRetractableGCDDelay
24 | - Masonry
25 |
26 | EXTERNAL SOURCES:
27 | Flutter:
28 | :podspec: "./../../flutter_module_sdk_podspec/Flutter.podspec"
29 | FlutterAppSDK:
30 | :podspec: "./../../flutter_module_sdk_podspec/FlutterAppSDK.podspec"
31 | FlutterPluginSDK:
32 | :podspec: "./../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec"
33 |
34 | SPEC CHECKSUMS:
35 | AppleDevices: 437bb7c4e2dd769d3e73af704adfbb1a16143624
36 | FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
37 | Flutter: fcfd44cd2e0c1c7ed7b45046079dbf769116d228
38 | FlutterAppSDK: a8de2f0f9fbc76f6dcc7c65d970981d6738c1ea7
39 | FlutterPluginSDK: 6d14430edad5b13e804421800f6d497cfb035042
40 | JKRetractableGCDDelay: 95f9c04a3a16725aa3375274e08549f6f7363ba1
41 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
42 |
43 | PODFILE CHECKSUM: 201d306cad4a3fd68c883acffa0966ce22de13ee
44 |
45 | COCOAPODS: 1.10.1
46 |
--------------------------------------------------------------------------------
/ios_module/Pods/AppleDevices/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 溪枫狼
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/ios_module/Pods/AppleDevices/README.md:
--------------------------------------------------------------------------------
1 | [TOC]
2 |
3 | # AppleDevices
4 |
5 | 识别当前的苹果设备型号 -(Identify current Apple product model.)
6 |
7 | **Support**
8 |
9 | - [x] iPhone
10 | - [x] iPad
11 | - [x] Apple TV
12 | - [x] Apple Watch
13 | - [x] iPod touch
14 |
15 | ## 使用 & Usage
16 |
17 | #### NSString * currentDeviceName
18 |
19 | > * 识别当前设备型号
20 | > * Identify current Apple product model with machine model, eg: iPhone 11, iPad Pro (11-inch).
21 |
22 | ```C
23 | @property (class, nonatomic, copy, readonly) NSString * currentDeviceName;
24 |
25 | AppleDevice.currentDeviceName // iPhone 11
26 | ```
27 |
28 | #### BOOL isNotchDesignStyle
29 |
30 | > * 判断是不是刘海屏机型,支持模拟器
31 | > * iPhone device with a notch design style, the notch design style is started with the iPhone X, and Xcode simulator is supported.
32 |
33 |
34 | ```C
35 | @property (class, nonatomic, assign, readonly) BOOL isNotchDesignStyle;
36 |
37 | AppleDevice.isNotchDesignStyle // true
38 | ```
39 |
40 |
41 | ## 更新记录 & Change Log
42 |
43 | - 2021-4-29 `...`
44 |
45 | ## 已适配机型 & Supported Devices
46 |
47 | ### iPhone
48 |
49 |
50 | - [x] iPhone 12 Pro Max
51 | - [x] iPhone 12 Pro
52 | - [x] iPhone 12
53 | - [x] iPhone 12 mini
54 | - [x] iPhone SE (2nd)
55 | - [x] iPhone 11 Pro Max
56 | - [x] iPhone 11 Pro
57 | - [x] iPhone 11
58 | - [x] iPhone XR
59 | - [x] iPhone XS Max
60 | - [x] iPhone XS
61 | - [x] iPhone X
62 | - [x] iPhone 8 Plus
63 | - [x] iPhone 8
64 | - [x] iPhone 7 Plus
65 | - [x] iPhone 7
66 | - [x] iPhone SE
67 | - [x] iPhone 6s Plus
68 | - [x] iPhone 6s
69 | - [x] iPhone 6
70 | - [x] iPhone 6 Plus
71 | - [x] iPhone 5s
72 | - [x] iPhone 5c
73 | - [x] iPhone 5
74 | - [x] iPhone 4S
75 |
76 |
77 | ### iPad
78 |
79 |
80 | - [x] iPad Air (4th)
81 | - [x] iPad Air (3rd)
82 | - [x] iPad Air 2
83 | - [x] iPad Air
84 | - [x] iPad (8th)
85 | - [x] iPad (7th)
86 | - [x] iPad (6th)
87 | - [x] iPad (5th)
88 | - [x] iPad (4th)
89 | - [x] iPad (3rd)
90 | - [x] iPad 2
91 | - [x] iPad
92 | - [x] iPad Pro (12.9-inch) (5th)
93 | - [x] iPad Pro (11-inch) (3rd)
94 | - [x] iPad Pro (12.9-inch) (4th)
95 | - [x] iPad Pro (11-inch) (2nd)
96 | - [x] iPad Pro (12.9-inch) (3rd)
97 | - [x] iPad Pro (11-inch)
98 | - [x] iPad Pro (10.5-inch)
99 | - [x] iPad Pro (12.9-inch) (2nd)
100 | - [x] iPad Pro (12.9-inch)
101 | - [x] iPad Pro (9.7-inch)
102 | - [x] iPad Mini (5th)
103 | - [x] iPad Mini 4
104 | - [x] iPad Mini 3
105 | - [x] iPad Mini 2
106 | - [x] iPad Mini
107 |
108 |
109 | ### Apple TV
110 |
111 |
112 | - [x] Apple TV 4K (2nd)
113 | - [x] Apple TV 4K
114 | - [x] Apple TV (4th)
115 | - [x] Apple TV (3rd)
116 | - [x] Apple TV (2nd)
117 | - [x] Apple TV (1st)
118 |
119 |
120 | ### Apple Watch
121 |
122 |
123 | - [x] Apple Watch Series 6
124 | - [x] Apple Watch SE
125 | - [x] Apple Watch Series 5
126 | - [x] Apple Watch Series 4
127 | - [x] Apple Watch Series 3
128 | - [x] Apple Watch Series 2
129 | - [x] Apple Watch Series 1
130 | - [x] Apple Watch (1st)
131 |
132 |
133 |
134 | ### iPod touch
135 |
136 |
137 | - [x] iPod touch (7th)
138 | - [x] iPod touch (6th)
139 | - [x] iPod touch (5th)
140 | - [x] iPod touch (4th)
141 | - [x] iPod touch (3rd)
142 | - [x] iPod touch (2nd)
143 | - [x] iPod touch
144 |
145 | ## 参考 & Reference
146 |
147 | * [https://www.theiphonewiki.com/wiki/Models](https://www.theiphonewiki.com/wiki/Models)
148 | * [List of iOS and iPadOS devices](https://en.wikipedia.org/wiki/List_of_iOS_and_iPadOS_devices)
149 | * [Identify your iPhone model](https://support.apple.com/en-us/HT201296)
--------------------------------------------------------------------------------
/ios_module/Pods/AppleDevices/src/AppleDevice.h:
--------------------------------------------------------------------------------
1 | //
2 | // AppleDevice.h
3 | // AppleDevices
4 | //
5 | // Created by 溪枫狼 on 2021/4/29.
6 | //
7 |
8 | #import
9 |
10 | NS_ASSUME_NONNULL_BEGIN
11 |
12 | FOUNDATION_EXTERN UIWindow * KEY_WINDOW(void);
13 |
14 |
15 | /// identify current Apple product model with machine model.
16 | /// 识别当前的设备型号
17 | @interface AppleDevice : NSObject
18 |
19 | /// identify current Apple product model with machine model, eg: iPhone X, iPad Pro.
20 | /// 当前设备型号
21 | @property (class, nonatomic, copy, readonly) NSString * currentDeviceName;
22 |
23 |
24 | /// iPhone device with a notch design style, the notch design style is started with the iPhone X, and Xcode simulator is supported.
25 | /// 判断是不是刘海屏,支持模拟器
26 | @property (class, nonatomic, assign, readonly) BOOL isNotchDesignStyle;
27 |
28 | @end
29 |
30 | NS_ASSUME_NONNULL_END
31 |
--------------------------------------------------------------------------------
/ios_module/Pods/FDFullscreenPopGesture/FDFullscreenPopGesture/UINavigationController+FDFullscreenPopGesture.h:
--------------------------------------------------------------------------------
1 | // The MIT License (MIT)
2 | //
3 | // Copyright (c) 2015-2016 forkingdog ( https://github.com/forkingdog )
4 | //
5 | // Permission is hereby granted, free of charge, to any person obtaining a copy
6 | // of this software and associated documentation files (the "Software"), to deal
7 | // in the Software without restriction, including without limitation the rights
8 | // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | // copies of the Software, and to permit persons to whom the Software is
10 | // furnished to do so, subject to the following conditions:
11 | //
12 | // The above copyright notice and this permission notice shall be included in all
13 | // copies or substantial portions of the Software.
14 | //
15 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | // SOFTWARE.
22 |
23 | #import
24 |
25 | /// "UINavigation+FDFullscreenPopGesture" extends UINavigationController's swipe-
26 | /// to-pop behavior in iOS 7+ by supporting fullscreen pan gesture. Instead of
27 | /// screen edge, you can now swipe from any place on the screen and the onboard
28 | /// interactive pop transition works seamlessly.
29 | ///
30 | /// Adding the implementation file of this category to your target will
31 | /// automatically patch UINavigationController with this feature.
32 | @interface UINavigationController (FDFullscreenPopGesture)
33 |
34 | /// The gesture recognizer that actually handles interactive pop.
35 | @property (nonatomic, strong, readonly) UIPanGestureRecognizer *fd_fullscreenPopGestureRecognizer;
36 |
37 | /// A view controller is able to control navigation bar's appearance by itself,
38 | /// rather than a global way, checking "fd_prefersNavigationBarHidden" property.
39 | /// Default to YES, disable it if you don't want so.
40 | @property (nonatomic, assign) BOOL fd_viewControllerBasedNavigationBarAppearanceEnabled;
41 |
42 | @end
43 |
44 | /// Allows any view controller to disable interactive pop gesture, which might
45 | /// be necessary when the view controller itself handles pan gesture in some
46 | /// cases.
47 | @interface UIViewController (FDFullscreenPopGesture)
48 |
49 | /// Whether the interactive pop gesture is disabled when contained in a navigation
50 | /// stack.
51 | @property (nonatomic, assign) BOOL fd_interactivePopDisabled;
52 |
53 | /// Indicate this view controller prefers its navigation bar hidden or not,
54 | /// checked when view controller based navigation bar's appearance is enabled.
55 | /// Default to NO, bars are more likely to show.
56 | @property (nonatomic, assign) BOOL fd_prefersNavigationBarHidden;
57 |
58 | @end
59 |
--------------------------------------------------------------------------------
/ios_module/Pods/FDFullscreenPopGesture/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/ios_module/Pods/FDFullscreenPopGesture/README.md:
--------------------------------------------------------------------------------
1 | # FDFullscreenPopGesture
2 | An UINavigationController's category to enable fullscreen pop gesture in an iOS7+ system style with AOP.
3 |
4 | # Overview
5 |
6 | 
7 |
8 | 这个扩展来自 @J_雨 同学的这个很天才的思路,他的文章地址:[http://www.jianshu.com/p/d39f7d22db6c](http://www.jianshu.com/p/d39f7d22db6c)
9 |
10 | # Usage
11 |
12 | **AOP**, just add 2 files and **no need** for any setups, all navigation controllers will be able to use fullscreen pop gesture automatically.
13 |
14 | To disable this pop gesture of a navigation controller:
15 |
16 | ``` objc
17 | navigationController.fd_fullscreenPopGestureRecognizer.enabled = NO;
18 | ```
19 |
20 | To disable this pop gesture of a view controller:
21 |
22 | ``` objc
23 | viewController.fd_interactivePopDisabled = YES;
24 | ```
25 |
26 | Require at least iOS **7.0**.
27 |
28 | # View Controller Based Navigation Bar Appearance
29 |
30 | It handles navigation bar transition properly when using fullscreen gesture to push or pop a view controller:
31 |
32 | - with bar -> without bar
33 | - without bar -> with bar
34 | - without bar -> without bar
35 |
36 | 
37 |
38 | This opmiziation is enabled by default, from now on you don't need to call **UINavigationController**'s `-setNavigationBarHidden:animated:` method, instead, use view controller's specific API to hide its bar:
39 |
40 | ``` objc
41 | - (void)viewDidLoad {
42 | [super viewDidLoad];
43 | self.fd_prefersNavigationBarHidden = NO;
44 | }
45 | ```
46 |
47 | And this property is **YES** by default.
48 |
49 | # Installation
50 |
51 | Use cocoapods
52 |
53 | ``` ruby
54 | pod 'FDFullscreenPopGesture', '1.1'
55 | ```
56 | # Release Notes
57 |
58 | **1.1** - View controller based navigation bar appearance and transition.
59 | **1.0** - Fullscreen pop gesture.
60 |
61 | # License
62 | MIT
63 |
--------------------------------------------------------------------------------
/ios_module/Pods/FlutterAppSDK/README.md:
--------------------------------------------------------------------------------
1 | # FlutterAppSDK
2 |
3 | Flutter编译产物 App.framework存储仓库
--------------------------------------------------------------------------------
/ios_module/Pods/FlutterPluginSDK/README.md:
--------------------------------------------------------------------------------
1 | # FlutterPluginSDK
2 |
3 | Flutter编译产物 FlutterPluginRegistrant.xcframework和其它第三方组件的源码存储仓库
--------------------------------------------------------------------------------
/ios_module/Pods/JKRetractableGCDDelay/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 溪枫狼
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/ios_module/Pods/JKRetractableGCDDelay/README.md:
--------------------------------------------------------------------------------
1 | # JKRetractableGCDDelay
2 | 可取消的GCD延迟操作,基于[Dispatch-Cancel](
3 | https://github.com/Spaceman-Labs/Dispatch-Cancel)
4 |
5 |
6 | ### CocoaPods
7 |
8 | ```C
9 | source 'https://github.com/CocoaPods/Specs.git'
10 |
11 | pod 'JKRetractableGCDDelay', '~> 1.0.1'
12 | ```
13 |
14 |
15 | * 使用performSelector执行延迟任务,以及取消延迟任务。
16 |
17 | ```Object-C
18 |
19 | [self performSelector:@selector(jk_testSEL) withObject:nil afterDelay:5];
20 |
21 | [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(jk_testSEL) object:nil];
22 | // [NSObject cancelPreviousPerformRequestsWithTarget:self];
23 | ```
24 |
25 | * 使用dispatch_after执行延迟任务,但是系统没有提供取消任务的API,而dispatch_after可能会强引用外部对象,导致对象延迟释放,出现奇奇怪怪的问题。不过[Dispatch-Cancel](
26 | https://github.com/Spaceman-Labs/Dispatch-Cancel)恰好解决了这个问题,有兴趣的可以看看源码。JKRetractableGCDDelay基于这个框架封装,提供了3种方法执行延迟任务。
27 |
28 |
29 | **调用函数**
30 |
31 | ```Object-C
32 |
33 | /// 外部需要强引用JKGCDDelayTaskBlock
34 | @property (nonatomic, copy) JKGCDDelayTaskBlock delayTaskBlock;
35 |
36 |
37 | __weak typeof(self) weakSelf = self;
38 | self.delayTaskBlock = JK_GCDDelayTaskBlock(5.0, ^{
39 | weakSelf.view.backgroundColor = [UIColor redColor];
40 | });
41 |
42 |
43 | JK_CancelGCDDelayedTask(self.delayTaskBlock);
44 | ```
45 |
46 | **每个对象在同一时段只能执行一个延迟任务**
47 |
48 | ```Object-C
49 | __weak typeof(self) weakSelf = self;
50 | [self jk_excuteDelayTask:5 inMainQueue:^{
51 | weakSelf.view.backgroundColor = [UIColor darkGrayColor];
52 | }];
53 |
54 |
55 | [self jk_cancelGCDDelayTask];
56 | ```
57 |
58 |
59 | **给每个任务绑定Key,根据对应的Key取消任务**
60 |
61 | ```Object-C
62 | __weak typeof(self) weakSelf = self;
63 | [self jk_excuteDelayTaskWithKey:"key" delayInSeconds:5 inMainQueue:^{
64 | weakSelf.view.backgroundColor = [UIColor blueColor];
65 | }];
66 |
67 |
68 | [self jk_cancelGCDDelayTaskForKey:"key"];
69 | ```
70 |
71 |
--------------------------------------------------------------------------------
/ios_module/Pods/JKRetractableGCDDelay/src/NSObject+GCDDelayTask.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSObject+GCDDelayTask.h
3 | // JKAutoReleaseObject
4 | //
5 | // Created by 蒋鹏 on 17/1/9.
6 | // Copyright © 2017年 溪枫狼. All rights reserved.
7 | // 参考:https://github.com/Spaceman-Labs/Dispatch-Cancel
8 | //
9 | // 基于GCD定时器封装,延时任务能随时取消,并且立刻释放相应的Block内存。
10 | // 1.0.0:基于Runtime将delaytaskBlock关联在self上,在主线程延迟及回调,但是在[self dealloc]中不能通过runtime取出block导致取消失败
11 | // 1.0.1:delaytaskBlock不再关联在self上,而是由全局的JKGCDDelayTaskDict管理,默认以NSStringFromClass(self.class)做block的key,在全局队列延迟,主线程回调
12 |
13 |
14 |
15 | #import
16 | #import
17 |
18 |
19 | typedef void(^JKGCDDelayTaskBlock)(BOOL cancel);
20 |
21 | @interface NSObject (GCDDelayTask)
22 |
23 |
24 |
25 | #pragma mark - 通用函数
26 |
27 |
28 | /**
29 | 开始延时任务
30 |
31 | @param delayInSeconds 延时
32 | @param block 延时任务Block
33 | @return JKGCDDelayTaskBlock,通过JK_CancelGCDDelayedTask()取消延时任务。
34 | */
35 | FOUNDATION_EXPORT JKGCDDelayTaskBlock JK_GCDDelayTaskBlock(CGFloat delayInSeconds, dispatch_block_t block);
36 |
37 |
38 |
39 | /**
40 | 取消延时任务
41 |
42 | @param delayedHandle JKGCDDelayTaskBlock
43 | */
44 | FOUNDATION_EXPORT void JK_CancelGCDDelayedTask(JKGCDDelayTaskBlock delayedHandle);
45 |
46 |
47 |
48 |
49 |
50 | #pragma mark - 通用实例方法
51 |
52 |
53 |
54 |
55 | /**
56 | 延时任务(单位:秒),主线程回调,取调用jk_cancelGCDDelayTaskForKey:nil 取消延迟
57 |
58 | @param delayInSeconds 延时时间戳
59 | @param block 延时执行的Block,如果取消延迟任务则不调用,并且立刻释放内存。
60 | */
61 | - (void)jk_excuteDelayTask:(CGFloat)delayInSeconds
62 | inMainQueue:(dispatch_block_t)block;
63 |
64 |
65 |
66 |
67 | /**
68 | 取消延时任务,等效[self jk_cancelGCDDelayTaskForKey:nil],对应延时方法:jk_excuteDelayTask:(CGFloat)delayInSeconds
69 | inMainQueue:(dispatch_block_t)block
70 | *
71 | */
72 | - (void)jk_cancelGCDDelayTask;
73 |
74 |
75 |
76 | #pragma mark - 特定KEY延时任务
77 |
78 |
79 | /**
80 | 延时任务(单位:秒),主线程回调,取调用jk_cancelGCDDelayTaskForKey:key 取消延迟
81 |
82 | @param key 每个Block对应一个key,作为唯一标识
83 | @param delayInSeconds 延时
84 | @param block 延时执行的Block,如果取消延时任务则不调用,并且立刻释放内存。
85 | */
86 | - (void)jk_excuteDelayTaskWithKey:(const char *)key
87 | delayInSeconds:(CGFloat)delayInSeconds
88 | inMainQueue:(dispatch_block_t)block;
89 |
90 |
91 |
92 | /**
93 | 取消延迟任务,并释放对应的延迟Block
94 |
95 | @param key \
96 | * 如果key == nil,对应延时方法:jk_excuteDelayTask:(CGFloat)delayInSeconds
97 | inMainQueue:(dispatch_block_t)block;
98 | *
99 | * 如果key != nil,对应延时方法:jk_excuteDelayTaskWithKey:(const void *)key
100 | delayInSeconds:(CGFloat)delayInSeconds
101 | inMainQueue:(dispatch_block_t)block
102 | */
103 | - (void)jk_cancelGCDDelayTaskForKey:(const char *)key;
104 |
105 |
106 |
107 | @end
108 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/App.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "App",
3 | "version": "2.2.100",
4 | "summary": "Flutter App Framework",
5 | "description": "Flutter is Google’s UI toolkit for building beautiful",
6 | "homepage": "https://flutter.dev",
7 | "license": {
8 | "type": "MIT",
9 | "text": "Copyright 2014 The Flutter Authors. All rights reserved.\n"
10 | },
11 | "authors": {
12 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
13 | },
14 | "source": {
15 | "path": "."
16 | },
17 | "documentation_url": "https://flutter.dev/docs",
18 | "platforms": {
19 | "ios": "8.0"
20 | },
21 | "vendored_frameworks": "App.xcframework"
22 | }
23 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/Flutter.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Flutter",
3 | "version": "2.0.300",
4 | "summary": "Flutter Engine Framework",
5 | "description": "Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.\nThis pod vends the iOS Flutter engine framework. It is compatible with application frameworks created with this version of the engine and tools.\nThe pod version matches Flutter version major.minor.(patch * 100) + hotfix.",
6 | "homepage": "https://flutter.dev",
7 | "license": {
8 | "type": "MIT",
9 | "text": "Copyright 2014 The Flutter Authors. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without modification,\nare permitted provided that the following conditions are met:\n\n * Redistributions of source code must retain the above copyright\n notice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\n copyright notice, this list of conditions and the following\n disclaimer in the documentation and/or other materials provided\n with the distribution.\n * Neither the name of Google Inc. nor the names of its\n contributors may be used to endorse or promote products derived\n from this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR\nANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\nANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n"
10 | },
11 | "authors": {
12 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
13 | },
14 | "source": {
15 | "http": "https://storage.flutter-io.cn/flutter_infra/flutter/3459eb24361807fb186953a864cf890fa8e9d26a/ios-release/artifacts.zip"
16 | },
17 | "documentation_url": "https://flutter.dev/docs",
18 | "platforms": {
19 | "ios": "8.0"
20 | },
21 | "vendored_frameworks": "Flutter.xcframework"
22 | }
23 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/FlutterAppSDK.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "FlutterAppSDK",
3 | "version": "2.0.0.6",
4 | "summary": "Flutter App SDK",
5 | "description": "SDK整合了FlutterModule编译后的产物",
6 | "homepage": "https://github.com/XiFengLang/JKFlutter",
7 | "license": {
8 | "type": "MIT",
9 | "text": "Copyright 2021 The Flutter Authors. All rights reserved.\n"
10 | },
11 | "authors": {
12 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
13 | },
14 | "source": {
15 | "git": "http://gitlab.mvmtv.cn/flutter/flutter_app_sdk.git",
16 | "tag": "2.0.0.6"
17 | },
18 | "documentation_url": "https://flutter.dev/docs",
19 | "platforms": {
20 | "ios": "8.0"
21 | },
22 | "requires_arc": true,
23 | "vendored_frameworks": "*.xcframework"
24 | }
25 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/FlutterPluginRegistrant.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "FlutterPluginRegistrant",
3 | "version": "0.0.1",
4 | "summary": "Registers plugins with your flutter app",
5 | "description": "Depends on all your plugins, and provides a function to register them.",
6 | "homepage": "https://flutter.dev",
7 | "license": {
8 | "type": "BSD"
9 | },
10 | "authors": {
11 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
12 | },
13 | "platforms": {
14 | "ios": "9.0"
15 | },
16 | "source_files": [
17 | "Classes",
18 | "Classes/**/*.{h,m}"
19 | ],
20 | "source": {
21 | "path": "."
22 | },
23 | "public_header_files": "./Classes/**/*.h",
24 | "static_framework": true,
25 | "pod_target_xcconfig": {
26 | "DEFINES_MODULE": "YES"
27 | },
28 | "dependencies": {
29 | "Flutter": [
30 |
31 | ],
32 | "flutter_boost": [
33 |
34 | ],
35 | "package_info_plus": [
36 |
37 | ],
38 | "sentry_flutter": [
39 |
40 | ]
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/FlutterPluginSDK.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "FlutterPluginSDK",
3 | "version": "2.0.0.6",
4 | "summary": "Flutter Module SDK",
5 | "description": "SDK整合了FlutterModule编译后的产物",
6 | "homepage": "https://github.com/XiFengLang/JKFlutter",
7 | "license": {
8 | "type": "MIT",
9 | "text": "Copyright 2021 The Flutter Authors. All rights reserved.\n"
10 | },
11 | "authors": {
12 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
13 | },
14 | "source": {
15 | "git": "http://gitlab.mvmtv.cn/flutter/flutter_module_sdk.git",
16 | "tag": "2.0.0.6"
17 | },
18 | "documentation_url": "https://flutter.dev/docs",
19 | "platforms": {
20 | "ios": "8.0"
21 | },
22 | "requires_arc": true,
23 | "vendored_frameworks": "*.xcframework"
24 | }
25 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/PodSpecs.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "PodSpecs",
3 | "version": "1.0.0",
4 | "summary": "Flutter Engine Framework",
5 | "description": "podspec文件汇总仓库",
6 | "homepage": "https://flutter.dev",
7 | "authors": {
8 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
9 | },
10 | "source": {
11 | "git": "https://github.com/XiFengLang/podspecs.git",
12 | "tag": "1.0.0"
13 | },
14 | "documentation_url": "https://flutter.dev/docs",
15 | "platforms": {
16 | "ios": "8.0"
17 | },
18 | "source_files": "*.podspec"
19 | }
20 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/flutter_boost.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flutter_boost",
3 | "version": "0.0.2",
4 | "summary": "A new Flutter plugin make flutter better to use!",
5 | "description": "A new Flutter plugin make flutter better to use!",
6 | "homepage": "http://example.com",
7 | "license": {
8 | "file": "../LICENSE.md"
9 | },
10 | "authors": {
11 | "Alibaba Xianyu": "email@example.com"
12 | },
13 | "source": {
14 | "path": "."
15 | },
16 | "source_files": "Classes/**/*.{h,m,mm}",
17 | "public_header_files": [
18 | "Classes/FlutterBoost.h",
19 | "Classes/FlutterBoostDelegate.h",
20 | "Classes/FlutterBoostPlugin.h",
21 | "Classes/container/FBFlutterViewContainer.h",
22 | "Classes/container/FBFlutterContainer.h",
23 | "Classes/FlutterBoostOptions.h",
24 | "Classes/messages.h"
25 | ],
26 | "dependencies": {
27 | "Flutter": [
28 |
29 | ]
30 | },
31 | "libraries": "c++",
32 | "xcconfig": {
33 | "CLANG_CXX_LANGUAGE_STANDARD": "c++11",
34 | "CLANG_CXX_LIBRARY": "libc++"
35 | },
36 | "platforms": {
37 | "ios": "8.0"
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/flutter_module.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "flutter_module",
3 | "version": "0.0.1",
4 | "summary": "Flutter module",
5 | "description": "Flutter module - flutter_module",
6 | "homepage": "https://flutter.dev",
7 | "license": {
8 | "type": "BSD"
9 | },
10 | "authors": {
11 | "Flutter Dev Team": "flutter-dev@googlegroups.com"
12 | },
13 | "source": {
14 | "path": "."
15 | },
16 | "platforms": {
17 | "ios": "9.0"
18 | },
19 | "vendored_frameworks": "App.framework",
20 | "dependencies": {
21 | "Flutter": [
22 |
23 | ]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/package_info_plus.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "package_info_plus",
3 | "version": "0.4.5",
4 | "summary": "Flutter Package Info",
5 | "description": "This Flutter plugin provides an API for querying information about an application package.\nDownloaded by pub (not CocoaPods).",
6 | "homepage": "https://github.com/fluttercommunity/package_info_plus",
7 | "license": {
8 | "file": "../LICENSE"
9 | },
10 | "authors": {
11 | "Flutter Community": "authors@fluttercommunity.dev"
12 | },
13 | "source": {
14 | "path": "."
15 | },
16 | "source_files": "Classes/**/*",
17 | "public_header_files": "Classes/**/*.h",
18 | "dependencies": {
19 | "Flutter": [
20 |
21 | ]
22 | },
23 | "platforms": {
24 | "ios": "8.0"
25 | },
26 | "pod_target_xcconfig": {
27 | "DEFINES_MODULE": "YES",
28 | "VALID_ARCHS[sdk=iphonesimulator*]": "x86_64"
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ios_module/Pods/Local Podspecs/sentry_flutter.podspec.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "sentry_flutter",
3 | "version": "0.0.1",
4 | "summary": "Sentry SDK for Flutter.",
5 | "description": "Sentry SDK for Flutter with support to native through sentry-cocoa.",
6 | "homepage": "https://sentry.io",
7 | "license": {
8 | "file": "../LICENSE"
9 | },
10 | "authors": "Sentry",
11 | "source": {
12 | "git": "https://github.com/getsentry/sentry-dart.git",
13 | "tag": "0.0.1"
14 | },
15 | "source_files": "Classes/**/*",
16 | "public_header_files": "Classes/**/*.h",
17 | "dependencies": {
18 | "Sentry": [
19 | "~> 7.1.3"
20 | ]
21 | },
22 | "ios": {
23 | "dependencies": {
24 | "Flutter": [
25 |
26 | ]
27 | },
28 | "pod_target_xcconfig": {
29 | "DEFINES_MODULE": "YES",
30 | "VALID_ARCHS[sdk=iphonesimulator*]": "x86_64"
31 | }
32 | },
33 | "osx": {
34 | "dependencies": {
35 | "FlutterMacOS": [
36 |
37 | ]
38 | },
39 | "pod_target_xcconfig": {
40 | "DEFINES_MODULE": "YES"
41 | }
42 | },
43 | "platforms": {
44 | "ios": "9.0",
45 | "osx": "10.11"
46 | },
47 | "swift_versions": "5.0",
48 | "swift_version": "5.0"
49 | }
50 |
--------------------------------------------------------------------------------
/ios_module/Pods/Manifest.lock:
--------------------------------------------------------------------------------
1 | PODS:
2 | - AppleDevices (1.0.0)
3 | - FDFullscreenPopGesture (1.1)
4 | - Flutter (2.0.300)
5 | - FlutterAppSDK (2.0.0.6)
6 | - FlutterPluginSDK (2.0.0.6)
7 | - JKRetractableGCDDelay (1.0.2)
8 | - Masonry (1.1.0)
9 |
10 | DEPENDENCIES:
11 | - AppleDevices
12 | - FDFullscreenPopGesture
13 | - Flutter (from `./../../flutter_module_sdk_podspec/Flutter.podspec`)
14 | - FlutterAppSDK (from `./../../flutter_module_sdk_podspec/FlutterAppSDK.podspec`)
15 | - FlutterPluginSDK (from `./../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec`)
16 | - JKRetractableGCDDelay
17 | - Masonry
18 |
19 | SPEC REPOS:
20 | https://github.com/CocoaPods/Specs.git:
21 | - AppleDevices
22 | - FDFullscreenPopGesture
23 | - JKRetractableGCDDelay
24 | - Masonry
25 |
26 | EXTERNAL SOURCES:
27 | Flutter:
28 | :podspec: "./../../flutter_module_sdk_podspec/Flutter.podspec"
29 | FlutterAppSDK:
30 | :podspec: "./../../flutter_module_sdk_podspec/FlutterAppSDK.podspec"
31 | FlutterPluginSDK:
32 | :podspec: "./../../flutter_module_sdk_podspec/FlutterPluginSDK.podspec"
33 |
34 | SPEC CHECKSUMS:
35 | AppleDevices: 437bb7c4e2dd769d3e73af704adfbb1a16143624
36 | FDFullscreenPopGesture: a8a620179e3d9c40e8e00256dcee1c1a27c6d0f0
37 | Flutter: fcfd44cd2e0c1c7ed7b45046079dbf769116d228
38 | FlutterAppSDK: a8de2f0f9fbc76f6dcc7c65d970981d6738c1ea7
39 | FlutterPluginSDK: 6d14430edad5b13e804421800f6d497cfb035042
40 | JKRetractableGCDDelay: 95f9c04a3a16725aa3375274e08549f6f7363ba1
41 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201
42 |
43 | PODFILE CHECKSUM: 201d306cad4a3fd68c883acffa0966ce22de13ee
44 |
45 | COCOAPODS: 1.10.1
46 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASCompositeConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASCompositeConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASConstraint.h"
10 | #import "MASUtilities.h"
11 |
12 | /**
13 | * A group of MASConstraint objects
14 | */
15 | @interface MASCompositeConstraint : MASConstraint
16 |
17 | /**
18 | * Creates a composite with a predefined array of children
19 | *
20 | * @param children child MASConstraints
21 | *
22 | * @return a composite constraint
23 | */
24 | - (id)initWithChildren:(NSArray *)children;
25 |
26 | @end
27 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASConstraint+Private.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASConstraint+Private.h
3 | // Masonry
4 | //
5 | // Created by Nick Tymchenko on 29/04/14.
6 | // Copyright (c) 2014 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASConstraint.h"
10 |
11 | @protocol MASConstraintDelegate;
12 |
13 |
14 | @interface MASConstraint ()
15 |
16 | /**
17 | * Whether or not to check for an existing constraint instead of adding constraint
18 | */
19 | @property (nonatomic, assign) BOOL updateExisting;
20 |
21 | /**
22 | * Usually MASConstraintMaker but could be a parent MASConstraint
23 | */
24 | @property (nonatomic, weak) id delegate;
25 |
26 | /**
27 | * Based on a provided value type, is equal to calling:
28 | * NSNumber - setOffset:
29 | * NSValue with CGPoint - setPointOffset:
30 | * NSValue with CGSize - setSizeOffset:
31 | * NSValue with MASEdgeInsets - setInsets:
32 | */
33 | - (void)setLayoutConstantWithValue:(NSValue *)value;
34 |
35 | @end
36 |
37 |
38 | @interface MASConstraint (Abstract)
39 |
40 | /**
41 | * Sets the constraint relation to given NSLayoutRelation
42 | * returns a block which accepts one of the following:
43 | * MASViewAttribute, UIView, NSValue, NSArray
44 | * see readme for more details.
45 | */
46 | - (MASConstraint * (^)(id, NSLayoutRelation))equalToWithRelation;
47 |
48 | /**
49 | * Override to set a custom chaining behaviour
50 | */
51 | - (MASConstraint *)addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
52 |
53 | @end
54 |
55 |
56 | @protocol MASConstraintDelegate
57 |
58 | /**
59 | * Notifies the delegate when the constraint needs to be replaced with another constraint. For example
60 | * A MASViewConstraint may turn into a MASCompositeConstraint when an array is passed to one of the equality blocks
61 | */
62 | - (void)constraint:(MASConstraint *)constraint shouldBeReplacedWithConstraint:(MASConstraint *)replacementConstraint;
63 |
64 | - (MASConstraint *)constraint:(MASConstraint *)constraint addConstraintWithLayoutAttribute:(NSLayoutAttribute)layoutAttribute;
65 |
66 | @end
67 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASLayoutConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * When you are debugging or printing the constraints attached to a view this subclass
13 | * makes it easier to identify which constraints have been created via Masonry
14 | */
15 | @interface MASLayoutConstraint : NSLayoutConstraint
16 |
17 | /**
18 | * a key to associate with this constraint
19 | */
20 | @property (nonatomic, strong) id mas_key;
21 |
22 | @end
23 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASLayoutConstraint.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASLayoutConstraint.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASLayoutConstraint.h"
10 |
11 | @implementation MASLayoutConstraint
12 |
13 | @end
14 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASViewAttribute.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASViewAttribute.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * An immutable tuple which stores the view and the related NSLayoutAttribute.
13 | * Describes part of either the left or right hand side of a constraint equation
14 | */
15 | @interface MASViewAttribute : NSObject
16 |
17 | /**
18 | * The view which the reciever relates to. Can be nil if item is not a view.
19 | */
20 | @property (nonatomic, weak, readonly) MAS_VIEW *view;
21 |
22 | /**
23 | * The item which the reciever relates to.
24 | */
25 | @property (nonatomic, weak, readonly) id item;
26 |
27 | /**
28 | * The attribute which the reciever relates to
29 | */
30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute;
31 |
32 | /**
33 | * Convenience initializer.
34 | */
35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute;
36 |
37 | /**
38 | * The designated initializer.
39 | */
40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute;
41 |
42 | /**
43 | * Determine whether the layoutAttribute is a size attribute
44 | *
45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight
46 | */
47 | - (BOOL)isSizeAttribute;
48 |
49 | @end
50 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASViewAttribute.m:
--------------------------------------------------------------------------------
1 | //
2 | // MASViewAttribute.m
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 21/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASViewAttribute.h"
10 |
11 | @implementation MASViewAttribute
12 |
13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute {
14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute];
15 | return self;
16 | }
17 |
18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute {
19 | self = [super init];
20 | if (!self) return nil;
21 |
22 | _view = view;
23 | _item = item;
24 | _layoutAttribute = layoutAttribute;
25 |
26 | return self;
27 | }
28 |
29 | - (BOOL)isSizeAttribute {
30 | return self.layoutAttribute == NSLayoutAttributeWidth
31 | || self.layoutAttribute == NSLayoutAttributeHeight;
32 | }
33 |
34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute {
35 | if ([viewAttribute isKindOfClass:self.class]) {
36 | return self.view == viewAttribute.view
37 | && self.layoutAttribute == viewAttribute.layoutAttribute;
38 | }
39 | return [super isEqual:viewAttribute];
40 | }
41 |
42 | - (NSUInteger)hash {
43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute;
44 | }
45 |
46 | @end
47 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/MASViewConstraint.h:
--------------------------------------------------------------------------------
1 | //
2 | // MASViewConstraint.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import "MASViewAttribute.h"
10 | #import "MASConstraint.h"
11 | #import "MASLayoutConstraint.h"
12 | #import "MASUtilities.h"
13 |
14 | /**
15 | * A single constraint.
16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view
17 | */
18 | @interface MASViewConstraint : MASConstraint
19 |
20 | /**
21 | * First item/view and first attribute of the NSLayoutConstraint
22 | */
23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute;
24 |
25 | /**
26 | * Second item/view and second attribute of the NSLayoutConstraint
27 | */
28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute;
29 |
30 | /**
31 | * initialises the MASViewConstraint with the first part of the equation
32 | *
33 | * @param firstViewAttribute view.mas_left, view.mas_width etc.
34 | *
35 | * @return a new view constraint
36 | */
37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute;
38 |
39 | /**
40 | * Returns all MASViewConstraints installed with this view as a first item.
41 | *
42 | * @param view A view to retrieve constraints for.
43 | *
44 | * @return An array of MASViewConstraints.
45 | */
46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view;
47 |
48 | @end
49 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/Masonry.h:
--------------------------------------------------------------------------------
1 | //
2 | // Masonry.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 20/07/13.
6 | // Copyright (c) 2013 cloudling. All rights reserved.
7 | //
8 |
9 | #import
10 |
11 | //! Project version number for Masonry.
12 | FOUNDATION_EXPORT double MasonryVersionNumber;
13 |
14 | //! Project version string for Masonry.
15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
16 |
17 | #import "MASUtilities.h"
18 | #import "View+MASAdditions.h"
19 | #import "View+MASShorthandAdditions.h"
20 | #import "ViewController+MASAdditions.h"
21 | #import "NSArray+MASAdditions.h"
22 | #import "NSArray+MASShorthandAdditions.h"
23 | #import "MASConstraint.h"
24 | #import "MASCompositeConstraint.h"
25 | #import "MASViewAttribute.h"
26 | #import "MASViewConstraint.h"
27 | #import "MASConstraintMaker.h"
28 | #import "MASLayoutConstraint.h"
29 | #import "NSLayoutConstraint+MASDebugAdditions.h"
30 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/NSArray+MASAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+MASAdditions.h
3 | //
4 | //
5 | // Created by Daniel Hammond on 11/26/13.
6 | //
7 | //
8 |
9 | #import "MASUtilities.h"
10 | #import "MASConstraintMaker.h"
11 | #import "MASViewAttribute.h"
12 |
13 | typedef NS_ENUM(NSUInteger, MASAxisType) {
14 | MASAxisTypeHorizontal,
15 | MASAxisTypeVertical
16 | };
17 |
18 | @interface NSArray (MASAdditions)
19 |
20 | /**
21 | * Creates a MASConstraintMaker with each view in the callee.
22 | * Any constraints defined are added to the view or the appropriate superview once the block has finished executing on each view
23 | *
24 | * @param block scope within which you can build up the constraints which you wish to apply to each view.
25 | *
26 | * @return Array of created MASConstraints
27 | */
28 | - (NSArray *)mas_makeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
29 |
30 | /**
31 | * Creates a MASConstraintMaker with each view in the callee.
32 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
33 | * If an existing constraint exists then it will be updated instead.
34 | *
35 | * @param block scope within which you can build up the constraints which you wish to apply to each view.
36 | *
37 | * @return Array of created/updated MASConstraints
38 | */
39 | - (NSArray *)mas_updateConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
40 |
41 | /**
42 | * Creates a MASConstraintMaker with each view in the callee.
43 | * Any constraints defined are added to each view or the appropriate superview once the block has finished executing on each view.
44 | * All constraints previously installed for the views will be removed.
45 | *
46 | * @param block scope within which you can build up the constraints which you wish to apply to each view.
47 | *
48 | * @return Array of created/updated MASConstraints
49 | */
50 | - (NSArray *)mas_remakeConstraints:(void (NS_NOESCAPE ^)(MASConstraintMaker *make))block;
51 |
52 | /**
53 | * distribute with fixed spacing
54 | *
55 | * @param axisType which axis to distribute items along
56 | * @param fixedSpacing the spacing between each item
57 | * @param leadSpacing the spacing before the first item and the container
58 | * @param tailSpacing the spacing after the last item and the container
59 | */
60 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedSpacing:(CGFloat)fixedSpacing leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
61 |
62 | /**
63 | * distribute with fixed item size
64 | *
65 | * @param axisType which axis to distribute items along
66 | * @param fixedItemLength the fixed length of each item
67 | * @param leadSpacing the spacing before the first item and the container
68 | * @param tailSpacing the spacing after the last item and the container
69 | */
70 | - (void)mas_distributeViewsAlongAxis:(MASAxisType)axisType withFixedItemLength:(CGFloat)fixedItemLength leadSpacing:(CGFloat)leadSpacing tailSpacing:(CGFloat)tailSpacing;
71 |
72 | @end
73 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSArray+MASShorthandAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 22/07/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "NSArray+MASAdditions.h"
10 |
11 | #ifdef MAS_SHORTHAND
12 |
13 | /**
14 | * Shorthand array additions without the 'mas_' prefixes,
15 | * only enabled if MAS_SHORTHAND is defined
16 | */
17 | @interface NSArray (MASShorthandAdditions)
18 |
19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block;
20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block;
21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block;
22 |
23 | @end
24 |
25 | @implementation NSArray (MASShorthandAdditions)
26 |
27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block {
28 | return [self mas_makeConstraints:block];
29 | }
30 |
31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block {
32 | return [self mas_updateConstraints:block];
33 | }
34 |
35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block {
36 | return [self mas_remakeConstraints:block];
37 | }
38 |
39 | @end
40 |
41 | #endif
42 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // NSLayoutConstraint+MASDebugAdditions.h
3 | // Masonry
4 | //
5 | // Created by Jonas Budelmann on 3/08/13.
6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved.
7 | //
8 |
9 | #import "MASUtilities.h"
10 |
11 | /**
12 | * makes debug and log output of NSLayoutConstraints more readable
13 | */
14 | @interface NSLayoutConstraint (MASDebugAdditions)
15 |
16 | @end
17 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/ViewController+MASAdditions.h:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MASAdditions.h
3 | // Masonry
4 | //
5 | // Created by Craig Siemens on 2015-06-23.
6 | //
7 | //
8 |
9 | #import "MASUtilities.h"
10 | #import "MASConstraintMaker.h"
11 | #import "MASViewAttribute.h"
12 |
13 | #ifdef MAS_VIEW_CONTROLLER
14 |
15 | @interface MAS_VIEW_CONTROLLER (MASAdditions)
16 |
17 | /**
18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute
19 | */
20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide;
21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide;
22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop;
23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom;
24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop;
25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom;
26 |
27 |
28 | @end
29 |
30 | #endif
31 |
--------------------------------------------------------------------------------
/ios_module/Pods/Masonry/Masonry/ViewController+MASAdditions.m:
--------------------------------------------------------------------------------
1 | //
2 | // UIViewController+MASAdditions.m
3 | // Masonry
4 | //
5 | // Created by Craig Siemens on 2015-06-23.
6 | //
7 | //
8 |
9 | #import "ViewController+MASAdditions.h"
10 |
11 | #ifdef MAS_VIEW_CONTROLLER
12 |
13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions)
14 |
15 | - (MASViewAttribute *)mas_topLayoutGuide {
16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
17 | }
18 | - (MASViewAttribute *)mas_topLayoutGuideTop {
19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop];
20 | }
21 | - (MASViewAttribute *)mas_topLayoutGuideBottom {
22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
23 | }
24 |
25 | - (MASViewAttribute *)mas_bottomLayoutGuide {
26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
27 | }
28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop {
29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop];
30 | }
31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom {
32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom];
33 | }
34 |
35 |
36 |
37 | @end
38 |
39 | #endif
40 |
--------------------------------------------------------------------------------
/ios_module/Pods/PodSpecs/Flutter.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'Flutter'
3 | s.version = '2.0.300' # 2.0.3
4 | s.summary = 'Flutter Engine Framework'
5 | s.description = <<-DESC
6 | Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.
7 | This pod vends the iOS Flutter engine framework. It is compatible with application frameworks created with this version of the engine and tools.
8 | The pod version matches Flutter version major.minor.(patch * 100) + hotfix.
9 | DESC
10 | s.homepage = 'https://flutter.dev'
11 | s.license = { :type => 'MIT', :text => <<-LICENSE
12 | Copyright 2014 The Flutter Authors. All rights reserved.
13 |
14 | Redistribution and use in source and binary forms, with or without modification,
15 | are permitted provided that the following conditions are met:
16 |
17 | * Redistributions of source code must retain the above copyright
18 | notice, this list of conditions and the following disclaimer.
19 | * Redistributions in binary form must reproduce the above
20 | copyright notice, this list of conditions and the following
21 | disclaimer in the documentation and/or other materials provided
22 | with the distribution.
23 | * Neither the name of Google Inc. nor the names of its
24 | contributors may be used to endorse or promote products derived
25 | from this software without specific prior written permission.
26 |
27 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
28 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
29 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
30 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
31 | ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
32 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
33 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
34 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 |
38 | LICENSE
39 | }
40 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
41 | s.source = { :http => 'https://storage.flutter-io.cn/flutter_infra/flutter/3459eb24361807fb186953a864cf890fa8e9d26a/ios-release/artifacts.zip' }
42 | s.documentation_url = 'https://flutter.dev/docs'
43 | s.platform = :ios, '8.0'
44 | s.vendored_frameworks = 'Flutter.xcframework'
45 | end
46 |
--------------------------------------------------------------------------------
/ios_module/Pods/PodSpecs/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 溪枫狼
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/ios_module/Pods/PodSpecs/PodSpecs.podspec:
--------------------------------------------------------------------------------
1 | Pod::Spec.new do |s|
2 | s.name = 'PodSpecs'
3 | s.version = '1.0.0'
4 | s.summary = 'Flutter Engine Framework'
5 | s.description = <<-DESC
6 | podspec文件汇总仓库
7 | DESC
8 | s.homepage = 'https://flutter.dev'
9 | s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' }
10 | s.source = { :git => 'https://github.com/XiFengLang/podspecs.git', :tag => "#{s.version}" }
11 | s.documentation_url = 'https://flutter.dev/docs'
12 | s.platform = :ios, '8.0'
13 | s.source_files = '*.podspec'
14 | end
15 |
--------------------------------------------------------------------------------
/ios_module/Pods/PodSpecs/README.md:
--------------------------------------------------------------------------------
1 | # podspecs
2 | podspecs 集合
3 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_AppleDevices : NSObject
3 | @end
4 | @implementation PodsDummy_AppleDevices
5 | @end
6 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "AppleDevice.h"
14 |
15 | FOUNDATION_EXPORT double AppleDevicesVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char AppleDevicesVersionString[];
17 |
18 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppleDevices
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices.modulemap:
--------------------------------------------------------------------------------
1 | framework module AppleDevices {
2 | umbrella header "AppleDevices-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/AppleDevices/AppleDevices.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/AppleDevices
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_FDFullscreenPopGesture : NSObject
3 | @end
4 | @implementation PodsDummy_FDFullscreenPopGesture
5 | @end
6 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "UINavigationController+FDFullscreenPopGesture.h"
14 |
15 | FOUNDATION_EXPORT double FDFullscreenPopGestureVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char FDFullscreenPopGestureVersionString[];
17 |
18 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FDFullscreenPopGesture
8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture.modulemap:
--------------------------------------------------------------------------------
1 | framework module FDFullscreenPopGesture {
2 | umbrella header "FDFullscreenPopGesture-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FDFullscreenPopGesture/FDFullscreenPopGesture.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | PODS_BUILD_DIR = ${BUILD_DIR}
5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
6 | PODS_ROOT = ${SRCROOT}
7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FDFullscreenPopGesture
8 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
9 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
10 | SKIP_INSTALL = YES
11 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
12 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Flutter/Flutter-xcframeworks-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Flutter/Flutter-xcframeworks.sh
2 | ${PODS_ROOT}/Flutter/Flutter.xcframework
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Flutter/Flutter-xcframeworks-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Flutter/Flutter.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Flutter
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Flutter
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Flutter/Flutter.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Flutter
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Flutter
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterAppSDK/FlutterAppSDK-xcframeworks-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/FlutterAppSDK/FlutterAppSDK-xcframeworks.sh
2 | ${PODS_ROOT}/FlutterAppSDK/App.xcframework
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterAppSDK/FlutterAppSDK-xcframeworks-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/App
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterAppSDK/FlutterAppSDK.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FlutterAppSDK
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FlutterAppSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/App"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FlutterAppSDK
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterAppSDK/FlutterAppSDK.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FlutterAppSDK
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FlutterAppSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/App"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FlutterAppSDK
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterPluginSDK/FlutterPluginSDK-xcframeworks-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/FlutterPluginSDK/FlutterPluginSDK-xcframeworks.sh
2 | ${PODS_ROOT}/FlutterPluginSDK/FlutterPluginRegistrant.xcframework
3 | ${PODS_ROOT}/FlutterPluginSDK/flutter_boost.xcframework
4 | ${PODS_ROOT}/FlutterPluginSDK/FMDB.xcframework
5 | ${PODS_ROOT}/FlutterPluginSDK/MMKV.xcframework
6 | ${PODS_ROOT}/FlutterPluginSDK/MMKVCore.xcframework
7 | ${PODS_ROOT}/FlutterPluginSDK/mmkv_flutter.xcframework
8 | ${PODS_ROOT}/FlutterPluginSDK/package_info_plus.xcframework
9 | ${PODS_ROOT}/FlutterPluginSDK/path_provider.xcframework
10 | ${PODS_ROOT}/FlutterPluginSDK/Sentry.xcframework
11 | ${PODS_ROOT}/FlutterPluginSDK/sentry_flutter.xcframework
12 | ${PODS_ROOT}/FlutterPluginSDK/shared_preferences.xcframework
13 | ${PODS_ROOT}/FlutterPluginSDK/sqflite.xcframework
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterPluginSDK/FlutterPluginSDK-xcframeworks-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/FlutterPluginRegistrant
2 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost
3 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB
4 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV
5 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore
6 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter
7 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus
8 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider
9 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry
10 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter
11 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences
12 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterPluginSDK/FlutterPluginSDK.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FlutterPluginSDK
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FlutterPluginSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FlutterPluginRegistrant" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry" "${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus" "${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FlutterPluginSDK
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/FlutterPluginSDK/FlutterPluginSDK.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FlutterPluginSDK
3 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/FlutterPluginSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FlutterPluginRegistrant" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry" "${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus" "${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite"
4 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/FlutterPluginSDK
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.2
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_JKRetractableGCDDelay : NSObject
3 | @end
4 | @implementation PodsDummy_JKRetractableGCDDelay
5 | @end
6 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "NSObject+GCDDelayTask.h"
14 |
15 | FOUNDATION_EXPORT double JKRetractableGCDDelayVersionNumber;
16 | FOUNDATION_EXPORT const unsigned char JKRetractableGCDDelayVersionString[];
17 |
18 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/JKRetractableGCDDelay
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay.modulemap:
--------------------------------------------------------------------------------
1 | framework module JKRetractableGCDDelay {
2 | umbrella header "JKRetractableGCDDelay-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/JKRetractableGCDDelay/JKRetractableGCDDelay.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/JKRetractableGCDDelay
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.1.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Masonry : NSObject
3 | @end
4 | @implementation PodsDummy_Masonry
5 | @end
6 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry-prefix.pch:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 | #import "MASCompositeConstraint.h"
14 | #import "MASConstraint+Private.h"
15 | #import "MASConstraint.h"
16 | #import "MASConstraintMaker.h"
17 | #import "MASLayoutConstraint.h"
18 | #import "Masonry.h"
19 | #import "MASUtilities.h"
20 | #import "MASViewAttribute.h"
21 | #import "MASViewConstraint.h"
22 | #import "NSArray+MASAdditions.h"
23 | #import "NSArray+MASShorthandAdditions.h"
24 | #import "NSLayoutConstraint+MASDebugAdditions.h"
25 | #import "View+MASAdditions.h"
26 | #import "View+MASShorthandAdditions.h"
27 | #import "ViewController+MASAdditions.h"
28 |
29 | FOUNDATION_EXPORT double MasonryVersionNumber;
30 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[];
31 |
32 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry.modulemap:
--------------------------------------------------------------------------------
1 | framework module Masonry {
2 | umbrella header "Masonry-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Masonry/Masonry.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | OTHER_LDFLAGS = $(inherited) -framework "Foundation" -framework "UIKit"
5 | PODS_BUILD_DIR = ${BUILD_DIR}
6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
7 | PODS_ROOT = ${SRCROOT}
8 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry
9 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
10 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier}
11 | SKIP_INSTALL = YES
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleExecutable
8 | ${EXECUTABLE_NAME}
9 | CFBundleIdentifier
10 | ${PRODUCT_BUNDLE_IDENTIFIER}
11 | CFBundleInfoDictionaryVersion
12 | 6.0
13 | CFBundleName
14 | ${PRODUCT_NAME}
15 | CFBundlePackageType
16 | FMWK
17 | CFBundleShortVersionString
18 | 1.0.0
19 | CFBundleSignature
20 | ????
21 | CFBundleVersion
22 | ${CURRENT_PROJECT_VERSION}
23 | NSPrincipalClass
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-dummy.m:
--------------------------------------------------------------------------------
1 | #import
2 | @interface PodsDummy_Pods_FlutterBoostPro : NSObject
3 | @end
4 | @implementation PodsDummy_Pods_FlutterBoostPro
5 | @end
6 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks-Debug-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AppleDevices/AppleDevices.framework
3 | ${BUILT_PRODUCTS_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework
4 | ${BUILT_PRODUCTS_DIR}/JKRetractableGCDDelay/JKRetractableGCDDelay.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter/Flutter.framework/Flutter
7 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/App/App.framework/App
8 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost/flutter_boost.framework/flutter_boost
9 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB/FMDB.framework/FMDB
10 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV/MMKV.framework/MMKV
11 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore/MMKVCore.framework/MMKVCore
12 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter/mmkv_flutter.framework/mmkv_flutter
13 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus/package_info_plus.framework/package_info_plus
14 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider/path_provider.framework/path_provider
15 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry/Sentry.framework/Sentry
16 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter/sentry_flutter.framework/sentry_flutter
17 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences/shared_preferences.framework/shared_preferences
18 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite/sqflite.framework/sqflite
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks-Debug-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppleDevices.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FDFullscreenPopGesture.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JKRetractableGCDDelay.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework
6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/App.framework
7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_boost.framework
8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMKV.framework
10 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMKVCore.framework
11 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mmkv_flutter.framework
12 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework
13 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework
14 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework
15 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework
16 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework
17 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks-Release-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AppleDevices/AppleDevices.framework
3 | ${BUILT_PRODUCTS_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework
4 | ${BUILT_PRODUCTS_DIR}/JKRetractableGCDDelay/JKRetractableGCDDelay.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter/Flutter.framework/Flutter
7 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/App/App.framework/App
8 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost/flutter_boost.framework/flutter_boost
9 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB/FMDB.framework/FMDB
10 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV/MMKV.framework/MMKV
11 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore/MMKVCore.framework/MMKVCore
12 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter/mmkv_flutter.framework/mmkv_flutter
13 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus/package_info_plus.framework/package_info_plus
14 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider/path_provider.framework/path_provider
15 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry/Sentry.framework/Sentry
16 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter/sentry_flutter.framework/sentry_flutter
17 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences/shared_preferences.framework/shared_preferences
18 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite/sqflite.framework/sqflite
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks-Release-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppleDevices.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FDFullscreenPopGesture.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JKRetractableGCDDelay.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework
6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/App.framework
7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_boost.framework
8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMKV.framework
10 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMKVCore.framework
11 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mmkv_flutter.framework
12 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework
13 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework
14 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework
15 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework
16 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework
17 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks-Test-input-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${PODS_ROOT}/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks.sh
2 | ${BUILT_PRODUCTS_DIR}/AppleDevices/AppleDevices.framework
3 | ${BUILT_PRODUCTS_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework
4 | ${BUILT_PRODUCTS_DIR}/JKRetractableGCDDelay/JKRetractableGCDDelay.framework
5 | ${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework
6 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter/Flutter.framework/Flutter
7 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/App/App.framework/App
8 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost/flutter_boost.framework/flutter_boost
9 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB/FMDB.framework/FMDB
10 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV/MMKV.framework/MMKV
11 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore/MMKVCore.framework/MMKVCore
12 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter/mmkv_flutter.framework/mmkv_flutter
13 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus/package_info_plus.framework/package_info_plus
14 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider/path_provider.framework/path_provider
15 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry/Sentry.framework/Sentry
16 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter/sentry_flutter.framework/sentry_flutter
17 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences/shared_preferences.framework/shared_preferences
18 | ${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite/sqflite.framework/sqflite
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-frameworks-Test-output-files.xcfilelist:
--------------------------------------------------------------------------------
1 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AppleDevices.framework
2 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FDFullscreenPopGesture.framework
3 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JKRetractableGCDDelay.framework
4 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework
5 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Flutter.framework
6 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/App.framework
7 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/flutter_boost.framework
8 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FMDB.framework
9 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMKV.framework
10 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MMKVCore.framework
11 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/mmkv_flutter.framework
12 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/package_info_plus.framework
13 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/path_provider.framework
14 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sentry.framework
15 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sentry_flutter.framework
16 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/shared_preferences.framework
17 | ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/sqflite.framework
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro-umbrella.h:
--------------------------------------------------------------------------------
1 | #ifdef __OBJC__
2 | #import
3 | #else
4 | #ifndef FOUNDATION_EXPORT
5 | #if defined(__cplusplus)
6 | #define FOUNDATION_EXPORT extern "C"
7 | #else
8 | #define FOUNDATION_EXPORT extern
9 | #endif
10 | #endif
11 | #endif
12 |
13 |
14 | FOUNDATION_EXPORT double Pods_FlutterBoostProVersionNumber;
15 | FOUNDATION_EXPORT const unsigned char Pods_FlutterBoostProVersionString[];
16 |
17 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro.debug.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices" "${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_ROOT}/Flutter" "${PODS_ROOT}/FlutterAppSDK" "${PODS_ROOT}/FlutterPluginSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/App" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FlutterPluginRegistrant" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry" "${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus" "${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices/AppleDevices.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay/JKRetractableGCDDelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "App" -framework "AppleDevices" -framework "FDFullscreenPopGesture" -framework "FMDB" -framework "Flutter" -framework "FlutterPluginRegistrant" -framework "Foundation" -framework "JKRetractableGCDDelay" -framework "MMKV" -framework "MMKVCore" -framework "Masonry" -framework "Sentry" -framework "UIKit" -framework "flutter_boost" -framework "mmkv_flutter" -framework "package_info_plus" -framework "path_provider" -framework "sentry_flutter" -framework "shared_preferences" -framework "sqflite"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
10 | PODS_ROOT = ${SRCROOT}/Pods
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro.modulemap:
--------------------------------------------------------------------------------
1 | framework module Pods_FlutterBoostPro {
2 | umbrella header "Pods-FlutterBoostPro-umbrella.h"
3 |
4 | export *
5 | module * { export * }
6 | }
7 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro.release.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices" "${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_ROOT}/Flutter" "${PODS_ROOT}/FlutterAppSDK" "${PODS_ROOT}/FlutterPluginSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/App" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FlutterPluginRegistrant" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry" "${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus" "${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices/AppleDevices.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay/JKRetractableGCDDelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "App" -framework "AppleDevices" -framework "FDFullscreenPopGesture" -framework "FMDB" -framework "Flutter" -framework "FlutterPluginRegistrant" -framework "Foundation" -framework "JKRetractableGCDDelay" -framework "MMKV" -framework "MMKVCore" -framework "Masonry" -framework "Sentry" -framework "UIKit" -framework "flutter_boost" -framework "mmkv_flutter" -framework "package_info_plus" -framework "path_provider" -framework "sentry_flutter" -framework "shared_preferences" -framework "sqflite"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
10 | PODS_ROOT = ${SRCROOT}/Pods
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------
/ios_module/Pods/Target Support Files/Pods-FlutterBoostPro/Pods-FlutterBoostPro.test.xcconfig:
--------------------------------------------------------------------------------
1 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO
2 | FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices" "${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture" "${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_ROOT}/Flutter" "${PODS_ROOT}/FlutterAppSDK" "${PODS_ROOT}/FlutterPluginSDK" "${PODS_XCFRAMEWORKS_BUILD_DIR}/App" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FMDB" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/FlutterPluginRegistrant" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKV" "${PODS_XCFRAMEWORKS_BUILD_DIR}/MMKVCore" "${PODS_XCFRAMEWORKS_BUILD_DIR}/Sentry" "${PODS_XCFRAMEWORKS_BUILD_DIR}/flutter_boost" "${PODS_XCFRAMEWORKS_BUILD_DIR}/mmkv_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/package_info_plus" "${PODS_XCFRAMEWORKS_BUILD_DIR}/path_provider" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sentry_flutter" "${PODS_XCFRAMEWORKS_BUILD_DIR}/shared_preferences" "${PODS_XCFRAMEWORKS_BUILD_DIR}/sqflite"
3 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1
4 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AppleDevices/AppleDevices.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FDFullscreenPopGesture/FDFullscreenPopGesture.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JKRetractableGCDDelay/JKRetractableGCDDelay.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers"
5 | LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks'
6 | OTHER_LDFLAGS = $(inherited) -framework "App" -framework "AppleDevices" -framework "FDFullscreenPopGesture" -framework "FMDB" -framework "Flutter" -framework "FlutterPluginRegistrant" -framework "Foundation" -framework "JKRetractableGCDDelay" -framework "MMKV" -framework "MMKVCore" -framework "Masonry" -framework "Sentry" -framework "UIKit" -framework "flutter_boost" -framework "mmkv_flutter" -framework "package_info_plus" -framework "path_provider" -framework "sentry_flutter" -framework "shared_preferences" -framework "sqflite"
7 | PODS_BUILD_DIR = ${BUILD_DIR}
8 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
9 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/.
10 | PODS_ROOT = ${SRCROOT}/Pods
11 | PODS_XCFRAMEWORKS_BUILD_DIR = $(PODS_CONFIGURATION_BUILD_DIR)/XCFrameworkIntermediates
12 | USE_RECURSIVE_SCRIPT_INPUTS_IN_SCRIPT_PHASES = YES
13 |
--------------------------------------------------------------------------------