From e10c9d8c3c0c3a4c75f087f35cc7ce2d163a8816 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 25 Oct 2023 13:40:55 -0700 Subject: [PATCH 01/52] initial working commit --- .../{ => pointer_interceptor}/AUTHORS | 0 .../{ => pointer_interceptor}/CHANGELOG.md | 0 .../{ => pointer_interceptor}/LICENSE | 0 .../{ => pointer_interceptor}/README.md | 0 .../doc/img/affected-areas.png | Bin .../doc/img/fixed-areas.png | Bin .../example/.gitignore | 0 .../example/.metadata | 0 .../example/README.md | 0 .../example/integration_test/widget_test.dart | 0 .../example/lib/main.dart | 0 .../example/pubspec.yaml | 0 .../example/test_driver/integration_test.dart | 0 .../example/web/favicon.png | Bin .../example/web/icons/Icon-192.png | Bin .../example/web/icons/Icon-512.png | Bin .../example/web/index.html | 0 .../example/web/manifest.json | 0 .../lib/pointer_interceptor.dart | 12 + .../lib/src/pointer_interceptor_widget.dart} | 11 +- .../lib/src/web.dart | 0 .../{ => pointer_interceptor}/pubspec.yaml | 22 +- .../{ => pointer_interceptor}/test/README.md | 0 .../test/tests_exist_elsewhere_test.dart | 0 .../pointer_interceptor_ios/.gitignore | 29 + .../pointer_interceptor_ios/.metadata | 30 + .../pointer_interceptor_ios/CHANGELOG.md | 3 + .../pointer_interceptor_ios/LICENSE | 1 + .../pointer_interceptor_ios/README.md | 15 + .../analysis_options.yaml | 4 + .../example/.gitignore | 43 + .../pointer_interceptor_ios/example/README.md | 16 + .../example/analysis_options.yaml | 28 + .../plugin_integration_test.dart | 25 + .../example/ios/.gitignore | 34 + .../Classes/DummyPlatformViewFactory.swift | 69 ++ .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../example/ios/Flutter/Debug.xcconfig | 2 + .../example/ios/Flutter/Release.xcconfig | 2 + .../example/ios/Podfile | 44 + .../ios/Runner.xcodeproj/project.pbxproj | 894 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 109 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../example/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/README.md | 5 + .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 29 + .../example/ios/Runner/Info.plist | 49 + .../ios/Runner/Runner-Bridging-Header.h | 1 + .../example/ios/RunnerTests/RunnerTests.swift | 26 + .../ios/RunnerUITests/RunnerUITests.swift | 40 + .../example/lib/main.dart | 69 ++ .../example/pubspec.yaml | 89 ++ .../example/test/widget_test.dart | 27 + .../pointer_interceptor_ios/ios/.gitignore | 38 + .../ios/Assets/.gitkeep | 0 .../Classes/DummyPlatformViewFactory.swift | 69 ++ .../Classes/PointerInterceptorFactory.swift | 15 + .../Classes/PointerInterceptorIosPlugin.swift | 24 + .../ios/Classes/PointerInterceptorView.swift | 26 + .../ios/pointer_interceptor_ios.podspec | 23 + .../lib/pointer_interceptor_ios.dart | 33 + .../pointer_interceptor_ios/pubspec.yaml | 29 + ...r_interceptor_ios_method_channel_test.dart | 27 + .../test/pointer_interceptor_ios_test.dart | 57 ++ .../.gitignore | 29 + .../.metadata | 30 + .../CHANGELOG.md | 3 + .../LICENSE | 1 + .../README.md | 15 + .../analysis_options.yaml | 4 + .../ios/.gitignore | 38 + .../ios/Assets/.gitkeep | 0 ...erInterceptorPlatformInterfacePlugin.swift | 19 + ...ter_interceptor_platform_interface.podspec | 23 + ...inter_interceptor_platform_interface.dart} | 4 +- .../pointer_interceptor_method_channel.dart | 16 + .../lib/src/pointer_interceptor_platform.dart | 40 + .../pubspec.yaml | 69 ++ ...latform_interface_method_channel_test.dart | 27 + ...r_interceptor_platform_interface_test.dart | 29 + 106 files changed, 2677 insertions(+), 9 deletions(-) rename packages/pointer_interceptor/{ => pointer_interceptor}/AUTHORS (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/CHANGELOG.md (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/LICENSE (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/README.md (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/doc/img/affected-areas.png (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/doc/img/fixed-areas.png (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/.gitignore (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/.metadata (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/README.md (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/integration_test/widget_test.dart (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/lib/main.dart (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/pubspec.yaml (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/test_driver/integration_test.dart (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/web/favicon.png (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/web/icons/Icon-192.png (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/web/icons/Icon-512.png (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/web/index.html (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/example/web/manifest.json (100%) create mode 100644 packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart rename packages/pointer_interceptor/{lib/src/mobile.dart => pointer_interceptor/lib/src/pointer_interceptor_widget.dart} (77%) rename packages/pointer_interceptor/{ => pointer_interceptor}/lib/src/web.dart (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/pubspec.yaml (51%) rename packages/pointer_interceptor/{ => pointer_interceptor}/test/README.md (100%) rename packages/pointer_interceptor/{ => pointer_interceptor}/test/tests_exist_elsewhere_test.dart (100%) create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/.metadata create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/LICENSE create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/README.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/README.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Debug.xcconfig create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Release.xcconfig create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/Main.storyboard create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Info.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/Assets/.gitkeep create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorFactory.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/.metadata create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Assets/.gitkeep create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec rename packages/pointer_interceptor/{lib/pointer_interceptor.dart => pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart} (63%) create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart diff --git a/packages/pointer_interceptor/AUTHORS b/packages/pointer_interceptor/pointer_interceptor/AUTHORS similarity index 100% rename from packages/pointer_interceptor/AUTHORS rename to packages/pointer_interceptor/pointer_interceptor/AUTHORS diff --git a/packages/pointer_interceptor/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md similarity index 100% rename from packages/pointer_interceptor/CHANGELOG.md rename to packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md diff --git a/packages/pointer_interceptor/LICENSE b/packages/pointer_interceptor/pointer_interceptor/LICENSE similarity index 100% rename from packages/pointer_interceptor/LICENSE rename to packages/pointer_interceptor/pointer_interceptor/LICENSE diff --git a/packages/pointer_interceptor/README.md b/packages/pointer_interceptor/pointer_interceptor/README.md similarity index 100% rename from packages/pointer_interceptor/README.md rename to packages/pointer_interceptor/pointer_interceptor/README.md diff --git a/packages/pointer_interceptor/doc/img/affected-areas.png b/packages/pointer_interceptor/pointer_interceptor/doc/img/affected-areas.png similarity index 100% rename from packages/pointer_interceptor/doc/img/affected-areas.png rename to packages/pointer_interceptor/pointer_interceptor/doc/img/affected-areas.png diff --git a/packages/pointer_interceptor/doc/img/fixed-areas.png b/packages/pointer_interceptor/pointer_interceptor/doc/img/fixed-areas.png similarity index 100% rename from packages/pointer_interceptor/doc/img/fixed-areas.png rename to packages/pointer_interceptor/pointer_interceptor/doc/img/fixed-areas.png diff --git a/packages/pointer_interceptor/example/.gitignore b/packages/pointer_interceptor/pointer_interceptor/example/.gitignore similarity index 100% rename from packages/pointer_interceptor/example/.gitignore rename to packages/pointer_interceptor/pointer_interceptor/example/.gitignore diff --git a/packages/pointer_interceptor/example/.metadata b/packages/pointer_interceptor/pointer_interceptor/example/.metadata similarity index 100% rename from packages/pointer_interceptor/example/.metadata rename to packages/pointer_interceptor/pointer_interceptor/example/.metadata diff --git a/packages/pointer_interceptor/example/README.md b/packages/pointer_interceptor/pointer_interceptor/example/README.md similarity index 100% rename from packages/pointer_interceptor/example/README.md rename to packages/pointer_interceptor/pointer_interceptor/example/README.md diff --git a/packages/pointer_interceptor/example/integration_test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart similarity index 100% rename from packages/pointer_interceptor/example/integration_test/widget_test.dart rename to packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart diff --git a/packages/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart similarity index 100% rename from packages/pointer_interceptor/example/lib/main.dart rename to packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart diff --git a/packages/pointer_interceptor/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/example/pubspec.yaml similarity index 100% rename from packages/pointer_interceptor/example/pubspec.yaml rename to packages/pointer_interceptor/pointer_interceptor/example/pubspec.yaml diff --git a/packages/pointer_interceptor/example/test_driver/integration_test.dart b/packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart similarity index 100% rename from packages/pointer_interceptor/example/test_driver/integration_test.dart rename to packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart diff --git a/packages/pointer_interceptor/example/web/favicon.png b/packages/pointer_interceptor/pointer_interceptor/example/web/favicon.png similarity index 100% rename from packages/pointer_interceptor/example/web/favicon.png rename to packages/pointer_interceptor/pointer_interceptor/example/web/favicon.png diff --git a/packages/pointer_interceptor/example/web/icons/Icon-192.png b/packages/pointer_interceptor/pointer_interceptor/example/web/icons/Icon-192.png similarity index 100% rename from packages/pointer_interceptor/example/web/icons/Icon-192.png rename to packages/pointer_interceptor/pointer_interceptor/example/web/icons/Icon-192.png diff --git a/packages/pointer_interceptor/example/web/icons/Icon-512.png b/packages/pointer_interceptor/pointer_interceptor/example/web/icons/Icon-512.png similarity index 100% rename from packages/pointer_interceptor/example/web/icons/Icon-512.png rename to packages/pointer_interceptor/pointer_interceptor/example/web/icons/Icon-512.png diff --git a/packages/pointer_interceptor/example/web/index.html b/packages/pointer_interceptor/pointer_interceptor/example/web/index.html similarity index 100% rename from packages/pointer_interceptor/example/web/index.html rename to packages/pointer_interceptor/pointer_interceptor/example/web/index.html diff --git a/packages/pointer_interceptor/example/web/manifest.json b/packages/pointer_interceptor/pointer_interceptor/example/web/manifest.json similarity index 100% rename from packages/pointer_interceptor/example/web/manifest.json rename to packages/pointer_interceptor/pointer_interceptor/example/web/manifest.json diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart new file mode 100644 index 00000000000..6384d7c3225 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -0,0 +1,12 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +library pointer_interceptor; + +import 'package:flutter/widgets.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; + +// export 'src/web.dart'; + +part 'src/pointer_interceptor_widget.dart'; \ No newline at end of file diff --git a/packages/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart similarity index 77% rename from packages/pointer_interceptor/lib/src/mobile.dart rename to packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart index 8d645ffbcfe..79d562d0159 100644 --- a/packages/pointer_interceptor/lib/src/mobile.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart @@ -2,16 +2,16 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:flutter/widgets.dart'; +part of pointer_interceptor; -/// A [Widget] that prevents clicks from being swallowed by [HtmlElementView]s. +/// A [Widget] that prevents clicks from being swallowed by PlatformViews. class PointerInterceptor extends StatelessWidget { /// Create a `PointerInterceptor` wrapping a `child`. // ignore: prefer_const_constructors_in_immutables PointerInterceptor({ required this.child, this.intercepting = true, - this.debug = false, + this.debug = true, super.key, }); @@ -29,6 +29,7 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { - return child; + return PointerInterceptorPlatform.instance.buildWidget( + child: child, intercepting: intercepting, debug: debug, key: key); } -} +} \ No newline at end of file diff --git a/packages/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart similarity index 100% rename from packages/pointer_interceptor/lib/src/web.dart rename to packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart diff --git a/packages/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml similarity index 51% rename from packages/pointer_interceptor/pubspec.yaml rename to packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 3dba03b703b..444a6344a31 100644 --- a/packages/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -8,14 +8,34 @@ environment: sdk: ">=3.1.0 <4.0.0" flutter: ">=3.13.0" +flutter: + plugin: + implements: pointer_interceptor_platform_interface + platforms: + web: + pluginClass: PointerInterceptorPlugin + fileName: src/web.dart + ios: + default_package: pointer_interceptor_ios + dependencies: flutter: sdk: flutter + pointer_interceptor_platform_interface: + path: ../pointer_interceptor_platform_interface + pointer_interceptor_ios: + path: ../pointer_interceptor_ios + flutter_web_plugins: + sdk: flutter + + # flutter_web_plugins: + # sdk: flutter dev_dependencies: flutter_test: sdk: flutter topics: + - - web - - widgets + - widgets \ No newline at end of file diff --git a/packages/pointer_interceptor/test/README.md b/packages/pointer_interceptor/pointer_interceptor/test/README.md similarity index 100% rename from packages/pointer_interceptor/test/README.md rename to packages/pointer_interceptor/pointer_interceptor/test/README.md diff --git a/packages/pointer_interceptor/test/tests_exist_elsewhere_test.dart b/packages/pointer_interceptor/pointer_interceptor/test/tests_exist_elsewhere_test.dart similarity index 100% rename from packages/pointer_interceptor/test/tests_exist_elsewhere_test.dart rename to packages/pointer_interceptor/pointer_interceptor/test/tests_exist_elsewhere_test.dart diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/.gitignore b/packages/pointer_interceptor/pointer_interceptor_ios/.gitignore new file mode 100644 index 00000000000..ac5aa9893e4 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/.gitignore @@ -0,0 +1,29 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +build/ diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/.metadata b/packages/pointer_interceptor/pointer_interceptor_ios/.metadata new file mode 100644 index 00000000000..88292defa87 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "969911d1d09d6c4f145e9ce27c08093e8c285561" + channel: "main" + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: ios + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md new file mode 100644 index 00000000000..41cc7d8192e --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE new file mode 100644 index 00000000000..ba75c69f7f2 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/README.md new file mode 100644 index 00000000000..52c97ad677b --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/README.md @@ -0,0 +1,15 @@ +# pointer_interceptor_ios + +A new Flutter plugin project. + +## Getting Started + +This project is a starting point for a Flutter +[plug-in package](https://flutter.dev/developing-packages/), +a specialized package that includes platform-specific implementation code for +Android and/or iOS. + +For help getting started with Flutter development, view the +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml new file mode 100644 index 00000000000..a5744c1cfbe --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/.gitignore b/packages/pointer_interceptor/pointer_interceptor_ios/example/.gitignore new file mode 100644 index 00000000000..29a3a5017f0 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/.gitignore @@ -0,0 +1,43 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md new file mode 100644 index 00000000000..3afdfbfb3e3 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md @@ -0,0 +1,16 @@ +# pointer_interceptor_ios_example + +Demonstrates how to use the pointer_interceptor_ios plugin. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml new file mode 100644 index 00000000000..0d2902135ca --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml @@ -0,0 +1,28 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at https://dart.dev/lints. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart new file mode 100644 index 00000000000..08d166cbd4b --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart @@ -0,0 +1,25 @@ +// This is a basic Flutter integration test. +// +// Since integration tests run in a full Flutter application, they can interact +// with the host side of a plugin implementation, unlike Dart unit tests. +// +// For more information about Flutter integration tests, please see +// https://docs.flutter.dev/cookbook/testing/integration/introduction + + +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + testWidgets('getPlatformVersion test', (WidgetTester tester) async { + final PointerInterceptorIos plugin = PointerInterceptorIos(); + final String? version = await plugin.getPlatformVersion(); + // The version string depends on the host platform running the test, so + // just assert that some non-empty string is returned. + expect(version?.isNotEmpty, true); + }); +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.gitignore b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.gitignore new file mode 100644 index 00000000000..7a7f9873ad7 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift new file mode 100644 index 00000000000..ee9a2b1eb14 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift @@ -0,0 +1,69 @@ +import Flutter +import UIKit + +public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { + private var messenger: FlutterBinaryMessenger + + init(messenger: FlutterBinaryMessenger) { + self.messenger = messenger + super.init() + } + + public func create( + withFrame frame: CGRect, + viewIdentifier viewId: Int64, + arguments args: Any? + ) -> FlutterPlatformView { + return DummyPlatformView( + frame: frame, + viewIdentifier: viewId, + arguments: args, + binaryMessenger: messenger) + } + + /// Implementing this method is only necessary when the `arguments` in `createWithFrame` is not `nil`. + public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { + return FlutterStandardMessageCodec.sharedInstance() + } +} + +public class CustomView: UIView { + + override public func hitTest( + _ point: CGPoint, + with event: UIEvent? + ) -> UIView? { + print("clicked") + + viewWithTag(1)?.removeFromSuperview(); + return super.hitTest(point, with: event) + } +} + +class DummyPlatformView: NSObject, FlutterPlatformView { + private var _view: CustomView; + + init( + frame: CGRect, + viewIdentifier viewId: Int64, + arguments args: Any?, + binaryMessenger messenger: FlutterBinaryMessenger? + ) { + _view = CustomView() + super.init() + createNativeView(view: _view) + } + + func view() -> UIView { + return _view + } + + func createNativeView(view _view: CustomView){ + let nativeLabel = UILabel() + _view.isUserInteractionEnabled = true + nativeLabel.tag = 1; + nativeLabel.text = "Not Clicked" + nativeLabel.frame = CGRect(x: 0, y: 0, width: 180, height: 48.0) + _view.addSubview(nativeLabel) + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000000..9625e105df3 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Debug.xcconfig b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000000..ec97fc6f302 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Release.xcconfig b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000000..c4855bfe200 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile new file mode 100644 index 00000000000..fdcc671eb34 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..ba64b192a5b --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,894 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 92E5BF2B79626D08D4DF9E77 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9391770251506D259F6C2AC8 /* Pods_RunnerTests.framework */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + CFB68197D52B546F94542F41 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */; }; + F21CC8562AE098D900E020D2 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21CC8552AE098D900E020D2 /* DummyPlatformViewFactory.swift */; }; + F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; + F243D6132AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; + F243D6142AE053F700F4A2FC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 08F34D873584638956767E46 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 1C20968F145FF82183D29E3A /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 21788A22379CD8A786A854F7 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 296F986F7530269AB631DCEF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7036031342D281C2213AD9A6 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9391770251506D259F6C2AC8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 9978D0D01D3549F3784C2F44 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + F21CC8552AE098D900E020D2 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DummyPlatformViewFactory.swift; path = ../.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift; sourceTree = ""; }; + F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; + F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITestsLaunchTests.swift; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + CFB68197D52B546F94542F41 /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BC115AEAD3E7FBA599A307D3 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 92E5BF2B79626D08D4DF9E77 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F243D60B2AE053F700F4A2FC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 90E2426B5898B1C4B1DC0776 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */, + 9391770251506D259F6C2AC8 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + F243D60F2AE053F700F4A2FC /* RunnerUITests */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + CA6EAE272C76E7B047DA5950 /* Pods */, + 90E2426B5898B1C4B1DC0776 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; + CA6EAE272C76E7B047DA5950 /* Pods */ = { + isa = PBXGroup; + children = ( + 7036031342D281C2213AD9A6 /* Pods-Runner.debug.xcconfig */, + 296F986F7530269AB631DCEF /* Pods-Runner.release.xcconfig */, + 9978D0D01D3549F3784C2F44 /* Pods-Runner.profile.xcconfig */, + 1C20968F145FF82183D29E3A /* Pods-RunnerTests.debug.xcconfig */, + 21788A22379CD8A786A854F7 /* Pods-RunnerTests.release.xcconfig */, + 08F34D873584638956767E46 /* Pods-RunnerTests.profile.xcconfig */, + ); + path = Pods; + sourceTree = ""; + }; + F243D60F2AE053F700F4A2FC /* RunnerUITests */ = { + isa = PBXGroup; + children = ( + F243D6102AE053F700F4A2FC /* RunnerUITests.swift */, + F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */, + F21CC8552AE098D900E020D2 /* DummyPlatformViewFactory.swift */, + ); + path = RunnerUITests; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 998CA51D3E88483212711089 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + BC115AEAD3E7FBA599A307D3 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + E34E2ED75CBB4B6FF95EF8ED /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 5BEAAE62EACCF98BC20F7183 /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; + F243D60D2AE053F700F4A2FC /* RunnerUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerUITests" */; + buildPhases = ( + F243D60A2AE053F700F4A2FC /* Sources */, + F243D60B2AE053F700F4A2FC /* Frameworks */, + F243D60C2AE053F700F4A2FC /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + F243D6152AE053F700F4A2FC /* PBXTargetDependency */, + ); + name = RunnerUITests; + productName = RunnerUITests; + productReference = F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastSwiftUpdateCheck = 1410; + LastUpgradeCheck = 1430; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + F243D60D2AE053F700F4A2FC = { + CreatedOnToolsVersion = 14.1; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + F243D60D2AE053F700F4A2FC /* RunnerUITests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F243D60C2AE053F700F4A2FC /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 5BEAAE62EACCF98BC20F7183 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + 998CA51D3E88483212711089 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + E34E2ED75CBB4B6FF95EF8ED /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F243D60A2AE053F700F4A2FC /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F243D6132AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift in Sources */, + F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */, + F21CC8562AE098D900E020D2 /* DummyPlatformViewFactory.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; + F243D6152AE053F700F4A2FC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = F243D6142AE053F700F4A2FC /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = PZ83UV676J; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1C20968F145FF82183D29E3A /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 21788A22379CD8A786A854F7 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 08F34D873584638956767E46 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = PZ83UV676J; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = PZ83UV676J; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; + F243D6162AE053F700F4A2FC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S8QB4VV633; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MARKETING_VERSION = 1.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = test.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + }; + name = Debug; + }; + F243D6172AE053F700F4A2FC /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S8QB4VV633; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = test.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + }; + name = Release; + }; + F243D6182AE053F700F4A2FC /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S8QB4VV633; + GCC_C_LANGUAGE_STANDARD = gnu11; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 16.1; + MARKETING_VERSION = 1.0; + MTL_FAST_MATH = YES; + PRODUCT_BUNDLE_IDENTIFIER = test.RunnerUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Runner; + }; + name = Profile; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F243D6162AE053F700F4A2FC /* Debug */, + F243D6172AE053F700F4A2FC /* Release */, + F243D6182AE053F700F4A2FC /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000000..924949c644a --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..21a3cc14c74 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000000..70693e4a8c1 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..d36b1fab2d9 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 zcmeHN2~<R zh`|8`A_PQ1nSu(UMFx?8j8PC!!VDphaL#`F42fd#7Vlc`zIE4n%Y~eiz4y1j|NDpi z?<@|pSJ-HM`qifhf@m%MamgwK83`XpBA<+azdF#2QsT{X@z0A9Bq>~TVErigKH1~P zRX-!h-f0NJ4Mh++{D}J+K>~~rq}d%o%+4dogzXp7RxX4C>Km5XEI|PAFDmo;DFm6G zzjVoB`@qW98Yl0Kvc-9w09^PrsobmG*Eju^=3f?0o-t$U)TL1B3;sZ^!++3&bGZ!o-*6w?;oOhf z=A+Qb$scV5!RbG+&2S}BQ6YH!FKb0``VVX~T$dzzeSZ$&9=X$3)_7Z{SspSYJ!lGE z7yig_41zpQ)%5dr4ff0rh$@ky3-JLRk&DK)NEIHecf9c*?Z1bUB4%pZjQ7hD!A0r-@NF(^WKdr(LXj|=UE7?gBYGgGQV zidf2`ZT@pzXf7}!NH4q(0IMcxsUGDih(0{kRSez&z?CFA0RVXsVFw3^u=^KMtt95q z43q$b*6#uQDLoiCAF_{RFc{!H^moH_cmll#Fc^KXi{9GDl{>%+3qyfOE5;Zq|6#Hb zp^#1G+z^AXfRKaa9HK;%b3Ux~U@q?xg<2DXP%6k!3E)PA<#4$ui8eDy5|9hA5&{?v z(-;*1%(1~-NTQ`Is1_MGdQ{+i*ccd96ab$R$T3=% zw_KuNF@vI!A>>Y_2pl9L{9h1-C6H8<)J4gKI6{WzGBi<@u3P6hNsXG=bRq5c+z;Gc3VUCe;LIIFDmQAGy+=mRyF++u=drBWV8-^>0yE9N&*05XHZpPlE zxu@?8(ZNy7rm?|<+UNe0Vs6&o?l`Pt>P&WaL~M&#Eh%`rg@Mbb)J&@DA-wheQ>hRV z<(XhigZAT z>=M;URcdCaiO3d^?H<^EiEMDV+7HsTiOhoaMX%P65E<(5xMPJKxf!0u>U~uVqnPN7T!X!o@_gs3Ct1 zlZ_$5QXP4{Aj645wG_SNT&6m|O6~Tsl$q?nK*)(`{J4b=(yb^nOATtF1_aS978$x3 zx>Q@s4i3~IT*+l{@dx~Hst21fR*+5}S1@cf>&8*uLw-0^zK(+OpW?cS-YG1QBZ5q! zgTAgivzoF#`cSz&HL>Ti!!v#?36I1*l^mkrx7Y|K6L#n!-~5=d3;K<;Zqi|gpNUn_ z_^GaQDEQ*jfzh;`j&KXb66fWEk1K7vxQIMQ_#Wu_%3 z4Oeb7FJ`8I>Px;^S?)}2+4D_83gHEq>8qSQY0PVP?o)zAv3K~;R$fnwTmI-=ZLK`= zTm+0h*e+Yfr(IlH3i7gUclNH^!MU>id$Jw>O?2i0Cila#v|twub21@e{S2v}8Z13( zNDrTXZVgris|qYm<0NU(tAPouG!QF4ZNpZPkX~{tVf8xY690JqY1NVdiTtW+NqyRP zZ&;T0ikb8V{wxmFhlLTQ&?OP7 z;(z*<+?J2~z*6asSe7h`$8~Se(@t(#%?BGLVs$p``;CyvcT?7Y!{tIPva$LxCQ&4W z6v#F*);|RXvI%qnoOY&i4S*EL&h%hP3O zLsrFZhv&Hu5tF$Lx!8(hs&?!Kx5&L(fdu}UI5d*wn~A`nPUhG&Rv z2#ixiJdhSF-K2tpVL=)5UkXRuPAFrEW}7mW=uAmtVQ&pGE-&az6@#-(Te^n*lrH^m@X-ftVcwO_#7{WI)5v(?>uC9GG{lcGXYJ~Q8q zbMFl7;t+kV;|;KkBW2!P_o%Czhw&Q(nXlxK9ak&6r5t_KH8#1Mr-*0}2h8R9XNkr zto5-b7P_auqTJb(TJlmJ9xreA=6d=d)CVbYP-r4$hDn5|TIhB>SReMfh&OVLkMk-T zYf%$taLF0OqYF?V{+6Xkn>iX@TuqQ?&cN6UjC9YF&%q{Ut3zv{U2)~$>-3;Dp)*(? zg*$mu8^i=-e#acaj*T$pNowo{xiGEk$%DusaQiS!KjJH96XZ-hXv+jk%ard#fu=@Q z$AM)YWvE^{%tDfK%nD49=PI|wYu}lYVbB#a7wtN^Nml@CE@{Gv7+jo{_V?I*jkdLD zJE|jfdrmVbkfS>rN*+`#l%ZUi5_bMS<>=MBDNlpiSb_tAF|Zy`K7kcp@|d?yaTmB^ zo?(vg;B$vxS|SszusORgDg-*Uitzdi{dUV+glA~R8V(?`3GZIl^egW{a919!j#>f` znL1o_^-b`}xnU0+~KIFLQ)$Q6#ym%)(GYC`^XM*{g zv3AM5$+TtDRs%`2TyR^$(hqE7Y1b&`Jd6dS6B#hDVbJlUXcG3y*439D8MrK!2D~6gn>UD4Imctb z+IvAt0iaW73Iq$K?4}H`7wq6YkTMm`tcktXgK0lKPmh=>h+l}Y+pDtvHnG>uqBA)l zAH6BV4F}v$(o$8Gfo*PB>IuaY1*^*`OTx4|hM8jZ?B6HY;F6p4{`OcZZ(us-RVwDx zUzJrCQlp@mz1ZFiSZ*$yX3c_#h9J;yBE$2g%xjmGF4ca z&yL`nGVs!Zxsh^j6i%$a*I3ZD2SoNT`{D%mU=LKaEwbN(_J5%i-6Va?@*>=3(dQy` zOv%$_9lcy9+(t>qohkuU4r_P=R^6ME+wFu&LA9tw9RA?azGhjrVJKy&8=*qZT5Dr8g--d+S8zAyJ$1HlW3Olryt`yE zFIph~Z6oF&o64rw{>lgZISC6p^CBer9C5G6yq%?8tC+)7*d+ib^?fU!JRFxynRLEZ zj;?PwtS}Ao#9whV@KEmwQgM0TVP{hs>dg(1*DiMUOKHdQGIqa0`yZnHk9mtbPfoLx zo;^V6pKUJ!5#n`w2D&381#5#_t}AlTGEgDz$^;u;-vxDN?^#5!zN9ngytY@oTv!nc zp1Xn8uR$1Z;7vY`-<*?DfPHB;x|GUi_fI9@I9SVRv1)qETbNU_8{5U|(>Du84qP#7 z*l9Y$SgA&wGbj>R1YeT9vYjZuC@|{rajTL0f%N@>3$DFU=`lSPl=Iv;EjuGjBa$Gw zHD-;%YOE@<-!7-Mn`0WuO3oWuL6tB2cpPw~Nvuj|KM@))ixuDK`9;jGMe2d)7gHin zS<>k@!x;!TJEc#HdL#RF(`|4W+H88d4V%zlh(7#{q2d0OQX9*FW^`^_<3r$kabWAB z$9BONo5}*(%kx zOXi-yM_cmB3>inPpI~)duvZykJ@^^aWzQ=eQ&STUa}2uT@lV&WoRzkUoE`rR0)`=l zFT%f|LA9fCw>`enm$p7W^E@U7RNBtsh{_-7vVz3DtB*y#*~(L9+x9*wn8VjWw|Q~q zKFsj1Yl>;}%MG3=PY`$g$_mnyhuV&~O~u~)968$0b2!Jkd;2MtAP#ZDYw9hmK_+M$ zb3pxyYC&|CuAbtiG8HZjj?MZJBFbt`ryf+c1dXFuC z0*ZQhBzNBd*}s6K_G}(|Z_9NDV162#y%WSNe|FTDDhx)K!c(mMJh@h87@8(^YdK$&d*^WQe8Z53 z(|@MRJ$Lk-&ii74MPIs80WsOFZ(NX23oR-?As+*aq6b?~62@fSVmM-_*cb1RzZ)`5$agEiL`-E9s7{GM2?(KNPgK1(+c*|-FKoy}X(D_b#etO|YR z(BGZ)0Ntfv-7R4GHoXp?l5g#*={S1{u-QzxCGng*oWr~@X-5f~RA14b8~B+pLKvr4 zfgL|7I>jlak9>D4=(i(cqYf7#318!OSR=^`xxvI!bBlS??`xxWeg?+|>MxaIdH1U~#1tHu zB{QMR?EGRmQ_l4p6YXJ{o(hh-7Tdm>TAX380TZZZyVkqHNzjUn*_|cb?T? zt;d2s-?B#Mc>T-gvBmQZx(y_cfkXZO~{N zT6rP7SD6g~n9QJ)8F*8uHxTLCAZ{l1Y&?6v)BOJZ)=R-pY=Y=&1}jE7fQ>USS}xP#exo57uND0i*rEk@$;nLvRB@u~s^dwRf?G?_enN@$t* zbL%JO=rV(3Ju8#GqUpeE3l_Wu1lN9Y{D4uaUe`g>zlj$1ER$6S6@{m1!~V|bYkhZA z%CvrDRTkHuajMU8;&RZ&itnC~iYLW4DVkP<$}>#&(`UO>!n)Po;Mt(SY8Yb`AS9lt znbX^i?Oe9r_o=?})IHKHoQGKXsps_SE{hwrg?6dMI|^+$CeC&z@*LuF+P`7LfZ*yr+KN8B4{Nzv<`A(wyR@!|gw{zB6Ha ziwPAYh)oJ(nlqSknu(8g9N&1hu0$vFK$W#mp%>X~AU1ay+EKWcFdif{% z#4!4aoVVJ;ULmkQf!ke2}3hqxLK>eq|-d7Ly7-J9zMpT`?dxo6HdfJA|t)?qPEVBDv z{y_b?4^|YA4%WW0VZd8C(ZgQzRI5(I^)=Ub`Y#MHc@nv0w-DaJAqsbEHDWG8Ia6ju zo-iyr*sq((gEwCC&^TYBWt4_@|81?=B-?#P6NMff(*^re zYqvDuO`K@`mjm_Jd;mW_tP`3$cS?R$jR1ZN09$YO%_iBqh5ftzSpMQQtxKFU=FYmP zeY^jph+g<4>YO;U^O>-NFLn~-RqlHvnZl2yd2A{Yc1G@Ga$d+Q&(f^tnPf+Z7serIU};17+2DU_f4Z z@GaPFut27d?!YiD+QP@)T=77cR9~MK@bd~pY%X(h%L={{OIb8IQmf-!xmZkm8A0Ga zQSWONI17_ru5wpHg3jI@i9D+_Y|pCqVuHJNdHUauTD=R$JcD2K_liQisqG$(sm=k9;L* z!L?*4B~ql7uioSX$zWJ?;q-SWXRFhz2Jt4%fOHA=Bwf|RzhwqdXGr78y$J)LR7&3T zE1WWz*>GPWKZ0%|@%6=fyx)5rzUpI;bCj>3RKzNG_1w$fIFCZ&UR0(7S?g}`&Pg$M zf`SLsz8wK82Vyj7;RyKmY{a8G{2BHG%w!^T|Njr!h9TO2LaP^_f22Q1=l$QiU84ao zHe_#{S6;qrC6w~7{y(hs-?-j?lbOfgH^E=XcSgnwW*eEz{_Z<_xN#0001NP)t-s|Ns9~ z#rXRE|M&d=0au&!`~QyF`q}dRnBDt}*!qXo`c{v z{Djr|@Adh0(D_%#_&mM$D6{kE_x{oE{l@J5@%H*?%=t~i_`ufYOPkAEn!pfkr2$fs z652Tz0001XNklqeeKN4RM4i{jKqmiC$?+xN>3Apn^ z0QfuZLym_5b<*QdmkHjHlj811{If)dl(Z2K0A+ekGtrFJb?g|wt#k#pV-#A~bK=OT ts8>{%cPtyC${m|1#B1A6#u!Q;umknL1chzTM$P~L002ovPDHLkV1lTfnu!1a literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 zcmV;526g#~P){YQnis^a@{&-nmRmq)<&%Mztj67_#M}W?l>kYSliK<%xAp;0j{!}J0!o7b zE>q9${Lb$D&h7k=+4=!ek^n+`0zq>LL1O?lVyea53S5x`Nqqo2YyeuIrQrJj9XjOp z{;T5qbj3}&1vg1VK~#9!?b~^C5-}JC@Pyrv-6dSEqJqT}#j9#dJ@GzT@B8}x zU&J@bBI>f6w6en+CeI)3^kC*U?}X%OD8$Fd$H&LV$H&LV$H&LV#|K5~mLYf|VqzOc zkc7qL~0sOYuM{tG`rYEDV{DWY`Z8&)kW*hc2VkBuY+^Yx&92j&StN}Wp=LD zxoGxXw6f&8sB^u})h@b@z0RBeD`K7RMR9deyL(ZJu#39Z>rT)^>v}Khq8U-IbIvT> z?4pV9qGj=2)TNH3d)=De<+^w;>S7m_eFKTvzeaBeir45xY!^m!FmxnljbSS_3o=g( z->^wC9%qkR{kbGnW8MfFew_o9h3(r55Is`L$8KI@d+*%{=Nx+FXJ98L0PjFIu;rGnnfY zn1R5Qnp<{Jq0M1vX=X&F8gtLmcWv$1*M@4ZfF^9``()#hGTeKeP`1!iED ztNE(TN}M5}3Bbc*d=FIv`DNv&@|C6yYj{sSqUj5oo$#*0$7pu|Dd2TLI>t5%I zIa4Dvr(iayb+5x=j*Vum9&irk)xV1`t509lnPO0%skL8_1c#Xbamh(2@f?4yUI zhhuT5<#8RJhGz4%b$`PJwKPAudsm|at?u;*hGgnA zU1;9gnxVBC)wA(BsB`AW54N{|qmikJR*%x0c`{LGsSfa|NK61pYH(r-UQ4_JXd!Rsz)=k zL{GMc5{h138)fF5CzHEDM>+FqY)$pdN3}Ml+riTgJOLN0F*Vh?{9ESR{SVVg>*>=# zix;VJHPtvFFCRY$Ks*F;VX~%*r9F)W`PmPE9F!(&s#x07n2<}?S{(ygpXgX-&B&OM zONY&BRQ(#%0%jeQs?oJ4P!p*R98>qCy5p8w>_gpuh39NcOlp)(wOoz0sY-Qz55eB~ z7OC-fKBaD1sE3$l-6QgBJO!n?QOTza`!S_YK z_v-lm^7{VO^8Q@M_^8F)09Ki6%=s?2_5eupee(w1FB%aqSweusQ-T+CH0Xt{` zFjMvW{@C&TB)k25()nh~_yJ9coBRL(0oO@HK~z}7?bm5j;y@69;bvlHb2tf!$ReA~x{22wTq550 z?f?Hnw(;m3ip30;QzdV~7pi!wyMYhDtXW#cO7T>|f=bdFhu+F!zMZ2UFj;GUKX7tI z;hv3{q~!*pMj75WP_c}>6)IWvg5_yyg<9Op()eD1hWC19M@?_9_MHec{Z8n3FaF{8 z;u`Mw0ly(uE>*CgQYv{be6ab2LWhlaH1^iLIM{olnag$78^Fd}%dR7;JECQ+hmk|o z!u2&!3MqPfP5ChDSkFSH8F2WVOEf0(E_M(JL17G}Y+fg0_IuW%WQ zG(mG&u?|->YSdk0;8rc{yw2@2Z&GA}z{Wb91Ooz9VhA{b2DYE7RmG zjL}?eq#iX%3#k;JWMx_{^2nNax`xPhByFiDX+a7uTGU|otOvIAUy|dEKkXOm-`aWS z27pUzD{a)Ct<6p{{3)+lq@i`t@%>-wT4r?*S}k)58e09WZYP0{{R3FC5Sl00039P)t-s|Ns9~ z#rP?<_5oL$Q^olD{r_0T`27C={r>*`|Nj71npVa5OTzc(_WfbW_({R{p56NV{r*M2 z_xt?)2V0#0NsfV0u>{42ctGP(8vQj-Btk1n|O0ZD=YLwd&R{Ko41Gr9H= zY@z@@bOAMB5Ltl$E>bJJ{>JP30ZxkmI%?eW{k`b?Wy<&gOo;dS`~CR$Vwb@XWtR|N zi~t=w02?-0&j0TD{>bb6sNwsK*!p?V`RMQUl(*DVjk-9Cx+-z1KXab|Ka2oXhX5f% z`$|e!000AhNklrxs)5QTeTVRiEmz~MKK1WAjCw(c-JK6eox;2O)?`? zTG`AHia671e^vgmp!llKp|=5sVHk#C7=~epA~VAf-~%aPC=%Qw01h8mnSZ|p?hz91 z7p83F3%LVu9;S$tSI$C^%^yud1dfTM_6p2|+5Ejp$bd`GDvbR|xit>i!ZD&F>@CJrPmu*UjD&?DfZs=$@e3FQA(vNiU+$A*%a} z?`XcG2jDxJ_ZQ#Md`H{4Lpf6QBDp81_KWZ6Tk#yCy1)32zO#3<7>b`eT7UyYH1eGz z;O(rH$=QR*L%%ZcBpc=eGua?N55nD^K(8<#gl2+pN_j~b2MHs4#mcLmv%DkspS-3< zpI1F=^9siI0s-;IN_IrA;5xm~3?3!StX}pUv0vkxMaqm+zxrg7X7(I&*N~&dEd0kD z-FRV|g=|QuUsuh>-xCI}vD2imzYIOIdcCVV=$Bz@*u0+Bs<|L^)32nN*=wu3n%Ynw z@1|eLG>!8ruU1pFXUfb`j>(=Gy~?Rn4QJ-c3%3T|(Frd!bI`9u&zAnyFYTqlG#&J7 zAkD(jpw|oZLNiA>;>hgp1KX7-wxC~31II47gc zHcehD6Uxlf%+M^^uN5Wc*G%^;>D5qT{>=uxUhX%WJu^Z*(_Wq9y}npFO{Hhb>s6<9 zNi0pHXWFaVZnb)1+RS&F)xOv6&aeILcI)`k#0YE+?e)5&#r7J#c`3Z7x!LpTc01dx zrdC3{Z;joZ^KN&))zB_i)I9fWedoN>Zl-6_Iz+^G&*ak2jpF07*qoM6N<$f;w%0(f|Me literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000000..0bedcf2fd46 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 00000000000..89c2725b70f --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,5 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000000..f2e259c7c93 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/Main.storyboard b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000000..6220510d3fb --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Info.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Info.plist new file mode 100644 index 00000000000..f2156aa24df --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Pointer Interceptor Ios + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + pointer_interceptor_ios_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000000..308a2a560b4 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000000..5f9ed1e004c --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,26 @@ +import Flutter +import UIKit +import XCTest + +@testable import pointer_interceptor_ios + +// This demonstrates a simple unit test of the Swift portion of this plugin's implementation. +// +// See https://developer.apple.com/documentation/xctest for more information about using XCTest. + +class RunnerTests: XCTestCase { + + func testGetPlatformVersion() { + let plugin = PointerInterceptorIosPlugin() + + let call = FlutterMethodCall(methodName: "getPlatformVersion", arguments: []) + + let resultExpectation = expectation(description: "result block must be called.") + plugin.handle(call) { result in + XCTAssertEqual(result as! String, "iOS " + UIDevice.current.systemVersion) + resultExpectation.fulfill() + } + waitForExpectations(timeout: 1) + } + +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift new file mode 100644 index 00000000000..ecd03b08418 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift @@ -0,0 +1,40 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import XCTest + +final class RunnerUITests: XCTestCase { + + override func setUp() { + continueAfterFailure = false + } + + func testPointerInterceptorBlocksGesturesFromFlutter() { + let app = XCUIApplication() + app.launch() + + let fabInitial = app.buttons["Initial"] + if (!(fabInitial.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Could not find Flutter button to click on") + return + } + + fabInitial.tap(); + + let fabAfter = app.buttons["Tapped"] + if (!(fabAfter.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Flutter button did not change on tap") + return + } + + let dummyButton = app.staticTexts["Not Clicked"] + if (!(dummyButton.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Pointer interceptor did not block gesture from hitting platform view") + return + } + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart new file mode 100644 index 00000000000..1fa4ffe57f3 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/services.dart'; + +void main() { + // platformViewRegistry.registerViewFactory('plugins.flutter.dev/pointer_interceptor_ios', viewFactory) + runApp(const MaterialApp(home: PointerInterceptorIOSExample())); +} + +class DummyPlatformView extends StatelessWidget { + const DummyPlatformView({super.key}); + + @override + Widget build(BuildContext context) { + // This is used in the platform side to register the view. + const String viewType = 'dummy_platform_view'; + // Pass parameters to the platform side. + final Map creationParams = {}; + + return UiKitView( + viewType: viewType, + layoutDirection: TextDirection.ltr, + creationParams: creationParams, + creationParamsCodec: const StandardMessageCodec(), + ); + } +} + +class PointerInterceptorIOSExample extends StatefulWidget { + const PointerInterceptorIOSExample({super.key}); + + @override + State createState() { + return PointerInterceptorIOSExampleState(); + } +} + +class PointerInterceptorIOSExampleState + extends State { + + var buttonTapped = false; + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Center( + child: Stack( + alignment: AlignmentDirectional.center, + children: [ + const DummyPlatformView(), + PointerInterceptorPluginIOS().buildWidget( + debug: true, + child: TextButton( + style: TextButton.styleFrom(foregroundColor: Colors.red), + child: buttonTapped + ? const Text("Tapped") + : const Text("Initial"), + onPressed: () { + setState(() { + buttonTapped = !buttonTapped; + }); + })), + ], + ), + )); + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml new file mode 100644 index 00000000000..e8e70021aa9 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -0,0 +1,89 @@ +name: pointer_interceptor_ios_example +description: "Demonstrates how to use the pointer_interceptor_ios plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: '>=3.2.0-134.0.dev <4.0.0' + +# Dependencies specify other packages that your package needs in order to work. +# To automatically upgrade your package dependencies to the latest versions +# consider running `flutter pub upgrade --major-versions`. Alternatively, +# dependencies can be manually updated by changing the version numbers below to +# the latest version available on pub.dev. To see which dependencies have newer +# versions available, run `flutter pub outdated`. +dependencies: + flutter: + sdk: flutter + pointer_interceptor_ios: + # When depending on this package from a real application you should use: + # pointer_interceptor_ios: ^x.y.z + # See https://dart.dev/tools/pub/dependencies#version-constraints + # The example app is bundled with the plugin so we use a path dependency on + # the parent directory to use the current plugin's version. + path: ../../pointer_interceptor_ios + pointer_interceptor_platform_interface: + path: ../../pointer_interceptor_platform_interface + pointer_interceptor: + path: ../../pointer_interceptor/ + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + shared_preferences: ^2.2.2 + +dev_dependencies: + integration_test: + sdk: flutter + flutter_test: + sdk: flutter + + # The "flutter_lints" package below contains a set of recommended lints to + # encourage good coding practices. The lint set provided by the package is + # activated in the `analysis_options.yaml` file located at the root of your + # package. See that file for information about deactivating specific lint + # rules and activating additional ones. + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + + # The following line ensures that the Material Icons font is + # included with your application, so that you can use the icons in + # the material Icons class. + uses-material-design: true + + # To add assets to your application, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # For details regarding adding assets from package dependencies, see + # https://flutter.dev/assets-and-images/#from-packages + + # To add custom fonts to your application, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts from package dependencies, + # see https://flutter.dev/custom-fonts/#from-packages diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart new file mode 100644 index 00000000000..04eab0ff51b --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart @@ -0,0 +1,27 @@ +// This is a basic Flutter widget test. +// +// To perform an interaction with a widget in your test, use the WidgetTester +// utility in the flutter_test package. For example, you can send tap and scroll +// gestures. You can also use WidgetTester to find child widgets in the widget +// tree, read text, and verify that the values of widget properties are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:pointer_interceptor_ios_example/main.dart'; + +void main() { + testWidgets('Verify Platform version', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that platform version is retrieved. + expect( + find.byWidgetPredicate( + (Widget widget) => widget is Text && + widget.data!.startsWith('Running on:'), + ), + findsOneWidget, + ); + }); +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/.gitignore b/packages/pointer_interceptor/pointer_interceptor_ios/ios/.gitignore new file mode 100644 index 00000000000..0c885071e36 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/.gitignore @@ -0,0 +1,38 @@ +.idea/ +.vagrant/ +.sconsign.dblite +.svn/ + +.DS_Store +*.swp +profile + +DerivedData/ +build/ +GeneratedPluginRegistrant.h +GeneratedPluginRegistrant.m + +.generated/ + +*.pbxuser +*.mode1v3 +*.mode2v3 +*.perspectivev3 + +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 + +xcuserdata + +*.moved-aside + +*.pyc +*sync/ +Icon? +.tags* + +/Flutter/Generated.xcconfig +/Flutter/ephemeral/ +/Flutter/flutter_export_environment.sh \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Assets/.gitkeep b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Assets/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift new file mode 100644 index 00000000000..ee9a2b1eb14 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift @@ -0,0 +1,69 @@ +import Flutter +import UIKit + +public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { + private var messenger: FlutterBinaryMessenger + + init(messenger: FlutterBinaryMessenger) { + self.messenger = messenger + super.init() + } + + public func create( + withFrame frame: CGRect, + viewIdentifier viewId: Int64, + arguments args: Any? + ) -> FlutterPlatformView { + return DummyPlatformView( + frame: frame, + viewIdentifier: viewId, + arguments: args, + binaryMessenger: messenger) + } + + /// Implementing this method is only necessary when the `arguments` in `createWithFrame` is not `nil`. + public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { + return FlutterStandardMessageCodec.sharedInstance() + } +} + +public class CustomView: UIView { + + override public func hitTest( + _ point: CGPoint, + with event: UIEvent? + ) -> UIView? { + print("clicked") + + viewWithTag(1)?.removeFromSuperview(); + return super.hitTest(point, with: event) + } +} + +class DummyPlatformView: NSObject, FlutterPlatformView { + private var _view: CustomView; + + init( + frame: CGRect, + viewIdentifier viewId: Int64, + arguments args: Any?, + binaryMessenger messenger: FlutterBinaryMessenger? + ) { + _view = CustomView() + super.init() + createNativeView(view: _view) + } + + func view() -> UIView { + return _view + } + + func createNativeView(view _view: CustomView){ + let nativeLabel = UILabel() + _view.isUserInteractionEnabled = true + nativeLabel.tag = 1; + nativeLabel.text = "Not Clicked" + nativeLabel.frame = CGRect(x: 0, y: 0, width: 180, height: 48.0) + _view.addSubview(nativeLabel) + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorFactory.swift new file mode 100644 index 00000000000..9c3ee01ff26 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorFactory.swift @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +import Flutter + +class PointerInterceptorFactory: NSObject, FlutterPlatformViewFactory { + func create(withFrame frame: CGRect, viewIdentifier viewId: Int64, arguments args: Any?) -> FlutterPlatformView { + let debug = (args as? [String: Any])?["debug"] as? Bool ?? false + return PointerInterceptorView(frame: frame, debug: debug) + } + + public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { + return FlutterStandardMessageCodec.sharedInstance() + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift new file mode 100644 index 00000000000..8b456937e25 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift @@ -0,0 +1,24 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +import Flutter +import UIKit + +public class PointerInterceptorIosPlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) { + registrar.register(PointerInterceptorFactory(), withId: "plugins.flutter.dev/pointer_interceptor_ios") + let instance = PointerInterceptorIosPlugin() + + let factory = DummyPlatformViewFactory(messenger: registrar.messenger()) + registrar.register(factory, withId: "dummy_platform_view") + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + switch call.method { + case "getPlatformVersion": + result("iOS " + UIDevice.current.systemVersion) + default: + result(FlutterMethodNotImplemented) + } + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift new file mode 100644 index 00000000000..b6ef627be00 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift @@ -0,0 +1,26 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. +import Flutter +import UIKit + +public class PointerInterceptorView: NSObject, FlutterPlatformView { + + let interceptorView: UIView + + init(frame:CGRect, debug:Bool) { + + interceptorView = UIView(frame:frame) + if true { + interceptorView.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5) + } else { + interceptorView.backgroundColor = UIColor.clear + } + } + + public func view() -> UIView { + return interceptorView; + } + + +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec b/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec new file mode 100644 index 00000000000..2c6242165af --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec @@ -0,0 +1,23 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint pointer_interceptor_ios.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'pointer_interceptor_ios' + s.version = '0.0.1' + s.summary = 'A new Flutter plugin project.' + s.description = <<-DESC +A new Flutter plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.platform = :ios, '11.0' + + # Flutter.framework does not contain a i386 slice. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' +end diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart new file mode 100644 index 00000000000..b5ca4139533 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -0,0 +1,33 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/widgets.dart'; +import 'package:flutter/services.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; + +/// The iOS implementation of the [PointerInterceptorPlatform] +class PointerInterceptorPluginIOS extends PointerInterceptorPlatform { + static void registerWith() { + PointerInterceptorPlatform.instance = PointerInterceptorPluginIOS(); + } + + @override + Widget buildWidget( + {required Widget child, + bool intercepting = true, + bool debug = false, + Key? key}) { + return Stack(alignment: Alignment.center, children: [ + Positioned.fill( + child: UiKitView( + viewType: 'plugins.flutter.dev/pointer_interceptor_ios', + creationParams: { + 'debug': debug, + }, + creationParamsCodec: const StandardMessageCodec(), + )), + child + ]); + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml new file mode 100644 index 00000000000..1ca969c078e --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -0,0 +1,29 @@ +name: pointer_interceptor_ios +description: iOS implementation of the pointer_interceptor plugin. +repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_ios +issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen++label%3A%22p%3A+pointer_interceptor%22 +version: 2.3.1 + +environment: + sdk: '>=3.2.0-134.0.dev <4.0.0' + flutter: '>=3.3.0' + +flutter: + plugin: + implements: pointer_interceptor + platforms: + ios: + pluginClass: PointerInterceptorIosPlugin + dartPluginClass: PointerInterceptorPluginIOS + +dependencies: + flutter: + sdk: flutter + pointer_interceptor_platform_interface: + path: ../pointer_interceptor_platform_interface + webview_flutter: ^3.0.4 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart new file mode 100644 index 00000000000..fb0eba7cf8f --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart @@ -0,0 +1,27 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pointer_interceptor_ios/pointer_interceptor_ios_method_channel.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + MethodChannelPointerInterceptorIos platform = MethodChannelPointerInterceptorIos(); + const MethodChannel channel = MethodChannel('pointer_interceptor_ios'); + + setUp(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( + channel, + (MethodCall methodCall) async { + return '42'; + }, + ); + }); + + tearDown(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(channel, null); + }); + + test('getPlatformVersion', () async { + expect(await platform.getPlatformVersion(), '42'); + }); +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart new file mode 100644 index 00000000000..5a69d2f5036 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -0,0 +1,57 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; +// import 'package:pointer_interceptor/pointer_interceptor.dart'; + +import 'package:webview_flutter/webview_flutter.dart'; +import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; + +final Completer _controller = Completer(); + +class DummyPlatformView extends StatelessWidget { + const DummyPlatformView({super.key}); + + @override + Widget build(BuildContext context) { + // This is used in the platform side to register the view. + const String viewType = 'dummy_platform_view'; + // Pass parameters to the platform side. + final Map creationParams = {}; + + return UiKitView( + viewType: viewType, + layoutDirection: TextDirection.ltr, + creationParams: creationParams, + creationParamsCodec: const StandardMessageCodec(), + ); + } +} + +Widget boilerplate() { + return MaterialApp( + home: Scaffold( + body: const DummyPlatformView(), + floatingActionButton: FloatingActionButton( + child: Container( + child: PointerInterceptorPluginIOS().buildWidget(child: Container()), + ), + onPressed: () {}), + )); +} + +Future injectTouchListener() async { + final WebViewController controller = await _controller.future; + controller.evaluateJavascript( + "document.addEventListener('touchstart', (event) => { Log.postMessage(String(event)); }, true);"); +} + +void main() { + testWidgets('Setting parentNode determines focus tree hierarchy.', + (WidgetTester tester) async { + await tester.pumpWidget(boilerplate()); + await tester.pump(); +// Test by adding a new html element when clicked? + }); +} diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/.gitignore b/packages/pointer_interceptor/pointer_interceptor_platform_interface/.gitignore new file mode 100644 index 00000000000..ac5aa9893e4 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/.gitignore @@ -0,0 +1,29 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +build/ diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/.metadata b/packages/pointer_interceptor/pointer_interceptor_platform_interface/.metadata new file mode 100644 index 00000000000..88292defa87 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "969911d1d09d6c4f145e9ce27c08093e8c285561" + channel: "main" + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: ios + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md new file mode 100644 index 00000000000..41cc7d8192e --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE new file mode 100644 index 00000000000..ba75c69f7f2 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md b/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md new file mode 100644 index 00000000000..4f537878c48 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md @@ -0,0 +1,15 @@ +# pointer_interceptor_platform_interface + +A new Flutter plugin project. + +## Getting Started + +This project is a starting point for a Flutter +[plug-in package](https://flutter.dev/developing-packages/), +a specialized package that includes platform-specific implementation code for +Android and/or iOS. + +For help getting started with Flutter development, view the +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. + diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml new file mode 100644 index 00000000000..a5744c1cfbe --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore new file mode 100644 index 00000000000..0c885071e36 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore @@ -0,0 +1,38 @@ +.idea/ +.vagrant/ +.sconsign.dblite +.svn/ + +.DS_Store +*.swp +profile + +DerivedData/ +build/ +GeneratedPluginRegistrant.h +GeneratedPluginRegistrant.m + +.generated/ + +*.pbxuser +*.mode1v3 +*.mode2v3 +*.perspectivev3 + +!default.pbxuser +!default.mode1v3 +!default.mode2v3 +!default.perspectivev3 + +xcuserdata + +*.moved-aside + +*.pyc +*sync/ +Icon? +.tags* + +/Flutter/Generated.xcconfig +/Flutter/ephemeral/ +/Flutter/flutter_export_environment.sh \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Assets/.gitkeep b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Assets/.gitkeep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift new file mode 100644 index 00000000000..34f9128dd49 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift @@ -0,0 +1,19 @@ +import Flutter +import UIKit + +public class PointerInterceptorPlatformInterfacePlugin: NSObject, FlutterPlugin { + public static func register(with registrar: FlutterPluginRegistrar) { + let channel = FlutterMethodChannel(name: "pointer_interceptor_platform_interface", binaryMessenger: registrar.messenger()) + let instance = PointerInterceptorPlatformInterfacePlugin() + registrar.addMethodCallDelegate(instance, channel: channel) + } + + public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { + switch call.method { + case "getPlatformVersion": + result("iOS " + UIDevice.current.systemVersion) + default: + result(FlutterMethodNotImplemented) + } + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec new file mode 100644 index 00000000000..b5d534bcad0 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec @@ -0,0 +1,23 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint pointer_interceptor_platform_interface.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'pointer_interceptor_platform_interface' + s.version = '0.0.1' + s.summary = 'A new Flutter plugin project.' + s.description = <<-DESC +A new Flutter plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.platform = :ios, '11.0' + + # Flutter.framework does not contain a i386 slice. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' +end diff --git a/packages/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart similarity index 63% rename from packages/pointer_interceptor/lib/pointer_interceptor.dart rename to packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart index 4ca1499d3bd..cbc86c7b7b1 100644 --- a/packages/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart @@ -2,6 +2,4 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -library pointer_interceptor; - -export 'src/mobile.dart' if (dart.library.html) 'src/web.dart'; +export 'src/pointer_interceptor_platform.dart'; \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart new file mode 100644 index 00000000000..713ff9cf09d --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart @@ -0,0 +1,16 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/widgets.dart'; + +import 'pointer_interceptor_platform.dart'; + +/// An implementation of [PointerInterceptorPlatform] that uses method channels. +class MethodChannelPointerInterceptor extends PointerInterceptorPlatform { + @override + Widget buildWidget( + {required child, bool intercepting = true, bool debug = false, key}) { + throw UnimplementedError('buildWidget() has not been implemented.'); + } +} \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart new file mode 100644 index 00000000000..a93b7d741a8 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -0,0 +1,40 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/widgets.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'pointer_interceptor_method_channel.dart'; + +abstract class PointerInterceptorPlatform extends PlatformInterface { + /// Constructs a PointerInterceptorPlatform. + PointerInterceptorPlatform() : super(token: _token); + + static final Object _token = Object(); + + static PointerInterceptorPlatform _instance = + MethodChannelPointerInterceptor(); + + /// The default instance of [PointerInterceptorPlatform] to use. + /// + /// Defaults to [MethodChannelPointerInterceptor]. + static PointerInterceptorPlatform get instance => _instance; + + /// Platform-specific implementations should set this with their own + /// platform-specific class that extends [PointerInterceptorPlatform] when + /// they register themselves. + static set instance(PointerInterceptorPlatform instance) { + PlatformInterface.verifyToken(instance, _token); + _instance = instance; + } + + Widget buildWidget({ + required Widget child, + bool intercepting = true, + bool debug = false, + Key? key, + }) { + throw UnimplementedError('buildWidget() has not been implemented.'); + } +} \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml new file mode 100644 index 00000000000..c2a9fe27e43 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -0,0 +1,69 @@ +name: pointer_interceptor_platform_interface +description: "A new Flutter plugin project." +version: 0.0.1 +homepage: + +environment: + sdk: '>=3.2.0-134.0.dev <4.0.0' + flutter: '>=3.3.0' + +dependencies: + flutter: + sdk: flutter + plugin_platform_interface: ^2.1.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +# For information on the generic Dart part of this file, see the +# following page: https://dart.dev/tools/pub/pubspec + +# The following section is specific to Flutter packages. +flutter: + # This section identifies this Flutter project as a plugin project. + # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.) + # which should be registered in the plugin registry. This is required for + # using method channels. + # The Android 'package' specifies package in which the registered class is. + # This is required for using method channels on Android. + # The 'ffiPlugin' specifies that native code should be built and bundled. + # This is required for using `dart:ffi`. + # All these are used by the tooling to maintain consistency when + # adding or updating assets for this project. + plugin: + platforms: + ios: + pluginClass: PointerInterceptorPlatformInterfacePlugin + + # To add assets to your plugin package, add an assets section, like this: + # assets: + # - images/a_dot_burr.jpeg + # - images/a_dot_ham.jpeg + # + # For details regarding assets in packages, see + # https://flutter.dev/assets-and-images/#from-packages + # + # An image asset can refer to one or more resolution-specific "variants", see + # https://flutter.dev/assets-and-images/#resolution-aware + + # To add custom fonts to your plugin package, add a fonts section here, + # in this "flutter" section. Each entry in this list should have a + # "family" key with the font family name, and a "fonts" key with a + # list giving the asset and other descriptors for the font. For + # example: + # fonts: + # - family: Schyler + # fonts: + # - asset: fonts/Schyler-Regular.ttf + # - asset: fonts/Schyler-Italic.ttf + # style: italic + # - family: Trajan Pro + # fonts: + # - asset: fonts/TrajanPro.ttf + # - asset: fonts/TrajanPro_Bold.ttf + # weight: 700 + # + # For details regarding fonts in packages, see + # https://flutter.dev/custom-fonts/#from-packages diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart new file mode 100644 index 00000000000..d6ff399d733 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart @@ -0,0 +1,27 @@ +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface_method_channel.dart'; + +void main() { + TestWidgetsFlutterBinding.ensureInitialized(); + + MethodChannelPointerInterceptorPlatformInterface platform = MethodChannelPointerInterceptorPlatformInterface(); + const MethodChannel channel = MethodChannel('pointer_interceptor_platform_interface'); + + setUp(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( + channel, + (MethodCall methodCall) async { + return '42'; + }, + ); + }); + + tearDown(() { + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(channel, null); + }); + + test('getPlatformVersion', () async { + expect(await platform.getPlatformVersion(), '42'); + }); +} diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart new file mode 100644 index 00000000000..0e1a726d64f --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart @@ -0,0 +1,29 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface_platform_interface.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface_method_channel.dart'; +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +class MockPointerInterceptorPlatformInterfacePlatform + with MockPlatformInterfaceMixin + implements PointerInterceptorPlatformInterfacePlatform { + + @override + Future getPlatformVersion() => Future.value('42'); +} + +void main() { + final PointerInterceptorPlatformInterfacePlatform initialPlatform = PointerInterceptorPlatformInterfacePlatform.instance; + + test('$MethodChannelPointerInterceptorPlatformInterface is the default instance', () { + expect(initialPlatform, isInstanceOf()); + }); + + test('getPlatformVersion', () async { + PointerInterceptorPlatformInterface pointerInterceptorPlatformInterfacePlugin = PointerInterceptorPlatformInterface(); + MockPointerInterceptorPlatformInterfacePlatform fakePlatform = MockPointerInterceptorPlatformInterfacePlatform(); + PointerInterceptorPlatformInterfacePlatform.instance = fakePlatform; + + expect(await pointerInterceptorPlatformInterfacePlugin.getPlatformVersion(), '42'); + }); +} From 6d3f6cad5a2785ce5e804cbd3bbcce917b5ef3ff Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 25 Oct 2023 16:44:00 -0700 Subject: [PATCH 02/52] fixed compiler error, move testing factory to runner, remove default usage for ios --- .../pointer_interceptor/pointer_interceptor/pubspec.yaml | 3 ++- .../example/ios/Runner.xcodeproj/project.pbxproj | 8 ++++---- .../example/ios/Runner/AppDelegate.swift | 8 ++++++++ .../ios/Classes => Runner}/DummyPlatformViewFactory.swift | 1 - .../ios/Classes/PointerInterceptorIosPlugin.swift | 4 ---- 5 files changed, 14 insertions(+), 10 deletions(-) rename packages/pointer_interceptor/pointer_interceptor_ios/example/ios/{.symlinks/plugins/pointer_interceptor_ios/ios/Classes => Runner}/DummyPlatformViewFactory.swift (93%) diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 444a6344a31..076b1052c1a 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -16,7 +16,8 @@ flutter: pluginClass: PointerInterceptorPlugin fileName: src/web.dart ios: - default_package: pointer_interceptor_ios + pluginClass: PointerInterceptorPlugin + fileName: src/mobile.dart dependencies: flutter: diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index ba64b192a5b..3cb22703930 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -16,9 +16,9 @@ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; CFB68197D52B546F94542F41 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */; }; - F21CC8562AE098D900E020D2 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21CC8552AE098D900E020D2 /* DummyPlatformViewFactory.swift */; }; F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; F243D6132AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */; }; + F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -75,10 +75,10 @@ 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 9978D0D01D3549F3784C2F44 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - F21CC8552AE098D900E020D2 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DummyPlatformViewFactory.swift; path = ../.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITestsLaunchTests.swift; sourceTree = ""; }; + F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -168,6 +168,7 @@ 97C147021CF9000F007C117D /* Info.plist */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, ); @@ -192,7 +193,6 @@ children = ( F243D6102AE053F700F4A2FC /* RunnerUITests.swift */, F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */, - F21CC8552AE098D900E020D2 /* DummyPlatformViewFactory.swift */, ); path = RunnerUITests; sourceTree = ""; @@ -440,6 +440,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */, 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); @@ -451,7 +452,6 @@ files = ( F243D6132AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift in Sources */, F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */, - F21CC8562AE098D900E020D2 /* DummyPlatformViewFactory.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift index 70693e4a8c1..223b108ad01 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift @@ -8,6 +8,14 @@ import Flutter didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) + + weak var registrar = self.registrar(forPlugin: "DummyPlatform"); + + let factory = DummyPlatformViewFactory(messenger: registrar!.messenger()) + self.registrar(forPlugin: "")!.register( + factory, + withId: "dummy_platform_view") + return super.application(application, didFinishLaunchingWithOptions: launchOptions) } } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift similarity index 93% rename from packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift rename to packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift index ee9a2b1eb14..e41f164246e 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/.symlinks/plugins/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift @@ -21,7 +21,6 @@ public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { binaryMessenger: messenger) } - /// Implementing this method is only necessary when the `arguments` in `createWithFrame` is not `nil`. public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { return FlutterStandardMessageCodec.sharedInstance() } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift index 8b456937e25..d2450b96210 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift @@ -7,10 +7,6 @@ import UIKit public class PointerInterceptorIosPlugin: NSObject, FlutterPlugin { public static func register(with registrar: FlutterPluginRegistrar) { registrar.register(PointerInterceptorFactory(), withId: "plugins.flutter.dev/pointer_interceptor_ios") - let instance = PointerInterceptorIosPlugin() - - let factory = DummyPlatformViewFactory(messenger: registrar.messenger()) - registrar.register(factory, withId: "dummy_platform_view") } public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { From f16a10b87c7a54f814f27dfd81baa95a5f0c6651 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 30 Oct 2023 15:40:27 -0700 Subject: [PATCH 03/52] clean up, remove dependency on ios version --- .../lib/pointer_interceptor.dart | 5 +- .../pointer_interceptor/lib/src/mobile.dart | 34 +++++++++ .../lib/src/pointer_interceptor_widget.dart | 1 + .../pointer_interceptor/lib/src/web.dart | 49 ++++--------- .../pointer_interceptor/pubspec.yaml | 10 ++- .../example/lib/main.dart | 2 +- .../Classes/DummyPlatformViewFactory.swift | 69 ------------------- .../lib/pointer_interceptor_ios.dart | 7 +- .../pointer_interceptor_ios/pubspec.yaml | 2 +- .../test/pointer_interceptor_ios_test.dart | 2 +- ...ointer_interceptor_platform_interface.dart | 6 +- .../pointer_interceptor_method_channel.dart | 2 +- .../lib/src/pointer_interceptor_platform.dart | 18 +++-- .../pubspec.yaml | 48 ------------- 14 files changed, 74 insertions(+), 181 deletions(-) create mode 100644 packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart index 6384d7c3225..882710c84b8 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -6,7 +6,6 @@ library pointer_interceptor; import 'package:flutter/widgets.dart'; import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; +// export 'src/mobile.dart' if (dart.library.html) 'src/web.dart'; -// export 'src/web.dart'; - -part 'src/pointer_interceptor_widget.dart'; \ No newline at end of file +// part 'src/pointer_interceptor_widget.dart'; \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart new file mode 100644 index 00000000000..49d4225265e --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart @@ -0,0 +1,34 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter/widgets.dart'; + +/// A [Widget] that prevents clicks from being swallowed by [HtmlElementView]s. +class PointerInterceptor extends StatelessWidget { + /// Create a `PointerInterceptor` wrapping a `child`. + // ignore: prefer_const_constructors_in_immutables + PointerInterceptor({ + required this.child, + this.intercepting = true, + this.debug = false, + super.key, + }); + + /// The `Widget` that is being wrapped by this `PointerInterceptor`. + final Widget child; + + /// Whether or not this `PointerInterceptor` should intercept pointer events. + final bool intercepting; + + /// When true, the widget renders with a semi-transparent red background, for debug purposes. + /// + /// This is useful when rendering this as a "layout" widget, like the root child + /// of a `Drawer`. + final bool debug; + + @override + Widget build(BuildContext context) { + return child; + } +} \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart index 79d562d0159..19ee8753c1b 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart @@ -29,6 +29,7 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { + print(PointerInterceptorPlatform.instance.runtimeType); return PointerInterceptorPlatform.instance.buildWidget( child: child, intercepting: intercepting, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart index e0dbcf904ff..721ffd0c754 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart @@ -7,6 +7,8 @@ import 'dart:html' as html; import 'dart:ui_web' as ui_web; import 'package:flutter/widgets.dart'; +import 'package:pointer_interceptor_platform_interface/src/pointer_interceptor_platform.dart'; + const String _viewType = '__webPointerInterceptorViewType__'; const String _debug = 'debug__'; @@ -33,51 +35,24 @@ void _registerFactory({bool debug = false}) { /// The web implementation of the `PointerInterceptor` widget. /// /// A `Widget` that prevents clicks from being swallowed by [HtmlElementView]s. -class PointerInterceptor extends StatelessWidget { - /// Creates a PointerInterceptor for the web. - PointerInterceptor({ - required this.child, - this.intercepting = true, - this.debug = false, - super.key, - }) { - if (!_registered) { - _register(); - } +class PointerInterceptorWeb extends PointerInterceptorPlatform { + static void registerWith() { + PointerInterceptorPlatform.instance = PointerInterceptorWeb(); } - /// The `Widget` that is being wrapped by this `PointerInterceptor`. - final Widget child; - - /// Whether or not this `PointerInterceptor` should intercept pointer events. - final bool intercepting; - - /// When true, the widget renders with a semi-transparent red background, for debug purposes. - /// - /// This is useful when rendering this as a "layout" widget, like the root child - /// of a [Drawer]. - final bool debug; - - // Keeps track if this widget has already registered its view factories or not. - static bool _registered = false; - - // Registers the view factories for the interceptor widgets. - static void _register() { - assert(!_registered); - - _registerFactory(); - _registerFactory(debug: true); + @override + Widget buildWidget( + {required Widget child, + bool intercepting = true, + bool debug = false, + Key? key}) { - _registered = true; - } + final String viewType = _getViewType(debug: debug); - @override - Widget build(BuildContext context) { if (!intercepting) { return child; } - final String viewType = _getViewType(debug: debug); return Stack( alignment: Alignment.center, children: [ diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 076b1052c1a..f92492d87e5 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -13,19 +13,15 @@ flutter: implements: pointer_interceptor_platform_interface platforms: web: - pluginClass: PointerInterceptorPlugin - fileName: src/web.dart + default_package: ./src/web.dart ios: - pluginClass: PointerInterceptorPlugin - fileName: src/mobile.dart + default_package: ./src/mobile.dart dependencies: flutter: sdk: flutter pointer_interceptor_platform_interface: path: ../pointer_interceptor_platform_interface - pointer_interceptor_ios: - path: ../pointer_interceptor_ios flutter_web_plugins: sdk: flutter @@ -35,6 +31,8 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter +# pointer_interceptor_ios: +# path: ../pointer_interceptor_ios topics: - diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 1fa4ffe57f3..6a356b428b8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -50,7 +50,7 @@ class PointerInterceptorIOSExampleState alignment: AlignmentDirectional.center, children: [ const DummyPlatformView(), - PointerInterceptorPluginIOS().buildWidget( + PointerInterceptorIOSPlugin().buildWidget( debug: true, child: TextButton( style: TextButton.styleFrom(foregroundColor: Colors.red), diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift deleted file mode 100644 index ee9a2b1eb14..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/DummyPlatformViewFactory.swift +++ /dev/null @@ -1,69 +0,0 @@ -import Flutter -import UIKit - -public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { - private var messenger: FlutterBinaryMessenger - - init(messenger: FlutterBinaryMessenger) { - self.messenger = messenger - super.init() - } - - public func create( - withFrame frame: CGRect, - viewIdentifier viewId: Int64, - arguments args: Any? - ) -> FlutterPlatformView { - return DummyPlatformView( - frame: frame, - viewIdentifier: viewId, - arguments: args, - binaryMessenger: messenger) - } - - /// Implementing this method is only necessary when the `arguments` in `createWithFrame` is not `nil`. - public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { - return FlutterStandardMessageCodec.sharedInstance() - } -} - -public class CustomView: UIView { - - override public func hitTest( - _ point: CGPoint, - with event: UIEvent? - ) -> UIView? { - print("clicked") - - viewWithTag(1)?.removeFromSuperview(); - return super.hitTest(point, with: event) - } -} - -class DummyPlatformView: NSObject, FlutterPlatformView { - private var _view: CustomView; - - init( - frame: CGRect, - viewIdentifier viewId: Int64, - arguments args: Any?, - binaryMessenger messenger: FlutterBinaryMessenger? - ) { - _view = CustomView() - super.init() - createNativeView(view: _view) - } - - func view() -> UIView { - return _view - } - - func createNativeView(view _view: CustomView){ - let nativeLabel = UILabel() - _view.isUserInteractionEnabled = true - nativeLabel.tag = 1; - nativeLabel.text = "Not Clicked" - nativeLabel.frame = CGRect(x: 0, y: 0, width: 180, height: 48.0) - _view.addSubview(nativeLabel) - } -} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index b5ca4139533..a305526d898 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -4,12 +4,13 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/services.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; +import 'package:pointer_interceptor_platform_interface/src/pointer_interceptor_platform.dart'; /// The iOS implementation of the [PointerInterceptorPlatform] -class PointerInterceptorPluginIOS extends PointerInterceptorPlatform { +class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { static void registerWith() { - PointerInterceptorPlatform.instance = PointerInterceptorPluginIOS(); + // platformViewRegistry.registerViewFactory('plugins.flutter.dev/pointer_interceptor_ios', viewFactory) + PointerInterceptorPlatform.instance = PointerInterceptorIOSPlugin(); } @override diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index 1ca969c078e..b1790647879 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -14,7 +14,7 @@ flutter: platforms: ios: pluginClass: PointerInterceptorIosPlugin - dartPluginClass: PointerInterceptorPluginIOS + dartPluginClass: PointerInterceptorIOSPlugin dependencies: flutter: diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 5a69d2f5036..e5c1314709b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -35,7 +35,7 @@ Widget boilerplate() { body: const DummyPlatformView(), floatingActionButton: FloatingActionButton( child: Container( - child: PointerInterceptorPluginIOS().buildWidget(child: Container()), + child: PointerInterceptorIOSPlugin().buildWidget(child: Container()), ), onPressed: () {}), )); diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart index cbc86c7b7b1..73018963650 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart @@ -1,5 +1,3 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. +library pointer_interceptor; -export 'src/pointer_interceptor_platform.dart'; \ No newline at end of file +export 'src/pointer_interceptor_platform.dart'; diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart index 713ff9cf09d..4434ac5775a 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart @@ -7,7 +7,7 @@ import 'package:flutter/widgets.dart'; import 'pointer_interceptor_platform.dart'; /// An implementation of [PointerInterceptorPlatform] that uses method channels. -class MethodChannelPointerInterceptor extends PointerInterceptorPlatform { +class PlaceholderPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget( {required child, bool intercepting = true, bool debug = false, key}) { diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index a93b7d741a8..dc5f9d6b9d5 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -13,22 +13,26 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { static final Object _token = Object(); - static PointerInterceptorPlatform _instance = - MethodChannelPointerInterceptor(); - /// The default instance of [PointerInterceptorPlatform] to use. /// - /// Defaults to [MethodChannelPointerInterceptor]. - static PointerInterceptorPlatform get instance => _instance; + /// Defaults to [PlaceholderPointerInterceptor]. + static PointerInterceptorPlatform _instance = PlaceholderPointerInterceptor(); /// Platform-specific implementations should set this with their own /// platform-specific class that extends [PointerInterceptorPlatform] when /// they register themselves. - static set instance(PointerInterceptorPlatform instance) { - PlatformInterface.verifyToken(instance, _token); + static set instance(PointerInterceptorPlatform? instance) { + if (instance == null) { + throw AssertionError( + 'Platform interfaces can only be set to a non-null instance'); + } + + PlatformInterface.verify(instance, _token); _instance = instance; } + static PointerInterceptorPlatform get instance => _instance; + Widget buildWidget({ required Widget child, bool intercepting = true, diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index c2a9fe27e43..94ffc7e5e20 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -19,51 +19,3 @@ dev_dependencies: # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. -flutter: - # This section identifies this Flutter project as a plugin project. - # The 'pluginClass' specifies the class (in Java, Kotlin, Swift, Objective-C, etc.) - # which should be registered in the plugin registry. This is required for - # using method channels. - # The Android 'package' specifies package in which the registered class is. - # This is required for using method channels on Android. - # The 'ffiPlugin' specifies that native code should be built and bundled. - # This is required for using `dart:ffi`. - # All these are used by the tooling to maintain consistency when - # adding or updating assets for this project. - plugin: - platforms: - ios: - pluginClass: PointerInterceptorPlatformInterfacePlugin - - # To add assets to your plugin package, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - # - # For details regarding assets in packages, see - # https://flutter.dev/assets-and-images/#from-packages - # - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - - # To add custom fonts to your plugin package, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts in packages, see - # https://flutter.dev/custom-fonts/#from-packages From 09fa93f434fb0edbdb65f3c3877329dbef14a428 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 30 Oct 2023 15:45:23 -0700 Subject: [PATCH 04/52] remove extraneous files in platform interface --- .../ios/Runner.xcodeproj/project.pbxproj | 4 -- .../ios/Runner/DummyPlatformViewFactory.swift | 2 - .../ios/.gitignore | 38 ------------------- .../ios/Assets/.gitkeep | 0 ...erInterceptorPlatformInterfacePlugin.swift | 19 ---------- ...ter_interceptor_platform_interface.podspec | 23 ----------- 6 files changed, 86 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Assets/.gitkeep delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 3cb22703930..a61c13c4b2b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -17,7 +17,6 @@ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; CFB68197D52B546F94542F41 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */; }; F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; - F243D6132AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ @@ -77,7 +76,6 @@ 9978D0D01D3549F3784C2F44 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; - F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITestsLaunchTests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -192,7 +190,6 @@ isa = PBXGroup; children = ( F243D6102AE053F700F4A2FC /* RunnerUITests.swift */, - F243D6122AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift */, ); path = RunnerUITests; sourceTree = ""; @@ -450,7 +447,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F243D6132AE053F700F4A2FC /* RunnerUITestsLaunchTests.swift in Sources */, F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift index e41f164246e..10ce21526d6 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift @@ -32,8 +32,6 @@ public class CustomView: UIView { _ point: CGPoint, with event: UIEvent? ) -> UIView? { - print("clicked") - viewWithTag(1)?.removeFromSuperview(); return super.hitTest(point, with: event) } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore deleted file mode 100644 index 0c885071e36..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/.gitignore +++ /dev/null @@ -1,38 +0,0 @@ -.idea/ -.vagrant/ -.sconsign.dblite -.svn/ - -.DS_Store -*.swp -profile - -DerivedData/ -build/ -GeneratedPluginRegistrant.h -GeneratedPluginRegistrant.m - -.generated/ - -*.pbxuser -*.mode1v3 -*.mode2v3 -*.perspectivev3 - -!default.pbxuser -!default.mode1v3 -!default.mode2v3 -!default.perspectivev3 - -xcuserdata - -*.moved-aside - -*.pyc -*sync/ -Icon? -.tags* - -/Flutter/Generated.xcconfig -/Flutter/ephemeral/ -/Flutter/flutter_export_environment.sh \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Assets/.gitkeep b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Assets/.gitkeep deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift deleted file mode 100644 index 34f9128dd49..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/Classes/PointerInterceptorPlatformInterfacePlugin.swift +++ /dev/null @@ -1,19 +0,0 @@ -import Flutter -import UIKit - -public class PointerInterceptorPlatformInterfacePlugin: NSObject, FlutterPlugin { - public static func register(with registrar: FlutterPluginRegistrar) { - let channel = FlutterMethodChannel(name: "pointer_interceptor_platform_interface", binaryMessenger: registrar.messenger()) - let instance = PointerInterceptorPlatformInterfacePlugin() - registrar.addMethodCallDelegate(instance, channel: channel) - } - - public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { - switch call.method { - case "getPlatformVersion": - result("iOS " + UIDevice.current.systemVersion) - default: - result(FlutterMethodNotImplemented) - } - } -} diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec b/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec deleted file mode 100644 index b5d534bcad0..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/ios/pointer_interceptor_platform_interface.podspec +++ /dev/null @@ -1,23 +0,0 @@ -# -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint pointer_interceptor_platform_interface.podspec` to validate before publishing. -# -Pod::Spec.new do |s| - s.name = 'pointer_interceptor_platform_interface' - s.version = '0.0.1' - s.summary = 'A new Flutter plugin project.' - s.description = <<-DESC -A new Flutter plugin project. - DESC - s.homepage = 'http://example.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Your Company' => 'email@example.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.dependency 'Flutter' - s.platform = :ios, '11.0' - - # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } - s.swift_version = '5.0' -end From f04c392234612ba42b5391e53c5eb5f9499b898d Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 30 Oct 2023 16:01:01 -0700 Subject: [PATCH 05/52] unused exports --- .../pointer_interceptor/lib/pointer_interceptor.dart | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart index 882710c84b8..4525f30bf4d 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -5,7 +5,4 @@ library pointer_interceptor; import 'package:flutter/widgets.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; -// export 'src/mobile.dart' if (dart.library.html) 'src/web.dart'; - -// part 'src/pointer_interceptor_widget.dart'; \ No newline at end of file +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; \ No newline at end of file From 6c610b9c526c1833559e21ec0ab55956bc19a0ad Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 30 Oct 2023 16:06:58 -0700 Subject: [PATCH 06/52] update versioning + changelog --- packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md | 3 +++ packages/pointer_interceptor/pointer_interceptor/pubspec.yaml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md index 3a66b061ff7..2d0db0914cd 100644 --- a/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md @@ -1,3 +1,6 @@ +## 0.9.4 +* Add iOS implementation + ## 0.9.3+6 * Migrates to `dart:ui_web` APIs. diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index f92492d87e5..8fe13f7742c 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -2,7 +2,7 @@ name: pointer_interceptor description: A widget to prevent clicks from being swallowed by underlying HtmlElementViews on the web. repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+pointer_interceptor%22 -version: 0.9.3+6 +version: 0.9.4 environment: sdk: ">=3.1.0 <4.0.0" From 736b4b10e5784dede50cb546db56c21bacb1c98b Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 10:29:52 -0700 Subject: [PATCH 07/52] fix yaml issue --- packages/pointer_interceptor/pointer_interceptor/pubspec.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 8fe13f7742c..e29eab3c7de 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -35,6 +35,5 @@ dev_dependencies: # path: ../pointer_interceptor_ios topics: - - - web - widgets \ No newline at end of file From badba67518943d7527bd72b4b651c5d810e3efb2 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 10:49:23 -0700 Subject: [PATCH 08/52] fix example --- .../pointer_interceptor/example/lib/main.dart | 1 - .../pointer_interceptor/lib/pointer_interceptor.dart | 6 ++++-- .../pointer_interceptor/lib/src/web.dart | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart index 74f632a6023..dfa2bafd84d 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart @@ -8,7 +8,6 @@ import 'dart:ui_web' as ui_web; import 'package:flutter/material.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; - const String _htmlElementViewType = '_htmlElementViewType'; const double _videoWidth = 640; const double _videoHeight = 480; diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart index 4525f30bf4d..8ef25110de3 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -4,5 +4,7 @@ library pointer_interceptor; -import 'package:flutter/widgets.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; \ No newline at end of file +export 'package:pointer_interceptor/pointer_interceptor.dart'; +export 'package:pointer_interceptor/src/mobile.dart'; +export 'package:pointer_interceptor/src/web.dart'; +export 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart index 721ffd0c754..2adf54df5e2 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart @@ -35,9 +35,9 @@ void _registerFactory({bool debug = false}) { /// The web implementation of the `PointerInterceptor` widget. /// /// A `Widget` that prevents clicks from being swallowed by [HtmlElementView]s. -class PointerInterceptorWeb extends PointerInterceptorPlatform { +class PointerInterceptor extends PointerInterceptorPlatform { static void registerWith() { - PointerInterceptorPlatform.instance = PointerInterceptorWeb(); + PointerInterceptorPlatform.instance = PointerInterceptor(); } @override From 8c979d2eb19167ad3acaf2ea73b3868582056b3b Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 11:35:31 -0700 Subject: [PATCH 09/52] fix imports --- .../pointer_interceptor/lib/pointer_interceptor.dart | 10 +++++++--- ...nterceptor_widget.dart => pointer_interceptor.dart} | 4 ++-- .../integration_test/plugin_integration_test.dart | 2 +- 3 files changed, 10 insertions(+), 6 deletions(-) rename packages/pointer_interceptor/pointer_interceptor/lib/src/{pointer_interceptor_widget.dart => pointer_interceptor.dart} (89%) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart index 8ef25110de3..5e6e3325315 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -4,7 +4,11 @@ library pointer_interceptor; -export 'package:pointer_interceptor/pointer_interceptor.dart'; -export 'package:pointer_interceptor/src/mobile.dart'; -export 'package:pointer_interceptor/src/web.dart'; +import 'dart:html' as html; +import 'dart:ui_web' as ui_web; + +import 'package:flutter/widgets.dart'; +export 'package:pointer_interceptor/src/pointer_interceptor.dart'; +// export 'package:pointer_interceptor/src/mobile.dart'; +// export 'package:pointer_interceptor/src/web.dart'; export 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart similarity index 89% rename from packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart rename to packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index 19ee8753c1b..bc545a0d243 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_widget.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -2,7 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -part of pointer_interceptor; +import 'package:flutter/widgets.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; /// A [Widget] that prevents clicks from being swallowed by PlatformViews. class PointerInterceptor extends StatelessWidget { @@ -29,7 +30,6 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { - print(PointerInterceptorPlatform.instance.runtimeType); return PointerInterceptorPlatform.instance.buildWidget( child: child, intercepting: intercepting, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart index 08d166cbd4b..c01413cabaa 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart @@ -16,7 +16,7 @@ void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); testWidgets('getPlatformVersion test', (WidgetTester tester) async { - final PointerInterceptorIos plugin = PointerInterceptorIos(); + final PointerInterceptorIOSPlugin plugin = PointerInterceptorIOSPlugin(); final String? version = await plugin.getPlatformVersion(); // The version string depends on the host platform running the test, so // just assert that some non-empty string is returned. From 7af12bb1a255c38e9066b5dd32d29197b7ac7d51 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 13:42:56 -0700 Subject: [PATCH 10/52] some more clean up, formatting --- .../lib/pointer_interceptor.dart | 8 +------ .../pointer_interceptor/lib/src/mobile.dart | 2 +- .../lib/src/pointer_interceptor.dart | 2 +- .../pointer_interceptor/lib/src/web.dart | 21 ++----------------- .../lib/pointer_interceptor_ios.dart | 3 +-- 5 files changed, 6 insertions(+), 30 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart index 5e6e3325315..ba15650c46e 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -4,11 +4,5 @@ library pointer_interceptor; -import 'dart:html' as html; -import 'dart:ui_web' as ui_web; - -import 'package:flutter/widgets.dart'; export 'package:pointer_interceptor/src/pointer_interceptor.dart'; -// export 'package:pointer_interceptor/src/mobile.dart'; -// export 'package:pointer_interceptor/src/web.dart'; -export 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; \ No newline at end of file +export 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart index 49d4225265e..8d645ffbcfe 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart @@ -31,4 +31,4 @@ class PointerInterceptor extends StatelessWidget { Widget build(BuildContext context) { return child; } -} \ No newline at end of file +} diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index bc545a0d243..3bb49715085 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -33,4 +33,4 @@ class PointerInterceptor extends StatelessWidget { return PointerInterceptorPlatform.instance.buildWidget( child: child, intercepting: intercepting, debug: debug, key: key); } -} \ No newline at end of file +} diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart index 2adf54df5e2..4bb9a4461ec 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart @@ -2,13 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// ignore: avoid_web_libraries_in_flutter -import 'dart:html' as html; -import 'dart:ui_web' as ui_web; - import 'package:flutter/widgets.dart'; -import 'package:pointer_interceptor_platform_interface/src/pointer_interceptor_platform.dart'; +import '../pointer_interceptor.dart'; const String _viewType = '__webPointerInterceptorViewType__'; const String _debug = 'debug__'; @@ -18,24 +14,11 @@ String _getViewType({bool debug = false}) { return debug ? _viewType + _debug : _viewType; } -// Registers a viewFactory for this widget. -void _registerFactory({bool debug = false}) { - final String viewType = _getViewType(debug: debug); - ui_web.platformViewRegistry.registerViewFactory(viewType, (int viewId) { - final html.Element htmlElement = html.DivElement() - ..style.width = '100%' - ..style.height = '100%'; - if (debug) { - htmlElement.style.backgroundColor = 'rgba(255, 0, 0, .5)'; - } - return htmlElement; - }, isVisible: false); -} - /// The web implementation of the `PointerInterceptor` widget. /// /// A `Widget` that prevents clicks from being swallowed by [HtmlElementView]s. class PointerInterceptor extends PointerInterceptorPlatform { + /// Register the plugin static void registerWith() { PointerInterceptorPlatform.instance = PointerInterceptor(); } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index a305526d898..d7850305567 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -4,12 +4,11 @@ import 'package:flutter/widgets.dart'; import 'package:flutter/services.dart'; -import 'package:pointer_interceptor_platform_interface/src/pointer_interceptor_platform.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; /// The iOS implementation of the [PointerInterceptorPlatform] class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { static void registerWith() { - // platformViewRegistry.registerViewFactory('plugins.flutter.dev/pointer_interceptor_ios', viewFactory) PointerInterceptorPlatform.instance = PointerInterceptorIOSPlugin(); } From 276461cc6509bca4a2544a7a0eacb0422b597fdf Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 14:00:31 -0700 Subject: [PATCH 11/52] add publish_to none --- .../pointer_interceptor/pointer_interceptor/pubspec.yaml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index e29eab3c7de..fce71fe8838 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -3,6 +3,7 @@ description: A widget to prevent clicks from being swallowed by underlying HtmlE repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+pointer_interceptor%22 version: 0.9.4 +publish_to: none environment: sdk: ">=3.1.0 <4.0.0" @@ -20,10 +21,10 @@ flutter: dependencies: flutter: sdk: flutter - pointer_interceptor_platform_interface: - path: ../pointer_interceptor_platform_interface flutter_web_plugins: sdk: flutter + pointer_interceptor_platform_interface: + path: ../pointer_interceptor_platform_interface # flutter_web_plugins: # sdk: flutter From bda687016878c701cc27eb0d812507f78a306751 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 14:13:18 -0700 Subject: [PATCH 12/52] remove extra analysis_options --- .../pointer_interceptor_ios/analysis_options.yaml | 4 ---- .../analysis_options.yaml | 4 ---- 2 files changed, 8 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml deleted file mode 100644 index a5744c1cfbe..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: package:flutter_lints/flutter.yaml - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml deleted file mode 100644 index a5744c1cfbe..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: package:flutter_lints/flutter.yaml - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options From 29a3cc158ec00de50029623d1b89d3d42050d630 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 14:50:21 -0700 Subject: [PATCH 13/52] update platform interface pubspec.yaml --- .../pubspec.yaml | 3 +- ...latform_interface_method_channel_test.dart | 27 ----------------- ...r_interceptor_platform_interface_test.dart | 29 ------------------- 3 files changed, 1 insertion(+), 58 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart delete mode 100644 packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index 94ffc7e5e20..08531e1844d 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -1,7 +1,6 @@ name: pointer_interceptor_platform_interface description: "A new Flutter plugin project." version: 0.0.1 -homepage: environment: sdk: '>=3.2.0-134.0.dev <4.0.0' @@ -13,9 +12,9 @@ dependencies: plugin_platform_interface: ^2.1.0 dev_dependencies: + flutter_lints: ^2.0.0 flutter_test: sdk: flutter - flutter_lints: ^2.0.0 # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart deleted file mode 100644 index d6ff399d733..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_method_channel_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface_method_channel.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - - MethodChannelPointerInterceptorPlatformInterface platform = MethodChannelPointerInterceptorPlatformInterface(); - const MethodChannel channel = MethodChannel('pointer_interceptor_platform_interface'); - - setUp(() { - TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( - channel, - (MethodCall methodCall) async { - return '42'; - }, - ); - }); - - tearDown(() { - TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(channel, null); - }); - - test('getPlatformVersion', () async { - expect(await platform.getPlatformVersion(), '42'); - }); -} diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart deleted file mode 100644 index 0e1a726d64f..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/test/pointer_interceptor_platform_interface_test.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:flutter_test/flutter_test.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface_platform_interface.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface_method_channel.dart'; -import 'package:plugin_platform_interface/plugin_platform_interface.dart'; - -class MockPointerInterceptorPlatformInterfacePlatform - with MockPlatformInterfaceMixin - implements PointerInterceptorPlatformInterfacePlatform { - - @override - Future getPlatformVersion() => Future.value('42'); -} - -void main() { - final PointerInterceptorPlatformInterfacePlatform initialPlatform = PointerInterceptorPlatformInterfacePlatform.instance; - - test('$MethodChannelPointerInterceptorPlatformInterface is the default instance', () { - expect(initialPlatform, isInstanceOf()); - }); - - test('getPlatformVersion', () async { - PointerInterceptorPlatformInterface pointerInterceptorPlatformInterfacePlugin = PointerInterceptorPlatformInterface(); - MockPointerInterceptorPlatformInterfacePlatform fakePlatform = MockPointerInterceptorPlatformInterfacePlatform(); - PointerInterceptorPlatformInterfacePlatform.instance = fakePlatform; - - expect(await pointerInterceptorPlatformInterfacePlugin.getPlatformVersion(), '42'); - }); -} From 78aa1e32a924b7e4bb4bbf4b776101560ee6306c Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 15:19:02 -0700 Subject: [PATCH 14/52] add public member comments, renaming --- .../src/pointer_interceptor_method_channel.dart | 6 +++--- .../lib/src/pointer_interceptor_platform.dart | 15 +++++++++------ 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart index 4434ac5775a..b005fe3210d 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart @@ -6,11 +6,11 @@ import 'package:flutter/widgets.dart'; import 'pointer_interceptor_platform.dart'; -/// An implementation of [PointerInterceptorPlatform] that uses method channels. +/// A defailt implementation of [PointerInterceptorPlatform]. class PlaceholderPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget( - {required child, bool intercepting = true, bool debug = false, key}) { + {required Widget child, bool intercepting = true, bool debug = false, Key? key}) { throw UnimplementedError('buildWidget() has not been implemented.'); } -} \ No newline at end of file +} diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index dc5f9d6b9d5..0949ef0ffaf 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -7,20 +7,21 @@ import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import 'pointer_interceptor_method_channel.dart'; +/// Platform-specific implementations should set this with their own +/// platform-specific class that extends [PointerInterceptorPlatform] when +/// they register themselves. abstract class PointerInterceptorPlatform extends PlatformInterface { + /// Constructs a PointerInterceptorPlatform. PointerInterceptorPlatform() : super(token: _token); static final Object _token = Object(); - /// The default instance of [PointerInterceptorPlatform] to use. - /// - /// Defaults to [PlaceholderPointerInterceptor]. static PointerInterceptorPlatform _instance = PlaceholderPointerInterceptor(); - /// Platform-specific implementations should set this with their own - /// platform-specific class that extends [PointerInterceptorPlatform] when - /// they register themselves. + /// The default instance of [PointerInterceptorPlatform] to use. + /// + /// Defaults to [PlaceholderPointerInterceptor], which does not do anything static set instance(PointerInterceptorPlatform? instance) { if (instance == null) { throw AssertionError( @@ -33,6 +34,8 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { static PointerInterceptorPlatform get instance => _instance; + /// Platform-specific implementations should override this function their own + /// implementation of a pointer interceptor widget. Widget buildWidget({ required Widget child, bool intercepting = true, From b9bc4198e5e9e64ccb08edda0e9a6352cbf52578 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 15:31:40 -0700 Subject: [PATCH 15/52] remove extraneous analysis files --- .../example/analysis_options.yaml | 28 ------------------- .../lib/src/pointer_interceptor_platform.dart | 8 +++--- 2 files changed, 4 insertions(+), 32 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml deleted file mode 100644 index 0d2902135ca..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/analysis_options.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# This file configures the analyzer, which statically analyzes Dart code to -# check for errors, warnings, and lints. -# -# The issues identified by the analyzer are surfaced in the UI of Dart-enabled -# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be -# invoked from the command line by running `flutter analyze`. - -# The following line activates a set of recommended lints for Flutter apps, -# packages, and plugins designed to encourage good coding practices. -include: package:flutter_lints/flutter.yaml - -linter: - # The lint rules applied to this project can be customized in the - # section below to disable rules from the `package:flutter_lints/flutter.yaml` - # included above or to enable additional rules. A list of all available lints - # and their documentation is published at https://dart.dev/lints. - # - # Instead of disabling a lint rule for the entire project in the - # section below, it can also be suppressed for a single line of code - # or a specific dart file by using the `// ignore: name_of_lint` and - # `// ignore_for_file: name_of_lint` syntax on the line or in the file - # producing the lint. - rules: - # avoid_print: false # Uncomment to disable the `avoid_print` rule - # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule - -# Additional information about this file can be found at -# https://dart.dev/guides/language/analysis-options diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index 0949ef0ffaf..3ec295f7de1 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -19,9 +19,6 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { static PointerInterceptorPlatform _instance = PlaceholderPointerInterceptor(); - /// The default instance of [PointerInterceptorPlatform] to use. - /// - /// Defaults to [PlaceholderPointerInterceptor], which does not do anything static set instance(PointerInterceptorPlatform? instance) { if (instance == null) { throw AssertionError( @@ -32,6 +29,9 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { _instance = instance; } + /// The default instance of [PointerInterceptorPlatform] to use. + /// + /// Defaults to [PlaceholderPointerInterceptor], which does not do anything static PointerInterceptorPlatform get instance => _instance; /// Platform-specific implementations should override this function their own @@ -44,4 +44,4 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { }) { throw UnimplementedError('buildWidget() has not been implemented.'); } -} \ No newline at end of file +} From f968902468af6be8f7ae3c4d9c7f126e218b3f8f Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 23:18:28 -0700 Subject: [PATCH 16/52] remove extra test files --- .../plugin_integration_test.dart | 25 -------- .../example/lib/main.dart | 29 +++++----- .../example/pubspec.yaml | 6 +- .../example/test/tests_exist_elsewhere.dart | 0 .../example/test/widget_test.dart | 27 --------- ...r_interceptor_ios_method_channel_test.dart | 27 --------- .../test/pointer_interceptor_ios_test.dart | 58 +------------------ 7 files changed, 17 insertions(+), 155 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart deleted file mode 100644 index c01413cabaa..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/plugin_integration_test.dart +++ /dev/null @@ -1,25 +0,0 @@ -// This is a basic Flutter integration test. -// -// Since integration tests run in a full Flutter application, they can interact -// with the host side of a plugin implementation, unlike Dart unit tests. -// -// For more information about Flutter integration tests, please see -// https://docs.flutter.dev/cookbook/testing/integration/introduction - - -import 'package:flutter_test/flutter_test.dart'; -import 'package:integration_test/integration_test.dart'; - -import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; - -void main() { - IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - - testWidgets('getPlatformVersion test', (WidgetTester tester) async { - final PointerInterceptorIOSPlugin plugin = PointerInterceptorIOSPlugin(); - final String? version = await plugin.getPlatformVersion(); - // The version string depends on the host platform running the test, so - // just assert that some non-empty string is returned. - expect(version?.isNotEmpty, true); - }); -} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 6a356b428b8..10278044733 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -1,22 +1,17 @@ import 'package:flutter/material.dart'; -import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; -import 'package:pointer_interceptor/pointer_interceptor.dart'; -import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; +import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; void main() { - // platformViewRegistry.registerViewFactory('plugins.flutter.dev/pointer_interceptor_ios', viewFactory) runApp(const MaterialApp(home: PointerInterceptorIOSExample())); } -class DummyPlatformView extends StatelessWidget { - const DummyPlatformView({super.key}); +class _DummyPlatformView extends StatelessWidget { + const _DummyPlatformView({super.key}); @override Widget build(BuildContext context) { - // This is used in the platform side to register the view. const String viewType = 'dummy_platform_view'; - // Pass parameters to the platform side. final Map creationParams = {}; return UiKitView( @@ -28,19 +23,21 @@ class DummyPlatformView extends StatelessWidget { } } +/// Example flutter app with a button overlaying the native view class PointerInterceptorIOSExample extends StatefulWidget { + /// Constructor const PointerInterceptorIOSExample({super.key}); @override State createState() { - return PointerInterceptorIOSExampleState(); + return _PointerInterceptorIOSExampleState(); } } -class PointerInterceptorIOSExampleState +class _PointerInterceptorIOSExampleState extends State { - var buttonTapped = false; + bool _buttonTapped = false; @override Widget build(BuildContext context) { @@ -49,17 +46,17 @@ class PointerInterceptorIOSExampleState child: Stack( alignment: AlignmentDirectional.center, children: [ - const DummyPlatformView(), + const _DummyPlatformView(), PointerInterceptorIOSPlugin().buildWidget( debug: true, child: TextButton( style: TextButton.styleFrom(foregroundColor: Colors.red), - child: buttonTapped - ? const Text("Tapped") - : const Text("Initial"), + child: _buttonTapped + ? const Text('Tapped') + : const Text('Initial'), onPressed: () { setState(() { - buttonTapped = !buttonTapped; + _buttonTapped = !_buttonTapped; }); })), ], diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml index e8e70021aa9..2326103bb65 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -14,8 +14,11 @@ environment: # the latest version available on pub.dev. To see which dependencies have newer # versions available, run `flutter pub outdated`. dependencies: + cupertino_icons: ^1.0.2 flutter: sdk: flutter + pointer_interceptor: + path: ../../pointer_interceptor/ pointer_interceptor_ios: # When depending on this package from a real application you should use: # pointer_interceptor_ios: ^x.y.z @@ -25,12 +28,9 @@ dependencies: path: ../../pointer_interceptor_ios pointer_interceptor_platform_interface: path: ../../pointer_interceptor_platform_interface - pointer_interceptor: - path: ../../pointer_interceptor/ # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. - cupertino_icons: ^1.0.2 shared_preferences: ^2.2.2 dev_dependencies: diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart new file mode 100644 index 00000000000..e69de29bb2d diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart deleted file mode 100644 index 04eab0ff51b..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/widget_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -// This is a basic Flutter widget test. -// -// To perform an interaction with a widget in your test, use the WidgetTester -// utility in the flutter_test package. For example, you can send tap and scroll -// gestures. You can also use WidgetTester to find child widgets in the widget -// tree, read text, and verify that the values of widget properties are correct. - -import 'package:flutter/material.dart'; -import 'package:flutter_test/flutter_test.dart'; - -import 'package:pointer_interceptor_ios_example/main.dart'; - -void main() { - testWidgets('Verify Platform version', (WidgetTester tester) async { - // Build our app and trigger a frame. - await tester.pumpWidget(const MyApp()); - - // Verify that platform version is retrieved. - expect( - find.byWidgetPredicate( - (Widget widget) => widget is Text && - widget.data!.startsWith('Running on:'), - ), - findsOneWidget, - ); - }); -} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart deleted file mode 100644 index fb0eba7cf8f..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_method_channel_test.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:pointer_interceptor_ios/pointer_interceptor_ios_method_channel.dart'; - -void main() { - TestWidgetsFlutterBinding.ensureInitialized(); - - MethodChannelPointerInterceptorIos platform = MethodChannelPointerInterceptorIos(); - const MethodChannel channel = MethodChannel('pointer_interceptor_ios'); - - setUp(() { - TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler( - channel, - (MethodCall methodCall) async { - return '42'; - }, - ); - }); - - tearDown(() { - TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger.setMockMethodCallHandler(channel, null); - }); - - test('getPlatformVersion', () async { - expect(await platform.getPlatformVersion(), '42'); - }); -} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index e5c1314709b..44188b4629d 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -1,57 +1 @@ -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'dart:async'; -import 'package:flutter/material.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; -// import 'package:pointer_interceptor/pointer_interceptor.dart'; - -import 'package:webview_flutter/webview_flutter.dart'; -import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; - -final Completer _controller = Completer(); - -class DummyPlatformView extends StatelessWidget { - const DummyPlatformView({super.key}); - - @override - Widget build(BuildContext context) { - // This is used in the platform side to register the view. - const String viewType = 'dummy_platform_view'; - // Pass parameters to the platform side. - final Map creationParams = {}; - - return UiKitView( - viewType: viewType, - layoutDirection: TextDirection.ltr, - creationParams: creationParams, - creationParamsCodec: const StandardMessageCodec(), - ); - } -} - -Widget boilerplate() { - return MaterialApp( - home: Scaffold( - body: const DummyPlatformView(), - floatingActionButton: FloatingActionButton( - child: Container( - child: PointerInterceptorIOSPlugin().buildWidget(child: Container()), - ), - onPressed: () {}), - )); -} - -Future injectTouchListener() async { - final WebViewController controller = await _controller.future; - controller.evaluateJavascript( - "document.addEventListener('touchstart', (event) => { Log.postMessage(String(event)); }, true);"); -} - -void main() { - testWidgets('Setting parentNode determines focus tree hierarchy.', - (WidgetTester tester) async { - await tester.pumpWidget(boilerplate()); - await tester.pump(); -// Test by adding a new html element when clicked? - }); -} +// TODO(louisehsu): add some sanity tests after github testing passes From f9294ab21ab04877975df0be27f13299450c02ce Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 31 Oct 2023 23:40:04 -0700 Subject: [PATCH 17/52] more linter stuff --- .../pointer_interceptor_ios/example/lib/main.dart | 4 ++-- .../pointer_interceptor_ios/example/pubspec.yaml | 9 ++++----- .../lib/pointer_interceptor_ios.dart | 7 ++++--- .../pointer_interceptor_ios/pubspec.yaml | 5 +++-- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 10278044733..98474390aa7 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -7,7 +7,7 @@ void main() { } class _DummyPlatformView extends StatelessWidget { - const _DummyPlatformView({super.key}); + const _DummyPlatformView(); @override Widget build(BuildContext context) { @@ -45,7 +45,7 @@ class _PointerInterceptorIOSExampleState body: Center( child: Stack( alignment: AlignmentDirectional.center, - children: [ + children: [ const _DummyPlatformView(), PointerInterceptorIOSPlugin().buildWidget( debug: true, diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml index 2326103bb65..8d8f115095b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -34,17 +34,16 @@ dependencies: shared_preferences: ^2.2.2 dev_dependencies: - integration_test: - sdk: flutter - flutter_test: - sdk: flutter - # The "flutter_lints" package below contains a set of recommended lints to # encourage good coding practices. The lint set provided by the package is # activated in the `analysis_options.yaml` file located at the root of your # package. See that file for information about deactivating specific lint # rules and activating additional ones. flutter_lints: ^2.0.0 + flutter_test: + sdk: flutter + integration_test: + sdk: flutter # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index d7850305567..a3619617f03 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -2,12 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:flutter/widgets.dart'; import 'package:flutter/services.dart'; +import 'package:flutter/widgets.dart'; import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; /// The iOS implementation of the [PointerInterceptorPlatform] class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { + /// Register plugin as iOS version static void registerWith() { PointerInterceptorPlatform.instance = PointerInterceptorIOSPlugin(); } @@ -18,11 +19,11 @@ class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { bool intercepting = true, bool debug = false, Key? key}) { - return Stack(alignment: Alignment.center, children: [ + return Stack(alignment: Alignment.center, children: [ Positioned.fill( child: UiKitView( viewType: 'plugins.flutter.dev/pointer_interceptor_ios', - creationParams: { + creationParams: { 'debug': debug, }, creationParamsCodec: const StandardMessageCodec(), diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index b1790647879..22a7d578769 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -3,6 +3,7 @@ description: iOS implementation of the pointer_interceptor plugin. repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen++label%3A%22p%3A+pointer_interceptor%22 version: 2.3.1 +publish_to: 'none' environment: sdk: '>=3.2.0-134.0.dev <4.0.0' @@ -24,6 +25,6 @@ dependencies: webview_flutter: ^3.0.4 dev_dependencies: + flutter_lints: ^2.0.0 flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 \ No newline at end of file + sdk: flutter \ No newline at end of file From 3854eb9740bb16a0217bdb58b46bf6ae52de4e87 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 1 Nov 2023 10:15:13 -0700 Subject: [PATCH 18/52] lower versioning --- .../pointer_interceptor/pointer_interceptor_ios/pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index 22a7d578769..b983d6d3025 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -6,8 +6,8 @@ version: 2.3.1 publish_to: 'none' environment: - sdk: '>=3.2.0-134.0.dev <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.1.0-134.0.dev <4.0.0' + flutter: '>=3.13.0' flutter: plugin: From ef7f76fe1c0dd780919632420a55f4c9e3e70594 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 1 Nov 2023 12:31:22 -0700 Subject: [PATCH 19/52] lower versioning for platform interface --- .../pointer_interceptor_platform_interface/pubspec.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index 08531e1844d..adb419ec606 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -3,8 +3,8 @@ description: "A new Flutter plugin project." version: 0.0.1 environment: - sdk: '>=3.2.0-134.0.dev <4.0.0' - flutter: '>=3.3.0' + sdk: '>=3.1.0-134.0.dev <4.0.0' + flutter: '>=3.13.0' dependencies: flutter: From 819d7d41ab72d9f6e14d9ad5c02989bcd272fb84 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 1 Nov 2023 13:17:37 -0700 Subject: [PATCH 20/52] version lowering --- .../pointer_interceptor_ios/example/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml index 8d8f115095b..df919575905 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -5,7 +5,7 @@ description: "Demonstrates how to use the pointer_interceptor_ios plugin." publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: - sdk: '>=3.2.0-134.0.dev <4.0.0' + sdk: '>=3.1.0-134.0.dev <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions From 6067505f2c6262999194ad51b64375ee50d33c06 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Thu, 2 Nov 2023 00:14:37 -0700 Subject: [PATCH 21/52] fixing ios plugin overriding default ios behaviour --- .../pointer_interceptor/lib/src/mobile.dart | 33 ++++------- .../lib/src/pointer_interceptor.dart | 1 + .../pointer_interceptor/lib/src/web.dart | 46 ++++++++++++++- .../pointer_interceptor/pubspec.yaml | 5 +- .../ios/Runner.xcodeproj/project.pbxproj | 2 +- .../example/lib/main.dart | 3 +- .../pointer_interceptor_ios/pubspec.yaml | 1 + .../test/pointer_interceptor_ios_test.dart | 56 ++++++++++++++++++- .../pointer_interceptor_method_channel.dart | 4 +- .../lib/src/pointer_interceptor_platform.dart | 1 + 10 files changed, 121 insertions(+), 31 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart index 8d645ffbcfe..0cf3ce8c4ed 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart @@ -4,31 +4,20 @@ import 'package:flutter/widgets.dart'; -/// A [Widget] that prevents clicks from being swallowed by [HtmlElementView]s. -class PointerInterceptor extends StatelessWidget { - /// Create a `PointerInterceptor` wrapping a `child`. - // ignore: prefer_const_constructors_in_immutables - PointerInterceptor({ - required this.child, - this.intercepting = true, - this.debug = false, - super.key, - }); - - /// The `Widget` that is being wrapped by this `PointerInterceptor`. - final Widget child; - - /// Whether or not this `PointerInterceptor` should intercept pointer events. - final bool intercepting; +import '../pointer_interceptor.dart'; - /// When true, the widget renders with a semi-transparent red background, for debug purposes. - /// - /// This is useful when rendering this as a "layout" widget, like the root child - /// of a `Drawer`. - final bool debug; +/// A [Widget] that prevents clicks from being swallowed by [HtmlElementView]s. +class PointerInterceptorIOSLegacy extends PointerInterceptorPlatform { + static void registerWith() { + PointerInterceptorPlatform.instance = PointerInterceptorIOSLegacy(); + } @override - Widget build(BuildContext context) { + Widget buildWidget( + {required Widget child, + bool intercepting = false, + bool debug = false, + Key? key}) { return child; } } diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index 3bb49715085..5c0d86c9ad7 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -30,6 +30,7 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { + print(PointerInterceptorPlatform.instance.toString()); return PointerInterceptorPlatform.instance.buildWidget( child: child, intercepting: intercepting, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart index 4bb9a4461ec..50462fa23ef 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart @@ -3,9 +3,18 @@ // found in the LICENSE file. import 'package:flutter/widgets.dart'; +import 'package:flutter_web_plugins/flutter_web_plugins.dart'; import '../pointer_interceptor.dart'; +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ignore: avoid_web_libraries_in_flutter +import 'dart:html' as html; +import 'dart:ui_web' as ui_web; + const String _viewType = '__webPointerInterceptorViewType__'; const String _debug = 'debug__'; @@ -14,15 +23,42 @@ String _getViewType({bool debug = false}) { return debug ? _viewType + _debug : _viewType; } +// Registers a viewFactory for this widget. +void _registerFactory({bool debug = false}) { + final String viewType = _getViewType(debug: debug); + ui_web.platformViewRegistry.registerViewFactory(viewType, (int viewId) { + final html.Element htmlElement = html.DivElement() + ..style.width = '100%' + ..style.height = '100%'; + if (debug) { + htmlElement.style.backgroundColor = 'rgba(255, 0, 0, .5)'; + } + return htmlElement; + }, isVisible: false); +} + /// The web implementation of the `PointerInterceptor` widget. /// /// A `Widget` that prevents clicks from being swallowed by [HtmlElementView]s. -class PointerInterceptor extends PointerInterceptorPlatform { +class PointerInterceptorWeb extends PointerInterceptorPlatform { + static bool _registered = false; + /// Register the plugin - static void registerWith() { - PointerInterceptorPlatform.instance = PointerInterceptor(); + static void registerWith(Registrar? registrar) { + PointerInterceptorPlatform.instance = PointerInterceptorWeb(); } + static void _register() { + assert(!_registered); + + _registerFactory(); + _registerFactory(debug: true); + + _registered = true; + } + + + @override Widget buildWidget( {required Widget child, @@ -36,6 +72,10 @@ class PointerInterceptor extends PointerInterceptorPlatform { return child; } + if (!_registered) { + _register(); + } + return Stack( alignment: Alignment.center, children: [ diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index fce71fe8838..4cd02fbf1ce 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -14,9 +14,12 @@ flutter: implements: pointer_interceptor_platform_interface platforms: web: - default_package: ./src/web.dart + pluginClass: PointerInterceptorWeb + fileName: ./src/web.dart ios: default_package: ./src/mobile.dart +# pluginClass: PointerInterceptorIOSLegacy +# fileName: ./src/mobile.dart dependencies: flutter: diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index a61c13c4b2b..8a3aacab681 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -543,7 +543,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = PZ83UV676J; + DEVELOPMENT_TEAM = S8QB4VV633; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 98474390aa7..bbb25dac9c2 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -1,5 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; void main() { @@ -47,7 +48,7 @@ class _PointerInterceptorIOSExampleState alignment: AlignmentDirectional.center, children: [ const _DummyPlatformView(), - PointerInterceptorIOSPlugin().buildWidget( + PointerInterceptor( debug: true, child: TextButton( style: TextButton.styleFrom(foregroundColor: Colors.red), diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index b983d6d3025..0a281d452be 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -23,6 +23,7 @@ dependencies: pointer_interceptor_platform_interface: path: ../pointer_interceptor_platform_interface webview_flutter: ^3.0.4 + plugin_platform_interface: ^2.1.6 dev_dependencies: flutter_lints: ^2.0.0 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 44188b4629d..948958e7360 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -1 +1,55 @@ -// TODO(louisehsu): add some sanity tests after github testing passes +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; +import 'package:webview_flutter/webview_flutter.dart'; +import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; + +final Completer _controller = Completer(); + +class DummyPlatformView extends StatelessWidget { + const DummyPlatformView({super.key}); + + @override + Widget build(BuildContext context) { + // This is used in the platform side to register the view. + const String viewType = 'dummy_platform_view'; + // Pass parameters to the platform side. + final Map creationParams = {}; + + return UiKitView( + viewType: viewType, + layoutDirection: TextDirection.ltr, + creationParams: creationParams, + creationParamsCodec: const StandardMessageCodec(), + ); + } +} + +Widget boilerplate() { + return MaterialApp( + home: Scaffold( + body: const DummyPlatformView(), + floatingActionButton: FloatingActionButton( + onPressed: () { }, + child: Container( + child: PointerInterceptorIOSPlugin().buildWidget(child: Container()), + )), + )); +} + +Future injectTouchListener() async { + final WebViewController controller = await _controller.future; + controller.evaluateJavascript( + "document.addEventListener('touchstart', (event) => { Log.postMessage(String(event)); }, true);"); +} + +void main() { + testWidgets('Button remains clickable and is added to ' + 'hierarchy after being wrapped in pointer interceptor', (WidgetTester tester) async { + await tester.pumpWidget(boilerplate()); + await tester.pump(); +// Test by adding a new html element when clicked? + }); +} \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart index b005fe3210d..c0f84f47bac 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart @@ -6,11 +6,11 @@ import 'package:flutter/widgets.dart'; import 'pointer_interceptor_platform.dart'; -/// A defailt implementation of [PointerInterceptorPlatform]. +/// A default implementation of [PointerInterceptorPlatform]. class PlaceholderPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget( {required Widget child, bool intercepting = true, bool debug = false, Key? key}) { - throw UnimplementedError('buildWidget() has not been implemented.'); + return child; } } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index 3ec295f7de1..b019adf1869 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -42,6 +42,7 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { bool debug = false, Key? key, }) { + print(instance); throw UnimplementedError('buildWidget() has not been implemented.'); } } From 994a8ae9eb8cb6923fc763cf7cebd95abfdc24ef Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Fri, 3 Nov 2023 00:07:31 -0700 Subject: [PATCH 22/52] remove old ios implementation --- .../pointer_interceptor/example/lib/main.dart | 1 + .../src/dummy_pointer_interceptor_ios.dart | 1 + .../pointer_interceptor/lib/src/mobile.dart | 23 ------------------- .../lib/src/pointer_interceptor.dart | 4 ++-- .../pointer_interceptor/lib/src/web.dart | 19 +++++++-------- .../pointer_interceptor/pubspec.yaml | 4 +--- .../example/lib/main.dart | 3 +-- .../example/pubspec.yaml | 2 +- .../pointer_interceptor_ios/pubspec.yaml | 2 +- .../test/pointer_interceptor_ios_test.dart | 13 +++++------ .../lib/src/pointer_interceptor_platform.dart | 1 - 11 files changed, 22 insertions(+), 51 deletions(-) create mode 100644 packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart delete mode 100644 packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart index dfa2bafd84d..74f632a6023 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart @@ -8,6 +8,7 @@ import 'dart:ui_web' as ui_web; import 'package:flutter/material.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; + const String _htmlElementViewType = '_htmlElementViewType'; const double _videoWidth = 640; const double _videoHeight = 480; diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart new file mode 100644 index 00000000000..527f1846347 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart @@ -0,0 +1 @@ +// TODO(louisehsu): Replace this empty file with PointerInterceptorIOS Implementation. diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart deleted file mode 100644 index 0cf3ce8c4ed..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/widgets.dart'; - -import '../pointer_interceptor.dart'; - -/// A [Widget] that prevents clicks from being swallowed by [HtmlElementView]s. -class PointerInterceptorIOSLegacy extends PointerInterceptorPlatform { - static void registerWith() { - PointerInterceptorPlatform.instance = PointerInterceptorIOSLegacy(); - } - - @override - Widget buildWidget( - {required Widget child, - bool intercepting = false, - bool debug = false, - Key? key}) { - return child; - } -} diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index 5c0d86c9ad7..952984d2353 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -12,7 +12,7 @@ class PointerInterceptor extends StatelessWidget { PointerInterceptor({ required this.child, this.intercepting = true, - this.debug = true, + this.debug = false, super.key, }); @@ -30,7 +30,7 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { - print(PointerInterceptorPlatform.instance.toString()); + print(PointerInterceptorPlatform.instance); return PointerInterceptorPlatform.instance.buildWidget( child: child, intercepting: intercepting, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart index 50462fa23ef..17a58bff593 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart @@ -2,11 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:flutter/widgets.dart'; -import 'package:flutter_web_plugins/flutter_web_plugins.dart'; - -import '../pointer_interceptor.dart'; - // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,6 +10,11 @@ import '../pointer_interceptor.dart'; import 'dart:html' as html; import 'dart:ui_web' as ui_web; +import 'package:flutter/widgets.dart'; +import 'package:flutter_web_plugins/flutter_web_plugins.dart'; + +import '../pointer_interceptor.dart'; + const String _viewType = '__webPointerInterceptorViewType__'; const String _debug = 'debug__'; @@ -57,15 +57,12 @@ class PointerInterceptorWeb extends PointerInterceptorPlatform { _registered = true; } - - @override Widget buildWidget( {required Widget child, - bool intercepting = true, - bool debug = false, - Key? key}) { - + bool intercepting = true, + bool debug = false, + Key? key}) { final String viewType = _getViewType(debug: debug); if (!intercepting) { diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 4cd02fbf1ce..ce545ce9b4c 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -17,9 +17,7 @@ flutter: pluginClass: PointerInterceptorWeb fileName: ./src/web.dart ios: - default_package: ./src/mobile.dart -# pluginClass: PointerInterceptorIOSLegacy -# fileName: ./src/mobile.dart + default_package: ./src/dummy_pointer_interceptor_ios.dart dependencies: flutter: diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index bbb25dac9c2..33df1aff809 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; -import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; +// import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; void main() { runApp(const MaterialApp(home: PointerInterceptorIOSExample())); @@ -49,7 +49,6 @@ class _PointerInterceptorIOSExampleState children: [ const _DummyPlatformView(), PointerInterceptor( - debug: true, child: TextButton( style: TextButton.styleFrom(foregroundColor: Colors.red), child: _buttonTapped diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml index df919575905..278d708c95b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -18,7 +18,7 @@ dependencies: flutter: sdk: flutter pointer_interceptor: - path: ../../pointer_interceptor/ + path: ../../pointer_interceptor pointer_interceptor_ios: # When depending on this package from a real application you should use: # pointer_interceptor_ios: ^x.y.z diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index 0a281d452be..f1aa58b7487 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -20,10 +20,10 @@ flutter: dependencies: flutter: sdk: flutter + plugin_platform_interface: ^2.1.6 pointer_interceptor_platform_interface: path: ../pointer_interceptor_platform_interface webview_flutter: ^3.0.4 - plugin_platform_interface: ^2.1.6 dev_dependencies: flutter_lints: ^2.0.0 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 948958e7360..9bd12cdaea5 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -1,10 +1,11 @@ -import 'package:flutter/services.dart'; -import 'package:flutter_test/flutter_test.dart'; import 'dart:async'; + import 'package:flutter/material.dart'; -import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; -import 'package:webview_flutter/webview_flutter.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:; import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; +import 'package:webview_flutter/webview_flutter.dart'; final Completer _controller = Completer(); @@ -33,9 +34,7 @@ Widget boilerplate() { body: const DummyPlatformView(), floatingActionButton: FloatingActionButton( onPressed: () { }, - child: Container( - child: PointerInterceptorIOSPlugin().buildWidget(child: Container()), - )), + child: PointerInterceptor()), )); } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index b019adf1869..3ec295f7de1 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -42,7 +42,6 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { bool debug = false, Key? key, }) { - print(instance); throw UnimplementedError('buildWidget() has not been implemented.'); } } From 68a4d8c59153b14ac8b08bcd0131ca748d7396b3 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 7 Nov 2023 10:38:12 -0800 Subject: [PATCH 23/52] fix tests --- .../example/lib/main.dart | 1 - .../test/pointer_interceptor_ios_test.dart | 30 ++----------------- 2 files changed, 3 insertions(+), 28 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 33df1aff809..0517808969a 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -1,7 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; -// import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; void main() { runApp(const MaterialApp(home: PointerInterceptorIOSExample())); diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 9bd12cdaea5..3a1a7788e5e 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -3,46 +3,22 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:; -import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; import 'package:webview_flutter/webview_flutter.dart'; +import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; final Completer _controller = Completer(); -class DummyPlatformView extends StatelessWidget { - const DummyPlatformView({super.key}); - - @override - Widget build(BuildContext context) { - // This is used in the platform side to register the view. - const String viewType = 'dummy_platform_view'; - // Pass parameters to the platform side. - final Map creationParams = {}; - - return UiKitView( - viewType: viewType, - layoutDirection: TextDirection.ltr, - creationParams: creationParams, - creationParamsCodec: const StandardMessageCodec(), - ); - } -} - Widget boilerplate() { return MaterialApp( home: Scaffold( body: const DummyPlatformView(), floatingActionButton: FloatingActionButton( onPressed: () { }, - child: PointerInterceptor()), + child: PointerInterceptorIOSPlugin().buildWidget(child: child)), )); } -Future injectTouchListener() async { - final WebViewController controller = await _controller.future; - controller.evaluateJavascript( - "document.addEventListener('touchstart', (event) => { Log.postMessage(String(event)); }, true);"); -} +/// Find the tests in the void main() { testWidgets('Button remains clickable and is added to ' From 2bcdde2303357ef0f440d350da6dd39e060dff3f Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 7 Nov 2023 13:28:39 -0800 Subject: [PATCH 24/52] update ios test --- .../test/pointer_interceptor_ios_test.dart | 56 ++++++++++++------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 3a1a7788e5e..0364a9903fa 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -1,30 +1,44 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; -import 'package:flutter/services.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:webview_flutter/webview_flutter.dart'; import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; -final Completer _controller = Completer(); +class TestApp extends StatefulWidget { + const TestApp({super.key}); -Widget boilerplate() { - return MaterialApp( - home: Scaffold( - body: const DummyPlatformView(), - floatingActionButton: FloatingActionButton( - onPressed: () { }, - child: PointerInterceptorIOSPlugin().buildWidget(child: child)), - )); + @override + State createState() { + return TestAppState(); + } } -/// Find the tests in the +class TestAppState extends State { + String _buttonText = 'Test Button'; + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: const Text('Body'), + floatingActionButton: FloatingActionButton( + onPressed: () {}, + child: PointerInterceptorIOSPlugin().buildWidget( + child: TextButton( + onPressed: () => setState(() { + _buttonText = 'Clicked'; + }), + child: Text(_buttonText), + ))), + )); + } +} void main() { - testWidgets('Button remains clickable and is added to ' - 'hierarchy after being wrapped in pointer interceptor', (WidgetTester tester) async { - await tester.pumpWidget(boilerplate()); - await tester.pump(); -// Test by adding a new html element when clicked? - }); -} \ No newline at end of file + testWidgets( + 'Button remains clickable and is added to ' + 'hierarchy after being wrapped in pointer interceptor', + (WidgetTester tester) async { + await tester.pumpWidget(const TestApp()); + await tester.tap(find.text('Test Button')); + expect(find.text('Clicked'), findsOneWidget); + }); +} From fbf0e04d2e5a5ddc65e7f4e08f69440116e2d4cb Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 7 Nov 2023 13:45:48 -0800 Subject: [PATCH 25/52] formatting --- .../lib/src/pointer_interceptor.dart | 1 - .../example/lib/main.dart | 1 - .../example/test/tests_exist_elsewhere.dart | 1 + .../lib/pointer_interceptor_ios.dart | 18 +++++++++--------- .../pointer_interceptor_method_channel.dart | 5 ++++- .../lib/src/pointer_interceptor_platform.dart | 1 - 6 files changed, 14 insertions(+), 13 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index 952984d2353..7374a003907 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -30,7 +30,6 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { - print(PointerInterceptorPlatform.instance); return PointerInterceptorPlatform.instance.buildWidget( child: child, intercepting: intercepting, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 0517808969a..09a1a4a9bc2 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -36,7 +36,6 @@ class PointerInterceptorIOSExample extends StatefulWidget { class _PointerInterceptorIOSExampleState extends State { - bool _buttonTapped = false; @override diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart index e69de29bb2d..8b137891791 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart @@ -0,0 +1 @@ + diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index a3619617f03..841f6c19e3f 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -16,18 +16,18 @@ class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { @override Widget buildWidget( {required Widget child, - bool intercepting = true, - bool debug = false, - Key? key}) { + bool intercepting = true, + bool debug = false, + Key? key}) { return Stack(alignment: Alignment.center, children: [ Positioned.fill( child: UiKitView( - viewType: 'plugins.flutter.dev/pointer_interceptor_ios', - creationParams: { - 'debug': debug, - }, - creationParamsCodec: const StandardMessageCodec(), - )), + viewType: 'plugins.flutter.dev/pointer_interceptor_ios', + creationParams: { + 'debug': debug, + }, + creationParamsCodec: const StandardMessageCodec(), + )), child ]); } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart index c0f84f47bac..740d995dce5 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart @@ -10,7 +10,10 @@ import 'pointer_interceptor_platform.dart'; class PlaceholderPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget( - {required Widget child, bool intercepting = true, bool debug = false, Key? key}) { + {required Widget child, + bool intercepting = true, + bool debug = false, + Key? key}) { return child; } } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index 3ec295f7de1..7ccdb4c7ced 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -11,7 +11,6 @@ import 'pointer_interceptor_method_channel.dart'; /// platform-specific class that extends [PointerInterceptorPlatform] when /// they register themselves. abstract class PointerInterceptorPlatform extends PlatformInterface { - /// Constructs a PointerInterceptorPlatform. PointerInterceptorPlatform() : super(token: _token); From 6c18fa93b3aa6701a6831df268babc93f017ca54 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 7 Nov 2023 23:48:24 -0800 Subject: [PATCH 26/52] pr comments, update changelog/readme --- .../lib/pointer_interceptor.dart | 1 - .../pointer_interceptor/lib/src/mobile.dart | 34 ------------------- .../lib/src/pointer_interceptor.dart | 4 +-- .../pointer_interceptor/lib/src/web.dart | 2 +- .../pointer_interceptor_ios/CHANGELOG.md | 5 +-- .../pointer_interceptor_ios/LICENSE | 26 +++++++++++++- .../Classes/PointerInterceptorIosPlugin.swift | 9 ----- .../ios/Classes/PointerInterceptorView.swift | 2 +- .../lib/pointer_interceptor_ios.dart | 6 +--- .../test/pointer_interceptor_ios_test.dart | 1 + .../CHANGELOG.md | 4 +-- .../LICENSE | 26 +++++++++++++- ...el.dart => no_op_pointer_interceptor.dart} | 2 +- .../lib/src/pointer_interceptor_platform.dart | 7 ++-- 14 files changed, 65 insertions(+), 64 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart rename packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/{pointer_interceptor_method_channel.dart => no_op_pointer_interceptor.dart} (86%) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart index a5bff3910fa..ba15650c46e 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/pointer_interceptor.dart @@ -6,4 +6,3 @@ library pointer_interceptor; export 'package:pointer_interceptor/src/pointer_interceptor.dart'; export 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; - diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart deleted file mode 100644 index 8d645ffbcfe..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/mobile.dart +++ /dev/null @@ -1,34 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import 'package:flutter/widgets.dart'; - -/// A [Widget] that prevents clicks from being swallowed by [HtmlElementView]s. -class PointerInterceptor extends StatelessWidget { - /// Create a `PointerInterceptor` wrapping a `child`. - // ignore: prefer_const_constructors_in_immutables - PointerInterceptor({ - required this.child, - this.intercepting = true, - this.debug = false, - super.key, - }); - - /// The `Widget` that is being wrapped by this `PointerInterceptor`. - final Widget child; - - /// Whether or not this `PointerInterceptor` should intercept pointer events. - final bool intercepting; - - /// When true, the widget renders with a semi-transparent red background, for debug purposes. - /// - /// This is useful when rendering this as a "layout" widget, like the root child - /// of a `Drawer`. - final bool debug; - - @override - Widget build(BuildContext context) { - return child; - } -} diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index 7374a003907..d852d6dace1 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -30,7 +30,7 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { - return PointerInterceptorPlatform.instance.buildWidget( - child: child, intercepting: intercepting, debug: debug, key: key); + return PointerInterceptorPlatform.instance + .buildWidget(child: child, debug: debug, key: key); } } diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart index 837661efc19..bb93345bbbc 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart @@ -56,8 +56,8 @@ class PointerInterceptorWeb extends PointerInterceptorPlatform { @override Widget buildWidget( {required Widget child, - bool intercepting = true, bool debug = false, + bool intercepting = true, Key? key}) { final String viewType = _getViewType(debug: debug); diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md index 41cc7d8192e..10a3e4ae2e0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md @@ -1,3 +1,4 @@ -## 0.0.1 +## 1.0.0 + +* Initial release. -* TODO: Describe initial release. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE index ba75c69f7f2..c6823b81eb8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE @@ -1 +1,25 @@ -TODO: Add your license here. +Copyright 2013 The Flutter Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift index d2450b96210..04c7f6fc089 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorIosPlugin.swift @@ -8,13 +8,4 @@ public class PointerInterceptorIosPlugin: NSObject, FlutterPlugin { public static func register(with registrar: FlutterPluginRegistrar) { registrar.register(PointerInterceptorFactory(), withId: "plugins.flutter.dev/pointer_interceptor_ios") } - - public func handle(_ call: FlutterMethodCall, result: @escaping FlutterResult) { - switch call.method { - case "getPlatformVersion": - result("iOS " + UIDevice.current.systemVersion) - default: - result(FlutterMethodNotImplemented) - } - } } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift index b6ef627be00..e0bfeacf470 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift @@ -11,7 +11,7 @@ public class PointerInterceptorView: NSObject, FlutterPlatformView { init(frame:CGRect, debug:Bool) { interceptorView = UIView(frame:frame) - if true { + if debug { interceptorView.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5) } else { interceptorView.backgroundColor = UIColor.clear diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index 841f6c19e3f..cf770b8ea18 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -14,11 +14,7 @@ class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { } @override - Widget buildWidget( - {required Widget child, - bool intercepting = true, - bool debug = false, - Key? key}) { + Widget buildWidget({required Widget child, bool debug = false, Key? key}) { return Stack(alignment: Alignment.center, children: [ Positioned.fill( child: UiKitView( diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 0364a9903fa..60e8050f8f8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -39,6 +39,7 @@ void main() { (WidgetTester tester) async { await tester.pumpWidget(const TestApp()); await tester.tap(find.text('Test Button')); + await tester.pump(); expect(find.text('Clicked'), findsOneWidget); }); } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md index 41cc7d8192e..51b57ed11f7 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md @@ -1,3 +1,3 @@ -## 0.0.1 +## 1.0.0 -* TODO: Describe initial release. +* Initial release from migration to federated architecture. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE index ba75c69f7f2..c6823b81eb8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE @@ -1 +1,25 @@ -TODO: Add your license here. +Copyright 2013 The Flutter Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart similarity index 86% rename from packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart rename to packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart index 740d995dce5..df0a930b487 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_method_channel.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart @@ -7,7 +7,7 @@ import 'package:flutter/widgets.dart'; import 'pointer_interceptor_platform.dart'; /// A default implementation of [PointerInterceptorPlatform]. -class PlaceholderPointerInterceptor extends PointerInterceptorPlatform { +class NoOpPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget( {required Widget child, diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index 7ccdb4c7ced..7db76ead681 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -5,7 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; -import 'pointer_interceptor_method_channel.dart'; +import 'no_op_pointer_interceptor.dart'; /// Platform-specific implementations should set this with their own /// platform-specific class that extends [PointerInterceptorPlatform] when @@ -16,7 +16,7 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { static final Object _token = Object(); - static PointerInterceptorPlatform _instance = PlaceholderPointerInterceptor(); + static PointerInterceptorPlatform _instance = NoOpPointerInterceptor(); static set instance(PointerInterceptorPlatform? instance) { if (instance == null) { @@ -30,14 +30,13 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { /// The default instance of [PointerInterceptorPlatform] to use. /// - /// Defaults to [PlaceholderPointerInterceptor], which does not do anything + /// Defaults to [NoOpPointerInterceptor], which does not do anything static PointerInterceptorPlatform get instance => _instance; /// Platform-specific implementations should override this function their own /// implementation of a pointer interceptor widget. Widget buildWidget({ required Widget child, - bool intercepting = true, bool debug = false, Key? key, }) { From e6a8a09f6fbc3150b989f1767dbbc77eb0d8f26a Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 8 Nov 2023 10:29:50 -0800 Subject: [PATCH 27/52] remove empty test dir in example --- .../example/test/tests_exist_elsewhere.dart | 1 - 1 file changed, 1 deletion(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart deleted file mode 100644 index 8b137891791..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/test/tests_exist_elsewhere.dart +++ /dev/null @@ -1 +0,0 @@ - From a67da96a350f4b94e47373b6fdf8e956ad5eb3cd Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 8 Nov 2023 14:34:25 -0800 Subject: [PATCH 28/52] rename web.dart to pointer_interceptor_web.dart, remove "intercepting" param from interface --- .../pointer_interceptor/lib/src/pointer_interceptor.dart | 3 +++ .../lib/src/{web.dart => pointer_interceptor_web.dart} | 5 ----- .../pointer_interceptor/pointer_interceptor/pubspec.yaml | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) rename packages/pointer_interceptor/pointer_interceptor/lib/src/{web.dart => pointer_interceptor_web.dart} (96%) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index d852d6dace1..c561e1403b9 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -30,6 +30,9 @@ class PointerInterceptor extends StatelessWidget { @override Widget build(BuildContext context) { + if (!intercepting) { + return child; + } return PointerInterceptorPlatform.instance .buildWidget(child: child, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart similarity index 96% rename from packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart rename to packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart index bb93345bbbc..ee783d50d01 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart @@ -57,14 +57,9 @@ class PointerInterceptorWeb extends PointerInterceptorPlatform { Widget buildWidget( {required Widget child, bool debug = false, - bool intercepting = true, Key? key}) { final String viewType = _getViewType(debug: debug); - if (!intercepting) { - return child; - } - if (!_registered) { _register(); } diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index ce545ce9b4c..5efe437ae50 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -15,7 +15,7 @@ flutter: platforms: web: pluginClass: PointerInterceptorWeb - fileName: ./src/web.dart + fileName: ./src/pointer_interceptor_web.dart ios: default_package: ./src/dummy_pointer_interceptor_ios.dart From f38a01917b342ae6616683d1b6de29c90726f6f4 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 8 Nov 2023 16:24:52 -0800 Subject: [PATCH 29/52] update podspec --- .../ios/pointer_interceptor_ios.podspec | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec b/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec index 2c6242165af..ac3dbfb98ce 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec @@ -5,14 +5,14 @@ Pod::Spec.new do |s| s.name = 'pointer_interceptor_ios' s.version = '0.0.1' - s.summary = 'A new Flutter plugin project.' + s.summary = 'Pointer Interceptor IOS' s.description = <<-DESC -A new Flutter plugin project. +This Flutter plugin provides means to prevent gestures from being swallowed by PlatformView on iOS. DESC - s.homepage = 'http://example.com' - s.license = { :file => '../LICENSE' } - s.author = { 'Your Company' => 'email@example.com' } - s.source = { :path => '.' } + s.homepage = 'https://github.com/flutter/packages' + s.license = { :type => 'BSD', :file => '../LICENSE' } + s.author = { 'Flutter Dev Team' => 'flutter-dev@googlegroups.com' } + s.source = { :http => 'https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_ios' } s.source_files = 'Classes/**/*' s.dependency 'Flutter' s.platform = :ios, '11.0' From 800fba2a13b424ddb267b60c008d4a78b3cc5832 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Fri, 10 Nov 2023 02:12:08 -0800 Subject: [PATCH 30/52] update READMEs, CHANGELOGs, remove extraneous files, various clean up, PR comments --- .../pointer_interceptor/CHANGELOG.md | 2 +- .../pointer_interceptor/example/.metadata | 39 ++++- .../src/dummy_pointer_interceptor_ios.dart | 10 ++ .../lib/src/pointer_interceptor_web.dart | 9 +- .../pointer_interceptor/pubspec.yaml | 4 +- .../pointer_interceptor_ios/CHANGELOG.md | 2 +- .../pointer_interceptor_ios/README.md | 17 +-- .../pointer_interceptor_ios/example/README.md | 21 +-- .../ios/Flutter/AppFrameworkInfo.plist | 40 +++--- .../ios/Runner.xcodeproj/project.pbxproj | 135 +++++++++--------- .../LaunchImage.imageset/README.md | 5 - .../ios/Runner/DummyPlatformViewFactory.swift | 9 ++ .../example/ios/RunnerTests/RunnerTests.swift | 26 ---- .../example/lib/main.dart | 2 +- .../example/pubspec.yaml | 67 +-------- .../ios/Classes/PointerInterceptorView.swift | 9 +- .../ios/pointer_interceptor_ios.podspec | 7 +- .../lib/pointer_interceptor_ios.dart | 4 +- .../pointer_interceptor_ios/pubspec.yaml | 5 +- .../CHANGELOG.md | 2 +- .../README.md | 29 ++-- .../lib/src/no_op_pointer_interceptor.dart | 18 ++- .../pubspec.yaml | 7 +- 23 files changed, 218 insertions(+), 251 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md delete mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift diff --git a/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md index f673f2cc96d..74eac4fbafd 100644 --- a/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md @@ -1,5 +1,5 @@ ## 0.9.4 -* Add iOS implementation +* Adds iOS implementation ## 0.9.3+7 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/.metadata b/packages/pointer_interceptor/pointer_interceptor/example/.metadata index d2885b8e359..e6893906f99 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/.metadata +++ b/packages/pointer_interceptor/pointer_interceptor/example/.metadata @@ -4,7 +4,42 @@ # This file should be version controlled and should not be manually edited. version: - revision: e6bd95bc5caa5e34c5b0285a559673984374b7ea - channel: master + revision: "969911d1d09d6c4f145e9ce27c08093e8c285561" + channel: "main" project_type: app + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: android + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: ios + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: linux + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: macos + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: web + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + - platform: windows + create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart index 527f1846347..af931d03ed6 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart @@ -1 +1,11 @@ // TODO(louisehsu): Replace this empty file with PointerInterceptorIOS Implementation. + +/***= + * This file is a temporary solution as this allows existing usages of PointerInterceptor + * on iOS to maintain their no-op behaviour. Eventually, this file will be replaced with the + * iOS implementation of pointer_interceptor. + * + * Please note this no-op behavior is being deprecated soon, so developers should remove + * the widget from mobile. If you wish to instead opt-in to the new iOS implementation, + * please include both pointer_interceptor_ios and pointer_interceptor in your pubspec.yaml + */ diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart index ee783d50d01..16e4a03a741 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart @@ -54,10 +54,11 @@ class PointerInterceptorWeb extends PointerInterceptorPlatform { } @override - Widget buildWidget( - {required Widget child, - bool debug = false, - Key? key}) { + Widget buildWidget({ + required Widget child, + bool debug = false, + Key? key, + }) { final String viewType = _getViewType(debug: debug); if (!_registered) { diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 5efe437ae50..fe850eff097 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -33,9 +33,7 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter -# pointer_interceptor_ios: -# path: ../pointer_interceptor_ios topics: - web - - widgets \ No newline at end of file + - widgets diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md index 10a3e4ae2e0..50be02009c8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md @@ -1,4 +1,4 @@ -## 1.0.0 +## 0.9.0 * Initial release. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/README.md index 52c97ad677b..e1ff672b902 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/README.md +++ b/packages/pointer_interceptor/pointer_interceptor_ios/README.md @@ -1,15 +1,10 @@ -# pointer_interceptor_ios +# pointer\_interceptor\_ios -A new Flutter plugin project. +The iOS implementation of [`pointer interceptor`][1]. -## Getting Started +## Usage -This project is a starting point for a Flutter -[plug-in package](https://flutter.dev/developing-packages/), -a specialized package that includes platform-specific implementation code for -Android and/or iOS. - -For help getting started with Flutter development, view the -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +This package is NOT [endorsed][2]. To use this package, please include this into your `pubspec.yaml` along with [`pointer_interceptor`][1]. +[1]: https://pub.dev/packages/pointer_interceptor +[2]: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#endorsed-federated-plugin \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md index 3afdfbfb3e3..96b8bb17dbf 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/README.md @@ -1,16 +1,9 @@ -# pointer_interceptor_ios_example +# Platform Implementation Test App -Demonstrates how to use the pointer_interceptor_ios plugin. +This is a test app for manual testing and automated integration testing +of this platform implementation. It is not intended to demonstrate actual use of +this package, since the intent is that plugin clients use the app-facing +package. -## Getting Started - -This project is a starting point for a Flutter application. - -A few resources to get you started if this is your first Flutter project: - -- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) -- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) - -For help getting started with Flutter development, view the -[online documentation](https://docs.flutter.dev/), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +Unless you are making changes to this implementation package, this example is +very unlikely to be relevant. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist index 9625e105df3..a5ecb31c77d 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - io.flutter.flutter.app - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - App - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + dev.flutter + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + pointer_interceptor_ios_example + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 8a3aacab681..ba123159460 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -11,11 +11,11 @@ 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 92E5BF2B79626D08D4DF9E77 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9391770251506D259F6C2AC8 /* Pods_RunnerTests.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - CFB68197D52B546F94542F41 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */; }; + 9933B136C7675342A34834DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2674CA96E58F768B4FA8003 /* Pods_RunnerTests.framework */; }; + C3CDB7D07C0709C394280BD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 227A38501D8F7962D4AED76F /* Pods_Runner.framework */; }; F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ @@ -51,21 +51,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 08F34D873584638956767E46 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 128F37CE60EC1174C1B35F9B /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 1C20968F145FF82183D29E3A /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 21788A22379CD8A786A854F7 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - 296F986F7530269AB631DCEF /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 227A38501D8F7962D4AED76F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7036031342D281C2213AD9A6 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 48C2EDE2D7D14FB872A4A964 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 5688D462C1BA62DFD9E01C99 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 6697008C68CF28D8BA2BD483 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 9391770251506D259F6C2AC8 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8F4F63981F2AC303869A0038 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -73,7 +72,8 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 9978D0D01D3549F3784C2F44 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + B2674CA96E58F768B4FA8003 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E7625CAD0563F58AF8C32402 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; @@ -84,7 +84,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - CFB68197D52B546F94542F41 /* Pods_Runner.framework in Frameworks */, + C3CDB7D07C0709C394280BD3 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -92,7 +92,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 92E5BF2B79626D08D4DF9E77 /* Pods_RunnerTests.framework in Frameworks */, + 9933B136C7675342A34834DF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -106,21 +106,21 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 331C8082294A63A400263BE5 /* RunnerTests */ = { + 10016461137E9D5C998F5518 /* Frameworks */ = { isa = PBXGroup; children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, + 227A38501D8F7962D4AED76F /* Pods_Runner.framework */, + B2674CA96E58F768B4FA8003 /* Pods_RunnerTests.framework */, ); - path = RunnerTests; + name = Frameworks; sourceTree = ""; }; - 90E2426B5898B1C4B1DC0776 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - 5B6FB2CD38E750E672AB226D /* Pods_Runner.framework */, - 9391770251506D259F6C2AC8 /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, ); - name = Frameworks; + path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -143,7 +143,7 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, CA6EAE272C76E7B047DA5950 /* Pods */, - 90E2426B5898B1C4B1DC0776 /* Frameworks */, + 10016461137E9D5C998F5518 /* Frameworks */, ); sourceTree = ""; }; @@ -176,12 +176,12 @@ CA6EAE272C76E7B047DA5950 /* Pods */ = { isa = PBXGroup; children = ( - 7036031342D281C2213AD9A6 /* Pods-Runner.debug.xcconfig */, - 296F986F7530269AB631DCEF /* Pods-Runner.release.xcconfig */, - 9978D0D01D3549F3784C2F44 /* Pods-Runner.profile.xcconfig */, - 1C20968F145FF82183D29E3A /* Pods-RunnerTests.debug.xcconfig */, - 21788A22379CD8A786A854F7 /* Pods-RunnerTests.release.xcconfig */, - 08F34D873584638956767E46 /* Pods-RunnerTests.profile.xcconfig */, + E7625CAD0563F58AF8C32402 /* Pods-Runner.debug.xcconfig */, + 48C2EDE2D7D14FB872A4A964 /* Pods-Runner.release.xcconfig */, + 6697008C68CF28D8BA2BD483 /* Pods-Runner.profile.xcconfig */, + 5688D462C1BA62DFD9E01C99 /* Pods-RunnerTests.debug.xcconfig */, + 128F37CE60EC1174C1B35F9B /* Pods-RunnerTests.release.xcconfig */, + 8F4F63981F2AC303869A0038 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -201,7 +201,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 998CA51D3E88483212711089 /* [CP] Check Pods Manifest.lock */, + 8AC990575FF89AD4E077ACE7 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, BC115AEAD3E7FBA599A307D3 /* Frameworks */, @@ -220,14 +220,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - E34E2ED75CBB4B6FF95EF8ED /* [CP] Check Pods Manifest.lock */, + 175DEFF4E6BBF07224BBE62D /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 5BEAAE62EACCF98BC20F7183 /* [CP] Embed Pods Frameworks */, + D8D5CA77950C5ECC522F4D0D /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -330,55 +330,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { - isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", - ); - name = "Thin Binary"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; - }; - 5BEAAE62EACCF98BC20F7183 /* [CP] Embed Pods Frameworks */ = { + 175DEFF4E6BBF07224BBE62D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "Run Script"; + name = "Thin Binary"; outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 998CA51D3E88483212711089 /* [CP] Check Pods Manifest.lock */ = { + 8AC990575FF89AD4E077ACE7 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -400,26 +390,36 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - E34E2ED75CBB4B6FF95EF8ED /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + D8D5CA77950C5ECC522F4D0D /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -560,7 +560,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1C20968F145FF82183D29E3A /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 5688D462C1BA62DFD9E01C99 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -578,7 +578,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 21788A22379CD8A786A854F7 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 128F37CE60EC1174C1B35F9B /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -594,11 +594,12 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 08F34D873584638956767E46 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 8F4F63981F2AC303869A0038 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = S8QB4VV633; GENERATE_INFOPLIST_FILE = YES; MARKETING_VERSION = 1.0; PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md deleted file mode 100644 index 89c2725b70f..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Launch Screen Assets - -You can customize the launch screen with your own desired assets by replacing the image files in this directory. - -You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift index 10ce21526d6..aae4b389929 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift @@ -1,6 +1,9 @@ import Flutter import UIKit +/** + * A simple factory that creates a dummy platform view for testing. + */ public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { private var messenger: FlutterBinaryMessenger @@ -26,6 +29,9 @@ public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { } } +/** + * A native view that will remove it's tag if clicked. + */ public class CustomView: UIView { override public func hitTest( @@ -37,6 +43,9 @@ public class CustomView: UIView { } } +/** + * A flutter platform view that displays a simple native view. + */ class DummyPlatformView: NSObject, FlutterPlatformView { private var _view: CustomView; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index 5f9ed1e004c..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,26 +0,0 @@ -import Flutter -import UIKit -import XCTest - -@testable import pointer_interceptor_ios - -// This demonstrates a simple unit test of the Swift portion of this plugin's implementation. -// -// See https://developer.apple.com/documentation/xctest for more information about using XCTest. - -class RunnerTests: XCTestCase { - - func testGetPlatformVersion() { - let plugin = PointerInterceptorIosPlugin() - - let call = FlutterMethodCall(methodName: "getPlatformVersion", arguments: []) - - let resultExpectation = expectation(description: "result block must be called.") - plugin.handle(call) { result in - XCTAssertEqual(result as! String, "iOS " + UIDevice.current.systemVersion) - resultExpectation.fulfill() - } - waitForExpectations(timeout: 1) - } - -} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 09a1a4a9bc2..91178c111be 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -23,7 +23,7 @@ class _DummyPlatformView extends StatelessWidget { } } -/// Example flutter app with a button overlaying the native view +/// Example flutter app with a button overlaying the native view. class PointerInterceptorIOSExample extends StatefulWidget { /// Constructor const PointerInterceptorIOSExample({super.key}); diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml index 278d708c95b..23b858df53e 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -7,82 +7,29 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: sdk: '>=3.1.0-134.0.dev <4.0.0' -# Dependencies specify other packages that your package needs in order to work. -# To automatically upgrade your package dependencies to the latest versions -# consider running `flutter pub upgrade --major-versions`. Alternatively, -# dependencies can be manually updated by changing the version numbers below to -# the latest version available on pub.dev. To see which dependencies have newer -# versions available, run `flutter pub outdated`. dependencies: cupertino_icons: ^1.0.2 flutter: sdk: flutter pointer_interceptor: path: ../../pointer_interceptor - pointer_interceptor_ios: - # When depending on this package from a real application you should use: - # pointer_interceptor_ios: ^x.y.z - # See https://dart.dev/tools/pub/dependencies#version-constraints - # The example app is bundled with the plugin so we use a path dependency on - # the parent directory to use the current plugin's version. - path: ../../pointer_interceptor_ios +# pointer_interceptor_ios: +# # When depending on this package from a real application you should use: +# # pointer_interceptor_ios: ^x.y.z +# # See https://dart.dev/tools/pub/dependencies#version-constraints +# # The example app is bundled with the plugin so we use a path dependency on +# # the parent directory to use the current plugin's version. +# path: ../../pointer_interceptor_ios pointer_interceptor_platform_interface: path: ../../pointer_interceptor_platform_interface - # The following adds the Cupertino Icons font to your application. - # Use with the CupertinoIcons class for iOS style icons. - shared_preferences: ^2.2.2 - dev_dependencies: - # The "flutter_lints" package below contains a set of recommended lints to - # encourage good coding practices. The lint set provided by the package is - # activated in the `analysis_options.yaml` file located at the root of your - # package. See that file for information about deactivating specific lint - # rules and activating additional ones. flutter_lints: ^2.0.0 flutter_test: sdk: flutter integration_test: sdk: flutter -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec - -# The following section is specific to Flutter packages. flutter: - - # The following line ensures that the Material Icons font is - # included with your application, so that you can use the icons in - # the material Icons class. uses-material-design: true - # To add assets to your application, add an assets section, like this: - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg - - # An image asset can refer to one or more resolution-specific "variants", see - # https://flutter.dev/assets-and-images/#resolution-aware - - # For details regarding adding assets from package dependencies, see - # https://flutter.dev/assets-and-images/#from-packages - - # To add custom fonts to your application, add a fonts section here, - # in this "flutter" section. Each entry in this list should have a - # "family" key with the font family name, and a "fonts" key with a - # list giving the asset and other descriptors for the font. For - # example: - # fonts: - # - family: Schyler - # fonts: - # - asset: fonts/Schyler-Regular.ttf - # - asset: fonts/Schyler-Italic.ttf - # style: italic - # - family: Trajan Pro - # fonts: - # - asset: fonts/TrajanPro.ttf - # - asset: fonts/TrajanPro_Bold.ttf - # weight: 700 - # - # For details regarding fonts from package dependencies, - # see https://flutter.dev/custom-fonts/#from-packages diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift index e0bfeacf470..98730b73f6e 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/Classes/PointerInterceptorView.swift @@ -9,18 +9,11 @@ public class PointerInterceptorView: NSObject, FlutterPlatformView { let interceptorView: UIView init(frame:CGRect, debug:Bool) { - interceptorView = UIView(frame:frame) - if debug { - interceptorView.backgroundColor = UIColor(red: 1, green: 0, blue: 0, alpha: 0.5) - } else { - interceptorView.backgroundColor = UIColor.clear - } + interceptorView.backgroundColor = debug ? UIColor(red: 1, green: 0, blue: 0, alpha: 0.5) : UIColor.clear } public func view() -> UIView { return interceptorView; } - - } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec b/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec index ac3dbfb98ce..301ed379505 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec +++ b/packages/pointer_interceptor/pointer_interceptor_ios/ios/pointer_interceptor_ios.podspec @@ -5,7 +5,7 @@ Pod::Spec.new do |s| s.name = 'pointer_interceptor_ios' s.version = '0.0.1' - s.summary = 'Pointer Interceptor IOS' + s.summary = 'Implementation of pointer_interceptor for iOS.' s.description = <<-DESC This Flutter plugin provides means to prevent gestures from being swallowed by PlatformView on iOS. DESC @@ -16,8 +16,11 @@ This Flutter plugin provides means to prevent gestures from being swallowed by P s.source_files = 'Classes/**/*' s.dependency 'Flutter' s.platform = :ios, '11.0' - # Flutter.framework does not contain a i386 slice. s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } s.swift_version = '5.0' + s.xcconfig = { + 'LIBRARY_SEARCH_PATHS' => '$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)/ $(SDKROOT)/usr/lib/swift', + 'LD_RUNPATH_SEARCH_PATHS' => '/usr/lib/swift', + } end diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index cf770b8ea18..d8223485c4b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -6,9 +6,9 @@ import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart'; import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; -/// The iOS implementation of the [PointerInterceptorPlatform] +/// The iOS implementation of the [PointerInterceptorPlatform]. class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { - /// Register plugin as iOS version + /// Register plugin as iOS version. static void registerWith() { PointerInterceptorPlatform.instance = PointerInterceptorIOSPlugin(); } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index f1aa58b7487..921e6d5e6ae 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -3,10 +3,9 @@ description: iOS implementation of the pointer_interceptor plugin. repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen++label%3A%22p%3A+pointer_interceptor%22 version: 2.3.1 -publish_to: 'none' environment: - sdk: '>=3.1.0-134.0.dev <4.0.0' + sdk: '>=3.1.0' flutter: '>=3.13.0' flutter: @@ -23,9 +22,7 @@ dependencies: plugin_platform_interface: ^2.1.6 pointer_interceptor_platform_interface: path: ../pointer_interceptor_platform_interface - webview_flutter: ^3.0.4 dev_dependencies: - flutter_lints: ^2.0.0 flutter_test: sdk: flutter \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md index 51b57ed11f7..8e8a5212d58 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md @@ -1,3 +1,3 @@ -## 1.0.0 +## 0.9.0 * Initial release from migration to federated architecture. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md b/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md index 4f537878c48..6d955844139 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/README.md @@ -1,15 +1,26 @@ # pointer_interceptor_platform_interface -A new Flutter plugin project. +A common platform interface for the [`pointer_interceptor`][1] plugin. -## Getting Started +This interface allows platform-specific implementations of the `pointer_interceptor` +plugin, as well as the plugin itself, to ensure they are supporting the +same interface. -This project is a starting point for a Flutter -[plug-in package](https://flutter.dev/developing-packages/), -a specialized package that includes platform-specific implementation code for -Android and/or iOS. +# Usage -For help getting started with Flutter development, view the -[online documentation](https://flutter.dev/docs), which offers tutorials, -samples, guidance on mobile development, and a full API reference. +To implement a new platform-specific implementation of `pointer_interceptor`, extend +[`PointerInterceptorPlatform`][2] with an implementation that performs the +platform-specific behavior, and when you register your plugin, set the default +`PointerInterceptorPlatform` by calling +`PointerInterceptorPlatform.instance = MyPointerInterceptorPlatform()`. +# Note on breaking changes + +Strongly prefer non-breaking changes (such as adding a method to the interface) +over breaking changes for this package. + +See https://flutter.dev/go/platform-interface-breaking-changes for a discussion +on why a less-clean interface is preferable to a breaking change. + +[1]: ../pointer_interceptor +[2]: lib/pointer_interceptor_platform_interface.dart \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart index df0a930b487..273d8e1cd9a 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +// ignore_for_file: avoid_print + import 'package:flutter/widgets.dart'; import 'pointer_interceptor_platform.dart'; @@ -9,11 +11,17 @@ import 'pointer_interceptor_platform.dart'; /// A default implementation of [PointerInterceptorPlatform]. class NoOpPointerInterceptor extends PointerInterceptorPlatform { @override - Widget buildWidget( - {required Widget child, - bool intercepting = true, - bool debug = false, - Key? key}) { + Widget buildWidget({ + required Widget child, + bool intercepting = true, + bool debug = false, + Key? key, + }) { + print('Please note this no-op behavior is being deprecated soon, ' + 'so developers should remove the widget from mobile. ' + 'If you wish to instead opt-in to the new iOS implementation, ' + 'please include both pointer_interceptor_ios ' + 'and pointer_interceptor in your pubspec.yaml'); return child; } } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index adb419ec606..81ea8492c66 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -1,10 +1,10 @@ name: pointer_interceptor_platform_interface -description: "A new Flutter plugin project." +description: "A common platform interface for the pointer_interceptor plugin." version: 0.0.1 environment: sdk: '>=3.1.0-134.0.dev <4.0.0' - flutter: '>=3.13.0' + flutter: '>=3.1.0' dependencies: flutter: @@ -12,9 +12,6 @@ dependencies: plugin_platform_interface: ^2.1.0 dev_dependencies: - flutter_lints: ^2.0.0 flutter_test: sdk: flutter -# For information on the generic Dart part of this file, see the -# following page: https://dart.dev/tools/pub/pubspec From b73c75cd0e278035dcae3cd04b9a821cc88fe79e Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Sun, 12 Nov 2023 23:41:10 -0800 Subject: [PATCH 31/52] move pointer_interceptor_ios into part of pointer_interceptor --- .../src/dummy_pointer_interceptor_ios.dart | 11 -- .../lib/src/pointer_interceptor.dart | 1 + .../pointer_interceptor/pubspec.yaml | 7 +- .../pointer_interceptor_ios/README.md | 7 +- .../ios/Runner.xcodeproj/project.pbxproj | 130 ++++++++---------- .../example/pubspec.yaml | 9 -- .../lib/pointer_interceptor_ios.dart | 4 +- .../pointer_interceptor_ios/pubspec.yaml | 2 +- .../test/pointer_interceptor_ios_test.dart | 2 +- ....dart => default_pointer_interceptor.dart} | 7 +- .../lib/src/pointer_interceptor_platform.dart | 7 +- 11 files changed, 78 insertions(+), 109 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart rename packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/{no_op_pointer_interceptor.dart => default_pointer_interceptor.dart} (56%) diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart deleted file mode 100644 index af931d03ed6..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/dummy_pointer_interceptor_ios.dart +++ /dev/null @@ -1,11 +0,0 @@ -// TODO(louisehsu): Replace this empty file with PointerInterceptorIOS Implementation. - -/***= - * This file is a temporary solution as this allows existing usages of PointerInterceptor - * on iOS to maintain their no-op behaviour. Eventually, this file will be replaced with the - * iOS implementation of pointer_interceptor. - * - * Please note this no-op behavior is being deprecated soon, so developers should remove - * the widget from mobile. If you wish to instead opt-in to the new iOS implementation, - * please include both pointer_interceptor_ios and pointer_interceptor in your pubspec.yaml - */ diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index c561e1403b9..64e649f856f 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -33,6 +33,7 @@ class PointerInterceptor extends StatelessWidget { if (!intercepting) { return child; } + print(PointerInterceptorPlatform.instance); return PointerInterceptorPlatform.instance .buildWidget(child: child, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index fe850eff097..12fe6922f16 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -17,19 +17,18 @@ flutter: pluginClass: PointerInterceptorWeb fileName: ./src/pointer_interceptor_web.dart ios: - default_package: ./src/dummy_pointer_interceptor_ios.dart + default_package: pointer_interceptor_ios dependencies: flutter: sdk: flutter flutter_web_plugins: sdk: flutter + pointer_interceptor_ios: + path: ../pointer_interceptor_ios pointer_interceptor_platform_interface: path: ../pointer_interceptor_platform_interface - # flutter_web_plugins: - # sdk: flutter - dev_dependencies: flutter_test: sdk: flutter diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/README.md b/packages/pointer_interceptor/pointer_interceptor_ios/README.md index e1ff672b902..ca30d6d9def 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/README.md +++ b/packages/pointer_interceptor/pointer_interceptor_ios/README.md @@ -4,7 +4,12 @@ The iOS implementation of [`pointer interceptor`][1]. ## Usage -This package is NOT [endorsed][2]. To use this package, please include this into your `pubspec.yaml` along with [`pointer_interceptor`][1]. +This package is [endorsed][2], which means you can simply use `pointer_interceptor` +normally. This package will be automatically included in your app when you do, +so you do not need to add it to your `pubspec.yaml`. + +However, if you `import` this package to use any of its APIs directly, you +should add it to your `pubspec.yaml` as usual. [1]: https://pub.dev/packages/pointer_interceptor [2]: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#endorsed-federated-plugin \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index ba123159460..61d3640a5b0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 5C32F590444FDF86ABD113B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 495440CE0320ED29310AEF97 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9933B136C7675342A34834DF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B2674CA96E58F768B4FA8003 /* Pods_RunnerTests.framework */; }; - C3CDB7D07C0709C394280BD3 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 227A38501D8F7962D4AED76F /* Pods_Runner.framework */; }; + 9E1782981D35A4483CE8EA26 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B0565DEC840B52D9E12AB13 /* Pods_RunnerTests.framework */; }; F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ @@ -51,20 +50,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 128F37CE60EC1174C1B35F9B /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 227A38501D8F7962D4AED76F /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 48C2EDE2D7D14FB872A4A964 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 5688D462C1BA62DFD9E01C99 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - 6697008C68CF28D8BA2BD483 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 3FF0A06D8CBC786B3A14CF1B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 43D581BFCCF535C6560A134B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 495440CE0320ED29310AEF97 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5B0565DEC840B52D9E12AB13 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6068A1FAE364B0B9BE546362 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 739EE69B5EE51244467950D3 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8F4F63981F2AC303869A0038 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -72,8 +71,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B2674CA96E58F768B4FA8003 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E7625CAD0563F58AF8C32402 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + BDB6080EFF9E3A486EB4B3C3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; @@ -84,7 +82,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - C3CDB7D07C0709C394280BD3 /* Pods_Runner.framework in Frameworks */, + 5C32F590444FDF86ABD113B9 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -92,7 +90,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 9933B136C7675342A34834DF /* Pods_RunnerTests.framework in Frameworks */, + 9E1782981D35A4483CE8EA26 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -106,23 +104,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 10016461137E9D5C998F5518 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 227A38501D8F7962D4AED76F /* Pods_Runner.framework */, - B2674CA96E58F768B4FA8003 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -141,9 +122,8 @@ 97C146F01CF9000F007C117D /* Runner */, F243D60F2AE053F700F4A2FC /* RunnerUITests */, 97C146EF1CF9000F007C117D /* Products */, - 331C8082294A63A400263BE5 /* RunnerTests */, CA6EAE272C76E7B047DA5950 /* Pods */, - 10016461137E9D5C998F5518 /* Frameworks */, + BEBAB38D93848CED8386D442 /* Frameworks */, ); sourceTree = ""; }; @@ -173,15 +153,24 @@ path = Runner; sourceTree = ""; }; + BEBAB38D93848CED8386D442 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 495440CE0320ED29310AEF97 /* Pods_Runner.framework */, + 5B0565DEC840B52D9E12AB13 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; CA6EAE272C76E7B047DA5950 /* Pods */ = { isa = PBXGroup; children = ( - E7625CAD0563F58AF8C32402 /* Pods-Runner.debug.xcconfig */, - 48C2EDE2D7D14FB872A4A964 /* Pods-Runner.release.xcconfig */, - 6697008C68CF28D8BA2BD483 /* Pods-Runner.profile.xcconfig */, - 5688D462C1BA62DFD9E01C99 /* Pods-RunnerTests.debug.xcconfig */, - 128F37CE60EC1174C1B35F9B /* Pods-RunnerTests.release.xcconfig */, - 8F4F63981F2AC303869A0038 /* Pods-RunnerTests.profile.xcconfig */, + 3FF0A06D8CBC786B3A14CF1B /* Pods-Runner.debug.xcconfig */, + BDB6080EFF9E3A486EB4B3C3 /* Pods-Runner.release.xcconfig */, + 43D581BFCCF535C6560A134B /* Pods-Runner.profile.xcconfig */, + 739EE69B5EE51244467950D3 /* Pods-RunnerTests.debug.xcconfig */, + 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */, + 6068A1FAE364B0B9BE546362 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -201,7 +190,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 8AC990575FF89AD4E077ACE7 /* [CP] Check Pods Manifest.lock */, + CBC52D71EECA120988749479 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, BC115AEAD3E7FBA599A307D3 /* Frameworks */, @@ -220,14 +209,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 175DEFF4E6BBF07224BBE62D /* [CP] Check Pods Manifest.lock */, + 7ACD84171B3C36D6459FB9ED /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D8D5CA77950C5ECC522F4D0D /* [CP] Embed Pods Frameworks */, + AC3853180BF63AFAEC321D96 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -330,28 +319,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 175DEFF4E6BBF07224BBE62D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -368,7 +335,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 8AC990575FF89AD4E077ACE7 /* [CP] Check Pods Manifest.lock */ = { + 7ACD84171B3C36D6459FB9ED /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -383,7 +350,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -405,7 +372,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - D8D5CA77950C5ECC522F4D0D /* [CP] Embed Pods Frameworks */ = { + AC3853180BF63AFAEC321D96 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -422,6 +389,28 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; + CBC52D71EECA120988749479 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -429,7 +418,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -560,7 +548,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5688D462C1BA62DFD9E01C99 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 739EE69B5EE51244467950D3 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -578,7 +566,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 128F37CE60EC1174C1B35F9B /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -594,7 +582,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8F4F63981F2AC303869A0038 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 6068A1FAE364B0B9BE546362 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml index 23b858df53e..344f981e24c 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/pubspec.yaml @@ -13,15 +13,6 @@ dependencies: sdk: flutter pointer_interceptor: path: ../../pointer_interceptor -# pointer_interceptor_ios: -# # When depending on this package from a real application you should use: -# # pointer_interceptor_ios: ^x.y.z -# # See https://dart.dev/tools/pub/dependencies#version-constraints -# # The example app is bundled with the plugin so we use a path dependency on -# # the parent directory to use the current plugin's version. -# path: ../../pointer_interceptor_ios - pointer_interceptor_platform_interface: - path: ../../pointer_interceptor_platform_interface dev_dependencies: flutter_lints: ^2.0.0 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart index d8223485c4b..f92e8faaec0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/lib/pointer_interceptor_ios.dart @@ -7,10 +7,10 @@ import 'package:flutter/widgets.dart'; import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; /// The iOS implementation of the [PointerInterceptorPlatform]. -class PointerInterceptorIOSPlugin extends PointerInterceptorPlatform { +class PointerInterceptorIOS extends PointerInterceptorPlatform { /// Register plugin as iOS version. static void registerWith() { - PointerInterceptorPlatform.instance = PointerInterceptorIOSPlugin(); + PointerInterceptorPlatform.instance = PointerInterceptorIOS(); } @override diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index 921e6d5e6ae..7e4a6a5a67a 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -14,7 +14,7 @@ flutter: platforms: ios: pluginClass: PointerInterceptorIosPlugin - dartPluginClass: PointerInterceptorIOSPlugin + dartPluginClass: PointerInterceptorIOS dependencies: flutter: diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index 60e8050f8f8..fc8c21c7176 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -21,7 +21,7 @@ class TestAppState extends State { body: const Text('Body'), floatingActionButton: FloatingActionButton( onPressed: () {}, - child: PointerInterceptorIOSPlugin().buildWidget( + child: PointerInterceptorIOS().buildWidget( child: TextButton( onPressed: () => setState(() { _buttonText = 'Clicked'; diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart similarity index 56% rename from packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart rename to packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart index 273d8e1cd9a..957b3c9196b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/no_op_pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart @@ -9,7 +9,7 @@ import 'package:flutter/widgets.dart'; import 'pointer_interceptor_platform.dart'; /// A default implementation of [PointerInterceptorPlatform]. -class NoOpPointerInterceptor extends PointerInterceptorPlatform { +class DefaultPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget({ required Widget child, @@ -17,11 +17,6 @@ class NoOpPointerInterceptor extends PointerInterceptorPlatform { bool debug = false, Key? key, }) { - print('Please note this no-op behavior is being deprecated soon, ' - 'so developers should remove the widget from mobile. ' - 'If you wish to instead opt-in to the new iOS implementation, ' - 'please include both pointer_interceptor_ios ' - 'and pointer_interceptor in your pubspec.yaml'); return child; } } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index 7db76ead681..3f469e9fe55 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -5,7 +5,7 @@ import 'package:flutter/widgets.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart'; -import 'no_op_pointer_interceptor.dart'; +import 'default_pointer_interceptor.dart'; /// Platform-specific implementations should set this with their own /// platform-specific class that extends [PointerInterceptorPlatform] when @@ -16,7 +16,7 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { static final Object _token = Object(); - static PointerInterceptorPlatform _instance = NoOpPointerInterceptor(); + static PointerInterceptorPlatform _instance = DefaultPointerInterceptor(); static set instance(PointerInterceptorPlatform? instance) { if (instance == null) { @@ -30,7 +30,7 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { /// The default instance of [PointerInterceptorPlatform] to use. /// - /// Defaults to [NoOpPointerInterceptor], which does not do anything + /// Defaults to [DefaultPointerInterceptor], which does not do anything static PointerInterceptorPlatform get instance => _instance; /// Platform-specific implementations should override this function their own @@ -40,6 +40,7 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { bool debug = false, Key? key, }) { + print(instance); throw UnimplementedError('buildWidget() has not been implemented.'); } } From b309e3191e6f6033168cc52e3c71e0112679c975 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Sun, 12 Nov 2023 23:47:57 -0800 Subject: [PATCH 32/52] remove accidental prints --- .../pointer_interceptor/example/.metadata | 15 --------------- .../lib/src/pointer_interceptor.dart | 1 - .../lib/src/pointer_interceptor_platform.dart | 1 - 3 files changed, 17 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/.metadata b/packages/pointer_interceptor/pointer_interceptor/example/.metadata index e6893906f99..45df7cb6cc4 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/.metadata +++ b/packages/pointer_interceptor/pointer_interceptor/example/.metadata @@ -15,24 +15,9 @@ migration: - platform: root create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - - platform: android - create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - platform: ios create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - - platform: linux - create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - - platform: macos - create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - - platform: web - create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - - platform: windows - create_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 - base_revision: 969911d1d09d6c4f145e9ce27c08093e8c285561 # User provided section diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart index 64e649f856f..c561e1403b9 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor.dart @@ -33,7 +33,6 @@ class PointerInterceptor extends StatelessWidget { if (!intercepting) { return child; } - print(PointerInterceptorPlatform.instance); return PointerInterceptorPlatform.instance .buildWidget(child: child, debug: debug, key: key); } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart index 3f469e9fe55..59b558a7b1f 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/pointer_interceptor_platform.dart @@ -40,7 +40,6 @@ abstract class PointerInterceptorPlatform extends PlatformInterface { bool debug = false, Key? key, }) { - print(instance); throw UnimplementedError('buildWidget() has not been implemented.'); } } From 4edc671269f070ca880204c0e4825ebc30ee441b Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Sun, 12 Nov 2023 23:56:07 -0800 Subject: [PATCH 33/52] add publish to none --- .../pointer_interceptor/pointer_interceptor_ios/pubspec.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index 7e4a6a5a67a..7843cd90ace 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -3,6 +3,7 @@ description: iOS implementation of the pointer_interceptor plugin. repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen++label%3A%22p%3A+pointer_interceptor%22 version: 2.3.1 +publish_to: none environment: sdk: '>=3.1.0' From 60ec17bc5e1f4e0e17e3441f2bce29d536c8c337 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 13 Nov 2023 00:08:38 -0800 Subject: [PATCH 34/52] add ios configuration to example package --- .../example/ios/.gitignore | 34 + .../ios/Flutter/AppFrameworkInfo.plist | 26 + .../example/ios/Flutter/Debug.xcconfig | 2 + .../example/ios/Flutter/Release.xcconfig | 2 + .../pointer_interceptor/example/ios/Podfile | 44 ++ .../ios/Runner.xcodeproj/project.pbxproj | 725 ++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../xcshareddata/xcschemes/Runner.xcscheme | 98 +++ .../contents.xcworkspacedata | 10 + .../xcshareddata/IDEWorkspaceChecks.plist | 8 + .../xcshareddata/WorkspaceSettings.xcsettings | 8 + .../example/ios/Runner/AppDelegate.swift | 13 + .../AppIcon.appiconset/Contents.json | 122 +++ .../Icon-App-1024x1024@1x.png | Bin 0 -> 10932 bytes .../AppIcon.appiconset/Icon-App-20x20@1x.png | Bin 0 -> 295 bytes .../AppIcon.appiconset/Icon-App-20x20@2x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-20x20@3x.png | Bin 0 -> 450 bytes .../AppIcon.appiconset/Icon-App-29x29@1x.png | Bin 0 -> 282 bytes .../AppIcon.appiconset/Icon-App-29x29@2x.png | Bin 0 -> 462 bytes .../AppIcon.appiconset/Icon-App-29x29@3x.png | Bin 0 -> 704 bytes .../AppIcon.appiconset/Icon-App-40x40@1x.png | Bin 0 -> 406 bytes .../AppIcon.appiconset/Icon-App-40x40@2x.png | Bin 0 -> 586 bytes .../AppIcon.appiconset/Icon-App-40x40@3x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@2x.png | Bin 0 -> 862 bytes .../AppIcon.appiconset/Icon-App-60x60@3x.png | Bin 0 -> 1674 bytes .../AppIcon.appiconset/Icon-App-76x76@1x.png | Bin 0 -> 762 bytes .../AppIcon.appiconset/Icon-App-76x76@2x.png | Bin 0 -> 1226 bytes .../Icon-App-83.5x83.5@2x.png | Bin 0 -> 1418 bytes .../LaunchImage.imageset/Contents.json | 23 + .../LaunchImage.imageset/LaunchImage.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@2x.png | Bin 0 -> 68 bytes .../LaunchImage.imageset/LaunchImage@3x.png | Bin 0 -> 68 bytes .../Runner/Base.lproj/LaunchScreen.storyboard | 37 + .../ios/Runner/Base.lproj/Main.storyboard | 26 + .../example/ios/Runner/Info.plist | 49 ++ .../ios/Runner/Runner-Bridging-Header.h | 1 + .../example/ios/RunnerTests/RunnerTests.swift | 12 + .../ios/Runner.xcodeproj/project.pbxproj | 144 ---- .../pubspec.yaml | 1 + 41 files changed, 1264 insertions(+), 144 deletions(-) create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/.gitignore create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/AppFrameworkInfo.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Debug.xcconfig create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Release.xcconfig create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/Main.storyboard create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/.gitignore b/packages/pointer_interceptor/pointer_interceptor/example/ios/.gitignore new file mode 100644 index 00000000000..7a7f9873ad7 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/AppFrameworkInfo.plist b/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 00000000000..9625e105df3 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Debug.xcconfig b/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 00000000000..ec97fc6f302 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Release.xcconfig b/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Release.xcconfig new file mode 100644 index 00000000000..c4855bfe200 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile b/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile new file mode 100644 index 00000000000..fdcc671eb34 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile @@ -0,0 +1,44 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '11.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + use_modular_headers! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..4cf0362c6c4 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,725 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 347725BE8B139589DCEF27CB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30A6BBCBDBF121EF5AB37891 /* Pods_RunnerTests.framework */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + B42E6688CF6D533A672F99FA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 30A6BBCBDBF121EF5AB37891 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 8BA87836106AD097565548A6 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + D1541F5A096B8882503CFC4E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + F33FCBEB709E16FA17277EE4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 481F635FF99F21DB6CE5074C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 347725BE8B139589DCEF27CB /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B42E6688CF6D533A672F99FA /* Pods_Runner.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 0611E84C8FDCDE5A710A5991 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */, + 30A6BBCBDBF121EF5AB37891 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 1C9A5A1A7487CB72068132AF /* Pods */ = { + isa = PBXGroup; + children = ( + D1541F5A096B8882503CFC4E /* Pods-Runner.debug.xcconfig */, + F33FCBEB709E16FA17277EE4 /* Pods-Runner.release.xcconfig */, + 8BA87836106AD097565548A6 /* Pods-Runner.profile.xcconfig */, + B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */, + D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */, + 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + 1C9A5A1A7487CB72068132AF /* Pods */, + 0611E84C8FDCDE5A710A5991 /* Frameworks */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + D74D8217940E678B679B4251 /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 481F635FF99F21DB6CE5074C /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 132A6E50737F13F7D1A77FBC /* [CP] Check Pods Manifest.lock */, + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + AF30B8576CD54E4B905A2F2C /* [CP] Embed Pods Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1430; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 132A6E50737F13F7D1A77FBC /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; + AF30B8576CD54E4B905A2F2C /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + D74D8217940E678B679B4251 /* [CP] Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = PZ83UV676J; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = PZ83UV676J; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = PZ83UV676J; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.example; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..919434a6254 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 00000000000..87131a09bea --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 00000000000..21a3cc14c74 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 00000000000..18d981003d6 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 00000000000..f9b0d7c5ea1 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift new file mode 100644 index 00000000000..70693e4a8c1 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import UIKit +import Flutter + +@UIApplicationMain +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 00000000000..d36b1fab2d9 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..dc9ada4725e9b0ddb1deab583e5b5102493aa332 GIT binary patch literal 10932 zcmeHN2~<R zh`|8`A_PQ1nSu(UMFx?8j8PC!!VDphaL#`F42fd#7Vlc`zIE4n%Y~eiz4y1j|NDpi z?<@|pSJ-HM`qifhf@m%MamgwK83`XpBA<+azdF#2QsT{X@z0A9Bq>~TVErigKH1~P zRX-!h-f0NJ4Mh++{D}J+K>~~rq}d%o%+4dogzXp7RxX4C>Km5XEI|PAFDmo;DFm6G zzjVoB`@qW98Yl0Kvc-9w09^PrsobmG*Eju^=3f?0o-t$U)TL1B3;sZ^!++3&bGZ!o-*6w?;oOhf z=A+Qb$scV5!RbG+&2S}BQ6YH!FKb0``VVX~T$dzzeSZ$&9=X$3)_7Z{SspSYJ!lGE z7yig_41zpQ)%5dr4ff0rh$@ky3-JLRk&DK)NEIHecf9c*?Z1bUB4%pZjQ7hD!A0r-@NF(^WKdr(LXj|=UE7?gBYGgGQV zidf2`ZT@pzXf7}!NH4q(0IMcxsUGDih(0{kRSez&z?CFA0RVXsVFw3^u=^KMtt95q z43q$b*6#uQDLoiCAF_{RFc{!H^moH_cmll#Fc^KXi{9GDl{>%+3qyfOE5;Zq|6#Hb zp^#1G+z^AXfRKaa9HK;%b3Ux~U@q?xg<2DXP%6k!3E)PA<#4$ui8eDy5|9hA5&{?v z(-;*1%(1~-NTQ`Is1_MGdQ{+i*ccd96ab$R$T3=% zw_KuNF@vI!A>>Y_2pl9L{9h1-C6H8<)J4gKI6{WzGBi<@u3P6hNsXG=bRq5c+z;Gc3VUCe;LIIFDmQAGy+=mRyF++u=drBWV8-^>0yE9N&*05XHZpPlE zxu@?8(ZNy7rm?|<+UNe0Vs6&o?l`Pt>P&WaL~M&#Eh%`rg@Mbb)J&@DA-wheQ>hRV z<(XhigZAT z>=M;URcdCaiO3d^?H<^EiEMDV+7HsTiOhoaMX%P65E<(5xMPJKxf!0u>U~uVqnPN7T!X!o@_gs3Ct1 zlZ_$5QXP4{Aj645wG_SNT&6m|O6~Tsl$q?nK*)(`{J4b=(yb^nOATtF1_aS978$x3 zx>Q@s4i3~IT*+l{@dx~Hst21fR*+5}S1@cf>&8*uLw-0^zK(+OpW?cS-YG1QBZ5q! zgTAgivzoF#`cSz&HL>Ti!!v#?36I1*l^mkrx7Y|K6L#n!-~5=d3;K<;Zqi|gpNUn_ z_^GaQDEQ*jfzh;`j&KXb66fWEk1K7vxQIMQ_#Wu_%3 z4Oeb7FJ`8I>Px;^S?)}2+4D_83gHEq>8qSQY0PVP?o)zAv3K~;R$fnwTmI-=ZLK`= zTm+0h*e+Yfr(IlH3i7gUclNH^!MU>id$Jw>O?2i0Cila#v|twub21@e{S2v}8Z13( zNDrTXZVgris|qYm<0NU(tAPouG!QF4ZNpZPkX~{tVf8xY690JqY1NVdiTtW+NqyRP zZ&;T0ikb8V{wxmFhlLTQ&?OP7 z;(z*<+?J2~z*6asSe7h`$8~Se(@t(#%?BGLVs$p``;CyvcT?7Y!{tIPva$LxCQ&4W z6v#F*);|RXvI%qnoOY&i4S*EL&h%hP3O zLsrFZhv&Hu5tF$Lx!8(hs&?!Kx5&L(fdu}UI5d*wn~A`nPUhG&Rv z2#ixiJdhSF-K2tpVL=)5UkXRuPAFrEW}7mW=uAmtVQ&pGE-&az6@#-(Te^n*lrH^m@X-ftVcwO_#7{WI)5v(?>uC9GG{lcGXYJ~Q8q zbMFl7;t+kV;|;KkBW2!P_o%Czhw&Q(nXlxK9ak&6r5t_KH8#1Mr-*0}2h8R9XNkr zto5-b7P_auqTJb(TJlmJ9xreA=6d=d)CVbYP-r4$hDn5|TIhB>SReMfh&OVLkMk-T zYf%$taLF0OqYF?V{+6Xkn>iX@TuqQ?&cN6UjC9YF&%q{Ut3zv{U2)~$>-3;Dp)*(? zg*$mu8^i=-e#acaj*T$pNowo{xiGEk$%DusaQiS!KjJH96XZ-hXv+jk%ard#fu=@Q z$AM)YWvE^{%tDfK%nD49=PI|wYu}lYVbB#a7wtN^Nml@CE@{Gv7+jo{_V?I*jkdLD zJE|jfdrmVbkfS>rN*+`#l%ZUi5_bMS<>=MBDNlpiSb_tAF|Zy`K7kcp@|d?yaTmB^ zo?(vg;B$vxS|SszusORgDg-*Uitzdi{dUV+glA~R8V(?`3GZIl^egW{a919!j#>f` znL1o_^-b`}xnU0+~KIFLQ)$Q6#ym%)(GYC`^XM*{g zv3AM5$+TtDRs%`2TyR^$(hqE7Y1b&`Jd6dS6B#hDVbJlUXcG3y*439D8MrK!2D~6gn>UD4Imctb z+IvAt0iaW73Iq$K?4}H`7wq6YkTMm`tcktXgK0lKPmh=>h+l}Y+pDtvHnG>uqBA)l zAH6BV4F}v$(o$8Gfo*PB>IuaY1*^*`OTx4|hM8jZ?B6HY;F6p4{`OcZZ(us-RVwDx zUzJrCQlp@mz1ZFiSZ*$yX3c_#h9J;yBE$2g%xjmGF4ca z&yL`nGVs!Zxsh^j6i%$a*I3ZD2SoNT`{D%mU=LKaEwbN(_J5%i-6Va?@*>=3(dQy` zOv%$_9lcy9+(t>qohkuU4r_P=R^6ME+wFu&LA9tw9RA?azGhjrVJKy&8=*qZT5Dr8g--d+S8zAyJ$1HlW3Olryt`yE zFIph~Z6oF&o64rw{>lgZISC6p^CBer9C5G6yq%?8tC+)7*d+ib^?fU!JRFxynRLEZ zj;?PwtS}Ao#9whV@KEmwQgM0TVP{hs>dg(1*DiMUOKHdQGIqa0`yZnHk9mtbPfoLx zo;^V6pKUJ!5#n`w2D&381#5#_t}AlTGEgDz$^;u;-vxDN?^#5!zN9ngytY@oTv!nc zp1Xn8uR$1Z;7vY`-<*?DfPHB;x|GUi_fI9@I9SVRv1)qETbNU_8{5U|(>Du84qP#7 z*l9Y$SgA&wGbj>R1YeT9vYjZuC@|{rajTL0f%N@>3$DFU=`lSPl=Iv;EjuGjBa$Gw zHD-;%YOE@<-!7-Mn`0WuO3oWuL6tB2cpPw~Nvuj|KM@))ixuDK`9;jGMe2d)7gHin zS<>k@!x;!TJEc#HdL#RF(`|4W+H88d4V%zlh(7#{q2d0OQX9*FW^`^_<3r$kabWAB z$9BONo5}*(%kx zOXi-yM_cmB3>inPpI~)duvZykJ@^^aWzQ=eQ&STUa}2uT@lV&WoRzkUoE`rR0)`=l zFT%f|LA9fCw>`enm$p7W^E@U7RNBtsh{_-7vVz3DtB*y#*~(L9+x9*wn8VjWw|Q~q zKFsj1Yl>;}%MG3=PY`$g$_mnyhuV&~O~u~)968$0b2!Jkd;2MtAP#ZDYw9hmK_+M$ zb3pxyYC&|CuAbtiG8HZjj?MZJBFbt`ryf+c1dXFuC z0*ZQhBzNBd*}s6K_G}(|Z_9NDV162#y%WSNe|FTDDhx)K!c(mMJh@h87@8(^YdK$&d*^WQe8Z53 z(|@MRJ$Lk-&ii74MPIs80WsOFZ(NX23oR-?As+*aq6b?~62@fSVmM-_*cb1RzZ)`5$agEiL`-E9s7{GM2?(KNPgK1(+c*|-FKoy}X(D_b#etO|YR z(BGZ)0Ntfv-7R4GHoXp?l5g#*={S1{u-QzxCGng*oWr~@X-5f~RA14b8~B+pLKvr4 zfgL|7I>jlak9>D4=(i(cqYf7#318!OSR=^`xxvI!bBlS??`xxWeg?+|>MxaIdH1U~#1tHu zB{QMR?EGRmQ_l4p6YXJ{o(hh-7Tdm>TAX380TZZZyVkqHNzjUn*_|cb?T? zt;d2s-?B#Mc>T-gvBmQZx(y_cfkXZO~{N zT6rP7SD6g~n9QJ)8F*8uHxTLCAZ{l1Y&?6v)BOJZ)=R-pY=Y=&1}jE7fQ>USS}xP#exo57uND0i*rEk@$;nLvRB@u~s^dwRf?G?_enN@$t* zbL%JO=rV(3Ju8#GqUpeE3l_Wu1lN9Y{D4uaUe`g>zlj$1ER$6S6@{m1!~V|bYkhZA z%CvrDRTkHuajMU8;&RZ&itnC~iYLW4DVkP<$}>#&(`UO>!n)Po;Mt(SY8Yb`AS9lt znbX^i?Oe9r_o=?})IHKHoQGKXsps_SE{hwrg?6dMI|^+$CeC&z@*LuF+P`7LfZ*yr+KN8B4{Nzv<`A(wyR@!|gw{zB6Ha ziwPAYh)oJ(nlqSknu(8g9N&1hu0$vFK$W#mp%>X~AU1ay+EKWcFdif{% z#4!4aoVVJ;ULmkQf!ke2}3hqxLK>eq|-d7Ly7-J9zMpT`?dxo6HdfJA|t)?qPEVBDv z{y_b?4^|YA4%WW0VZd8C(ZgQzRI5(I^)=Ub`Y#MHc@nv0w-DaJAqsbEHDWG8Ia6ju zo-iyr*sq((gEwCC&^TYBWt4_@|81?=B-?#P6NMff(*^re zYqvDuO`K@`mjm_Jd;mW_tP`3$cS?R$jR1ZN09$YO%_iBqh5ftzSpMQQtxKFU=FYmP zeY^jph+g<4>YO;U^O>-NFLn~-RqlHvnZl2yd2A{Yc1G@Ga$d+Q&(f^tnPf+Z7serIU};17+2DU_f4Z z@GaPFut27d?!YiD+QP@)T=77cR9~MK@bd~pY%X(h%L={{OIb8IQmf-!xmZkm8A0Ga zQSWONI17_ru5wpHg3jI@i9D+_Y|pCqVuHJNdHUauTD=R$JcD2K_liQisqG$(sm=k9;L* z!L?*4B~ql7uioSX$zWJ?;q-SWXRFhz2Jt4%fOHA=Bwf|RzhwqdXGr78y$J)LR7&3T zE1WWz*>GPWKZ0%|@%6=fyx)5rzUpI;bCj>3RKzNG_1w$fIFCZ&UR0(7S?g}`&Pg$M zf`SLsz8wK82Vyj7;RyKmY{a8G{2BHG%w!^T|Njr!h9TO2LaP^_f22Q1=l$QiU84ao zHe_#{S6;qrC6w~7{y(hs-?-j?lbOfgH^E=XcSgnwW*eEz{_Z<_xN#0001NP)t-s|Ns9~ z#rXRE|M&d=0au&!`~QyF`q}dRnBDt}*!qXo`c{v z{Djr|@Adh0(D_%#_&mM$D6{kE_x{oE{l@J5@%H*?%=t~i_`ufYOPkAEn!pfkr2$fs z652Tz0001XNklqeeKN4RM4i{jKqmiC$?+xN>3Apn^ z0QfuZLym_5b<*QdmkHjHlj811{If)dl(Z2K0A+ekGtrFJb?g|wt#k#pV-#A~bK=OT ts8>{%cPtyC${m|1#B1A6#u!Q;umknL1chzTM$P~L002ovPDHLkV1lTfnu!1a literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..797d452e458972bab9d994556c8305db4c827017 GIT binary patch literal 406 zcmV;H0crk;P))>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ed2d933e1120817fe9182483a228007b18ab6ae GIT binary patch literal 450 zcmV;z0X_bSP)iGWQ_5NJQ_~rNh*z)}eT%KUb z`7gNk0#AwF^#0T0?hIa^`~Ck;!}#m+_uT050aTR(J!bU#|IzRL%^UsMS#KsYnTF*!YeDOytlP4VhV?b} z%rz_<=#CPc)tU1MZTq~*2=8~iZ!lSa<{9b@2Jl;?IEV8)=fG217*|@)CCYgFze-x? zIFODUIA>nWKpE+bn~n7;-89sa>#DR>TSlqWk*!2hSN6D~Qb#VqbP~4Fk&m`@1$JGr zXPIdeRE&b2Thd#{MtDK$px*d3-Wx``>!oimf%|A-&-q*6KAH)e$3|6JV%HX{Hig)k suLT-RhftRq8b9;(V=235Wa|I=027H2wCDra;{X5v07*qoM6N<$f;9x^2LJ#7 literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd7b0099ca80c806f8fe495613e8d6c69460d76 GIT binary patch literal 282 zcmV+#0p(^bcu7P-R4C8Q z&e;xxFbF_Vrezo%_kH*OKhshZ6BFpG-Y1e10`QXJKbND7AMQ&cMj60B5TNObaZxYybcN07*qoM6N<$g3m;S%K!iX literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fe730945a01f64a61e2235dbe3f45b08f7729182 GIT binary patch literal 462 zcmV;<0WtoGP)-}iV`2<;=$?g5M=KQbZ{F&YRNy7Nn@%_*5{gvDM0aKI4?ESmw z{NnZg)A0R`+4?NF_RZexyVB&^^ZvN!{I28tr{Vje;QNTz`dG&Jz0~Ek&f2;*Z7>B|cg}xYpxEFY+0YrKLF;^Q+-HreN0P{&i zK~zY`?b7ECf-n?@;d<&orQ*Q7KoR%4|C>{W^h6@&01>0SKS`dn{Q}GT%Qj_{PLZ_& zs`MFI#j-(>?bvdZ!8^xTwlY{qA)T4QLbY@j(!YJ7aXJervHy6HaG_2SB`6CC{He}f zHVw(fJWApwPq!6VY7r1w-Fs)@ox~N+q|w~e;JI~C4Vf^@d>Wvj=fl`^u9x9wd9 zR%3*Q+)t%S!MU_`id^@&Y{y7-r98lZX0?YrHlfmwb?#}^1b{8g&KzmkE(L>Z&)179 zp<)v6Y}pRl100G2FL_t(o!|l{-Q-VMg#&MKg7c{O0 z2wJImOS3Gy*Z2Qifdv~JYOp;v+U)a|nLoc7hNH;I$;lzDt$}rkaFw1mYK5_0Q(Sut zvbEloxON7$+HSOgC9Z8ltuC&0OSF!-mXv5caV>#bc3@hBPX@I$58-z}(ZZE!t-aOG zpjNkbau@>yEzH(5Yj4kZiMH32XI!4~gVXNnjAvRx;Sdg^`>2DpUEwoMhTs_st8pKG z(%SHyHdU&v%f36~uERh!bd`!T2dw;z6PrOTQ7Vt*#9F2uHlUVnb#ev_o^fh}Dzmq} zWtlk35}k=?xj28uO|5>>$yXadTUE@@IPpgH`gJ~Ro4>jd1IF|(+IX>8M4Ps{PNvmI zNj4D+XgN83gPt_Gm}`Ybv{;+&yu-C(Grdiahmo~BjG-l&mWM+{e5M1sm&=xduwgM9 z`8OEh`=F3r`^E{n_;%9weN{cf2%7=VzC@cYj+lg>+3|D|_1C@{hcU(DyQG_BvBWe? zvTv``=%b1zrol#=R`JB)>cdjpWt&rLJgVp-t?DREyuq1A%0Z4)6_WsQ7{nzjN zo!X zGXV)2i3kcZIL~_j>uIKPK_zib+3T+Nt3Mb&Br)s)UIaA}@p{wDda>7=Q|mGRp7pqY zkJ!7E{MNz$9nOwoVqpFb)}$IP24Wn2JJ=Cw(!`OXJBr45rP>>AQr$6c7slJWvbpNW z@KTwna6d?PP>hvXCcp=4F;=GR@R4E7{4VU^0p4F>v^#A|>07*qoM6N<$f*5nx ACIA2c literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..502f463a9bc882b461c96aadf492d1729e49e725 GIT binary patch literal 586 zcmV-Q0=4~#P)+}#`wDE{8-2Mebf5<{{PqV{TgVcv*r8?UZ3{-|G?_}T*&y;@cqf{ z{Q*~+qr%%p!1pS*_Uicl#q9lc(D`!D`LN62sNwq{oYw(Wmhk)k<@f$!$@ng~_5)Ru z0Z)trIA5^j{DIW^c+vT2%lW+2<(RtE2wR;4O@)Tm`Xr*?A(qYoM}7i5Yxw>D(&6ou zxz!_Xr~yNF+waPe00049Nkl*;a!v6h%{rlvIH#gW3s8p;bFr=l}mRqpW2h zw=OA%hdyL~z+UHOzl0eKhEr$YYOL-c-%Y<)=j?(bzDweB7{b+%_ypvm_cG{SvM=DK zhv{K@m>#Bw>2W$eUI#iU)Wdgs8Y3U+A$Gd&{+j)d)BmGKx+43U_!tik_YlN)>$7G! zhkE!s;%oku3;IwG3U^2kw?z+HM)jB{@zFhK8P#KMSytSthr+4!c(5c%+^UBn`0X*2 zy3(k600_CSZj?O$Qu%&$;|TGUJrptR(HzyIx>5E(2r{eA(<6t3e3I0B)7d6s7?Z5J zZ!rtKvA{MiEBm&KFtoifx>5P^Z=vl)95XJn()aS5%ad(s?4-=Tkis9IGu{`Fy8r+H07*qoM6N<$f20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec303439225b78712f49115768196d8d76f6790 GIT binary patch literal 862 zcmV-k1EKthP)20Z)wqMt%V?S?~D#06};F zA3KcL`Wb+>5ObvgQIG&ig8(;V04hz?@cqy3{mSh8o!|U|)cI!1_+!fWH@o*8vh^CU z^ws0;(c$gI+2~q^tO#GDHf@=;DncUw00J^eL_t(&-tE|HQ`%4vfZ;WsBqu-$0nu1R zq^Vj;p$clf^?twn|KHO+IGt^q#a3X?w9dXC@*yxhv&l}F322(8Y1&=P&I}~G@#h6; z1CV9ecD9ZEe87{{NtI*)_aJ<`kJa z?5=RBtFF50s;jQLFil-`)m2wrb=6h(&brpj%nG_U&ut~$?8Rokzxi8zJoWr#2dto5 zOX_URcc<1`Iky+jc;A%Vzx}1QU{2$|cKPom2Vf1{8m`vja4{F>HS?^Nc^rp}xo+Nh zxd}eOm`fm3@MQC1< zIk&aCjb~Yh%5+Yq0`)D;q{#-Uqlv*o+Oor zE!I71Z@ASH3grl8&P^L0WpavHoP|UX4e?!igT`4?AZk$hu*@%6WJ;zDOGlw7kj@ zY5!B-0ft0f?Lgb>C;$Ke07*qoM6N<$f~t1N9smFU literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..e9f5fea27c705180eb716271f41b582e76dcbd90 GIT binary patch literal 1674 zcmV;526g#~P){YQnis^a@{&-nmRmq)<&%Mztj67_#M}W?l>kYSliK<%xAp;0j{!}J0!o7b zE>q9${Lb$D&h7k=+4=!ek^n+`0zq>LL1O?lVyea53S5x`Nqqo2YyeuIrQrJj9XjOp z{;T5qbj3}&1vg1VK~#9!?b~^C5-}JC@Pyrv-6dSEqJqT}#j9#dJ@GzT@B8}x zU&J@bBI>f6w6en+CeI)3^kC*U?}X%OD8$Fd$H&LV$H&LV$H&LV#|K5~mLYf|VqzOc zkc7qL~0sOYuM{tG`rYEDV{DWY`Z8&)kW*hc2VkBuY+^Yx&92j&StN}Wp=LD zxoGxXw6f&8sB^u})h@b@z0RBeD`K7RMR9deyL(ZJu#39Z>rT)^>v}Khq8U-IbIvT> z?4pV9qGj=2)TNH3d)=De<+^w;>S7m_eFKTvzeaBeir45xY!^m!FmxnljbSS_3o=g( z->^wC9%qkR{kbGnW8MfFew_o9h3(r55Is`L$8KI@d+*%{=Nx+FXJ98L0PjFIu;rGnnfY zn1R5Qnp<{Jq0M1vX=X&F8gtLmcWv$1*M@4ZfF^9``()#hGTeKeP`1!iED ztNE(TN}M5}3Bbc*d=FIv`DNv&@|C6yYj{sSqUj5oo$#*0$7pu|Dd2TLI>t5%I zIa4Dvr(iayb+5x=j*Vum9&irk)xV1`t509lnPO0%skL8_1c#Xbamh(2@f?4yUI zhhuT5<#8RJhGz4%b$`PJwKPAudsm|at?u;*hGgnA zU1;9gnxVBC)wA(BsB`AW54N{|qmikJR*%x0c`{LGsSfa|NK61pYH(r-UQ4_JXd!Rsz)=k zL{GMc5{h138)fF5CzHEDM>+FqY)$pdN3}Ml+riTgJOLN0F*Vh?{9ESR{SVVg>*>=# zix;VJHPtvFFCRY$Ks*F;VX~%*r9F)W`PmPE9F!(&s#x07n2<}?S{(ygpXgX-&B&OM zONY&BRQ(#%0%jeQs?oJ4P!p*R98>qCy5p8w>_gpuh39NcOlp)(wOoz0sY-Qz55eB~ z7OC-fKBaD1sE3$l-6QgBJO!n?QOTza`!S_YK z_v-lm^7{VO^8Q@M_^8F)09Ki6%=s?2_5eupee(w1FB%aqSweusQ-T+CH0Xt{` zFjMvW{@C&TB)k25()nh~_yJ9coBRL(0oO@HK~z}7?bm5j;y@69;bvlHb2tf!$ReA~x{22wTq550 z?f?Hnw(;m3ip30;QzdV~7pi!wyMYhDtXW#cO7T>|f=bdFhu+F!zMZ2UFj;GUKX7tI z;hv3{q~!*pMj75WP_c}>6)IWvg5_yyg<9Op()eD1hWC19M@?_9_MHec{Z8n3FaF{8 z;u`Mw0ly(uE>*CgQYv{be6ab2LWhlaH1^iLIM{olnag$78^Fd}%dR7;JECQ+hmk|o z!u2&!3MqPfP5ChDSkFSH8F2WVOEf0(E_M(JL17G}Y+fg0_IuW%WQ zG(mG&u?|->YSdk0;8rc{yw2@2Z&GA}z{Wb91Ooz9VhA{b2DYE7RmG zjL}?eq#iX%3#k;JWMx_{^2nNax`xPhByFiDX+a7uTGU|otOvIAUy|dEKkXOm-`aWS z27pUzD{a)Ct<6p{{3)+lq@i`t@%>-wT4r?*S}k)58e09WZYP0{{R3FC5Sl00039P)t-s|Ns9~ z#rP?<_5oL$Q^olD{r_0T`27C={r>*`|Nj71npVa5OTzc(_WfbW_({R{p56NV{r*M2 z_xt?)2V0#0NsfV0u>{42ctGP(8vQj-Btk1n|O0ZD=YLwd&R{Ko41Gr9H= zY@z@@bOAMB5Ltl$E>bJJ{>JP30ZxkmI%?eW{k`b?Wy<&gOo;dS`~CR$Vwb@XWtR|N zi~t=w02?-0&j0TD{>bb6sNwsK*!p?V`RMQUl(*DVjk-9Cx+-z1KXab|Ka2oXhX5f% z`$|e!000AhNklrxs)5QTeTVRiEmz~MKK1WAjCw(c-JK6eox;2O)?`? zTG`AHia671e^vgmp!llKp|=5sVHk#C7=~epA~VAf-~%aPC=%Qw01h8mnSZ|p?hz91 z7p83F3%LVu9;S$tSI$C^%^yud1dfTM_6p2|+5Ejp$bd`GDvbR|xit>i!ZD&F>@CJrPmu*UjD&?DfZs=$@e3FQA(vNiU+$A*%a} z?`XcG2jDxJ_ZQ#Md`H{4Lpf6QBDp81_KWZ6Tk#yCy1)32zO#3<7>b`eT7UyYH1eGz z;O(rH$=QR*L%%ZcBpc=eGua?N55nD^K(8<#gl2+pN_j~b2MHs4#mcLmv%DkspS-3< zpI1F=^9siI0s-;IN_IrA;5xm~3?3!StX}pUv0vkxMaqm+zxrg7X7(I&*N~&dEd0kD z-FRV|g=|QuUsuh>-xCI}vD2imzYIOIdcCVV=$Bz@*u0+Bs<|L^)32nN*=wu3n%Ynw z@1|eLG>!8ruU1pFXUfb`j>(=Gy~?Rn4QJ-c3%3T|(Frd!bI`9u&zAnyFYTqlG#&J7 zAkD(jpw|oZLNiA>;>hgp1KX7-wxC~31II47gc zHcehD6Uxlf%+M^^uN5Wc*G%^;>D5qT{>=uxUhX%WJu^Z*(_Wq9y}npFO{Hhb>s6<9 zNi0pHXWFaVZnb)1+RS&F)xOv6&aeILcI)`k#0YE+?e)5&#r7J#c`3Z7x!LpTc01dx zrdC3{Z;joZ^KN&))zB_i)I9fWedoN>Zl-6_Iz+^G&*ak2jpF07*qoM6N<$f;w%0(f|Me literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0467bf12aa4d28f374bb26596605a46dcbb3e7c8 GIT binary patch literal 1418 zcmV;51$Fv~P)q zKfU)WzW*n(@|xWGCA9ScMt*e9`2kdxPQ&&>|-UCa7_51w+ zLUsW@ZzZSW0y$)Hp~e9%PvP|a03ks1`~K?q{u;6NC8*{AOqIUq{CL&;p56Lf$oQGq z^={4hPQv)y=I|4n+?>7Fim=dxt1 z2H+Dm+1+fh+IF>G0SjJMkQQre1x4|G*Z==(Ot&kCnUrL4I(rf(ucITwmuHf^hXiJT zkdTm&kdTm&kdTm&kdP`esgWG0BcWCVkVZ&2dUwN`cgM8QJb`Z7Z~e<&Yj2(}>Tmf` zm1{eLgw!b{bXkjWbF%dTkTZEJWyWOb##Lfw4EK2}<0d6%>AGS{po>WCOy&f$Tay_> z?NBlkpo@s-O;0V%Y_Xa-G#_O08q5LR*~F%&)}{}r&L%Sbs8AS4t7Y0NEx*{soY=0MZExqA5XHQkqi#4gW3 zqODM^iyZl;dvf)-bOXtOru(s)Uc7~BFx{w-FK;2{`VA?(g&@3z&bfLFyctOH!cVsF z7IL=fo-qBndRUm;kAdXR4e6>k-z|21AaN%ubeVrHl*<|s&Ax@W-t?LR(P-24A5=>a z*R9#QvjzF8n%@1Nw@?CG@6(%>+-0ASK~jEmCV|&a*7-GKT72W<(TbSjf)&Eme6nGE z>Gkj4Sq&2e+-G%|+NM8OOm5zVl9{Z8Dd8A5z3y8mZ=4Bv4%>as_{9cN#bm~;h>62( zdqY93Zy}v&c4n($Vv!UybR8ocs7#zbfX1IY-*w~)p}XyZ-SFC~4w>BvMVr`dFbelV{lLL0bx7@*ZZdebr3`sP;? zVImji)kG)(6Juv0lz@q`F!k1FE;CQ(D0iG$wchPbKZQELlsZ#~rt8#90Y_Xh&3U-< z{s<&cCV_1`^TD^ia9!*mQDq& zn2{r`j};V|uV%_wsP!zB?m%;FeaRe+X47K0e+KE!8C{gAWF8)lCd1u1%~|M!XNRvw zvtqy3iz0WSpWdhn6$hP8PaRBmp)q`#PCA`Vd#Tc$@f1tAcM>f_I@bC)hkI9|o(Iqv zo}Piadq!j76}004RBio<`)70k^`K1NK)q>w?p^C6J2ZC!+UppiK6&y3Kmbv&O!oYF z34$0Z;QO!JOY#!`qyGH<3Pd}Pt@q*A0V=3SVtWKRR8d8Z&@)3qLPA19LPA19LPEUC YUoZo%k(ykuW&i*H07*qoM6N<$f+CH{y8r+H literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 00000000000..0bedcf2fd46 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9da19eacad3b03bb08bbddbbf4ac48dd78b3d838 GIT binary patch literal 68 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx0wlM}@Gt=>Zci7-kcv6Uzs@r-FtIZ-&5|)J Q1PU{Fy85}Sb4q9e0B4a5jsO4v literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 00000000000..f2e259c7c93 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/Main.storyboard b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 00000000000..f3c28516fb3 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist new file mode 100644 index 00000000000..5458fc4188b --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Example + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 00000000000..308a2a560b4 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 00000000000..86a7c3b1b61 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 61d3640a5b0..6a490a1be52 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -14,19 +14,11 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - 9E1782981D35A4483CE8EA26 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5B0565DEC840B52D9E12AB13 /* Pods_RunnerTests.framework */; }; F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 97C146E61CF9000F007C117D /* Project object */; - proxyType = 1; - remoteGlobalIDString = 97C146ED1CF9000F007C117D; - remoteInfo = Runner; - }; F243D6142AE053F700F4A2FC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 97C146E61CF9000F007C117D /* Project object */; @@ -53,7 +45,6 @@ 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3FF0A06D8CBC786B3A14CF1B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 43D581BFCCF535C6560A134B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; @@ -86,14 +77,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BC115AEAD3E7FBA599A307D3 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 9E1782981D35A4483CE8EA26 /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; F243D60B2AE053F700F4A2FC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -131,7 +114,6 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, - 331C8081294A63A400263BE5 /* RunnerTests.xctest */, F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */, ); name = Products; @@ -186,25 +168,6 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 331C8080294A63A400263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - CBC52D71EECA120988749479 /* [CP] Check Pods Manifest.lock */, - 331C807D294A63A400263BE5 /* Sources */, - 331C807F294A63A400263BE5 /* Resources */, - BC115AEAD3E7FBA599A307D3 /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 331C8086294A63A400263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; @@ -256,10 +219,6 @@ LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { - 331C8080294A63A400263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 97C146ED1CF9000F007C117D; - }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -284,20 +243,12 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, - 331C8080294A63A400263BE5 /* RunnerTests */, F243D60D2AE053F700F4A2FC /* RunnerUITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 331C807F294A63A400263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -389,38 +340,9 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - CBC52D71EECA120988749479 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 331C807D294A63A400263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -442,11 +364,6 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 97C146ED1CF9000F007C117D /* Runner */; - targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; - }; F243D6152AE053F700F4A2FC /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 97C146ED1CF9000F007C117D /* Runner */; @@ -546,57 +463,6 @@ }; name = Profile; }; - 331C8088294A63A400263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 739EE69B5EE51244467950D3 /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Debug; - }; - 331C8089294A63A400263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Release; - }; - 331C808A294A63A400263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 6068A1FAE364B0B9BE546362 /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = S8QB4VV633; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Profile; - }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -833,16 +699,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C8088294A63A400263BE5 /* Debug */, - 331C8089294A63A400263BE5 /* Release */, - 331C808A294A63A400263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index 81ea8492c66..f07077eb757 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -1,6 +1,7 @@ name: pointer_interceptor_platform_interface description: "A common platform interface for the pointer_interceptor plugin." version: 0.0.1 +publish_to: none environment: sdk: '>=3.1.0-134.0.dev <4.0.0' From 7092edf8dc8e5b792f2c473e8f3fc99e71d23bdc Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 13 Nov 2023 00:40:24 -0800 Subject: [PATCH 35/52] fix licensing and podfile --- .../pointer_interceptor/LICENSE | 2 +- .../pointer_interceptor/README.md | 6 +- .../pointer_interceptor_ios/LICENSE | 2 +- .../example/ios/Podfile | 2 +- .../ios/Runner.xcodeproj/project.pbxproj | 96 ++++++++++++------- .../LICENSE | 2 +- .../pubspec.yaml | 2 +- 7 files changed, 71 insertions(+), 41 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/LICENSE b/packages/pointer_interceptor/pointer_interceptor/LICENSE index c6823b81eb8..1d33397b449 100644 --- a/packages/pointer_interceptor/pointer_interceptor/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor/LICENSE @@ -22,4 +22,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/README.md b/packages/pointer_interceptor/pointer_interceptor/README.md index 6da163fc5d1..5fa98a464b2 100644 --- a/packages/pointer_interceptor/pointer_interceptor/README.md +++ b/packages/pointer_interceptor/pointer_interceptor/README.md @@ -1,8 +1,10 @@ # pointer_interceptor -`PointerInterceptor` is a widget that prevents mouse events (in web) from being captured by an underlying [`HtmlElementView`](https://api.flutter.dev/flutter/widgets/HtmlElementView-class.html). +| | iOS | Web | +|-------------|---------|-----| +| **Support** | iOS 11+ | Any | -You can use this widget in a cross-platform app freely. In mobile, where the issue that this plugin fixes does not exist, the widget acts as a pass-through of its `children`, without adding anything to the render tree. +`PointerInterceptor` is a widget that prevents mouse events (in web) from being captured by an underlying [`HtmlElementView`](https://api.flutter.dev/flutter/widgets/HtmlElementView-class.html). ## What is the problem? diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE index c6823b81eb8..1d33397b449 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE @@ -22,4 +22,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile index fdcc671eb34..37dd7a55be0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile @@ -32,7 +32,7 @@ target 'Runner' do use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do + target 'RunnerUITests' do inherit! :search_paths end end diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 6a490a1be52..cc94ea43f85 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,14 +8,15 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 1A46290CBEF98B705C2A625A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5C32F590444FDF86ABD113B9 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 495440CE0320ED29310AEF97 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; + F70CF50607AC59EC61498F31 /* Pods_RunnerUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -42,19 +43,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.release.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3FF0A06D8CBC786B3A14CF1B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - 43D581BFCCF535C6560A134B /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - 495440CE0320ED29310AEF97 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5B0565DEC840B52D9E12AB13 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6068A1FAE364B0B9BE546362 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - 739EE69B5EE51244467950D3 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,7 +61,9 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BDB6080EFF9E3A486EB4B3C3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.debug.xcconfig"; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; @@ -73,7 +74,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C32F590444FDF86ABD113B9 /* Pods_Runner.framework in Frameworks */, + 1A46290CBEF98B705C2A625A /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -81,12 +82,22 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F70CF50607AC59EC61498F31 /* Pods_RunnerUITests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 82C4B0C219FA8A2BE76C1522 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */, + EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -106,7 +117,7 @@ F243D60F2AE053F700F4A2FC /* RunnerUITests */, 97C146EF1CF9000F007C117D /* Products */, CA6EAE272C76E7B047DA5950 /* Pods */, - BEBAB38D93848CED8386D442 /* Frameworks */, + 82C4B0C219FA8A2BE76C1522 /* Frameworks */, ); sourceTree = ""; }; @@ -135,24 +146,15 @@ path = Runner; sourceTree = ""; }; - BEBAB38D93848CED8386D442 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 495440CE0320ED29310AEF97 /* Pods_Runner.framework */, - 5B0565DEC840B52D9E12AB13 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; CA6EAE272C76E7B047DA5950 /* Pods */ = { isa = PBXGroup; children = ( - 3FF0A06D8CBC786B3A14CF1B /* Pods-Runner.debug.xcconfig */, - BDB6080EFF9E3A486EB4B3C3 /* Pods-Runner.release.xcconfig */, - 43D581BFCCF535C6560A134B /* Pods-Runner.profile.xcconfig */, - 739EE69B5EE51244467950D3 /* Pods-RunnerTests.debug.xcconfig */, - 0DC0B2C6C7C61618C475A918 /* Pods-RunnerTests.release.xcconfig */, - 6068A1FAE364B0B9BE546362 /* Pods-RunnerTests.profile.xcconfig */, + C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */, + 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */, + 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */, + EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */, + 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */, + 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -172,14 +174,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7ACD84171B3C36D6459FB9ED /* [CP] Check Pods Manifest.lock */, + 827456E708AF4D4FB232D511 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - AC3853180BF63AFAEC321D96 /* [CP] Embed Pods Frameworks */, + 05B12E96BF02498BBE4B9E87 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -194,6 +196,7 @@ isa = PBXNativeTarget; buildConfigurationList = F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerUITests" */; buildPhases = ( + C3F0329C6232986D5E52BA17 /* [CP] Check Pods Manifest.lock */, F243D60A2AE053F700F4A2FC /* Sources */, F243D60B2AE053F700F4A2FC /* Frameworks */, F243D60C2AE053F700F4A2FC /* Resources */, @@ -270,6 +273,23 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 05B12E96BF02498BBE4B9E87 /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -286,7 +306,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 7ACD84171B3C36D6459FB9ED /* [CP] Check Pods Manifest.lock */ = { + 827456E708AF4D4FB232D511 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -323,21 +343,26 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AC3853180BF63AFAEC321D96 /* [CP] Embed Pods Frameworks */ = { + C3F0329C6232986D5E52BA17 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerUITests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -617,6 +642,7 @@ }; F243D6162AE053F700F4A2FC /* Debug */ = { isa = XCBuildConfiguration; + baseConfigurationReference = EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -646,6 +672,7 @@ }; F243D6172AE053F700F4A2FC /* Release */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -672,6 +699,7 @@ }; F243D6182AE053F700F4A2FC /* Profile */ = { isa = XCBuildConfiguration; + baseConfigurationReference = 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE index c6823b81eb8..1d33397b449 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE @@ -22,4 +22,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index f07077eb757..0239dc5553b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -5,7 +5,7 @@ publish_to: none environment: sdk: '>=3.1.0-134.0.dev <4.0.0' - flutter: '>=3.1.0' + flutter: '>=3.13.0' dependencies: flutter: From 196a9dd4856ea25edfd1810395fa98dcd65a5440 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 13 Nov 2023 01:03:23 -0800 Subject: [PATCH 36/52] add licensing to swift files --- .../pointer_interceptor/LICENSE | 2 +- .../example/ios/Runner/AppDelegate.swift | 4 ++++ .../example/ios/Runner/Runner-Bridging-Header.h | 4 ++++ .../pointer_interceptor_ios/LICENSE | 2 +- .../pointer_interceptor_ios/example/ios/Podfile | 2 +- .../example/ios/Runner.xcodeproj/project.pbxproj | 14 +++++++------- .../example/ios/Runner/AppDelegate.swift | 4 ++++ .../ios/Runner/DummyPlatformViewFactory.swift | 4 ++++ .../RunnerTests.swift} | 2 +- .../pointer_interceptor_ios/example/lib/main.dart | 4 ++++ .../pointer_interceptor_platform_interface/LICENSE | 2 +- .../pointer_interceptor_platform_interface.dart | 4 ++++ 12 files changed, 36 insertions(+), 12 deletions(-) rename packages/pointer_interceptor/pointer_interceptor_ios/example/ios/{RunnerUITests/RunnerUITests.swift => RunnerTests/RunnerTests.swift} (96%) diff --git a/packages/pointer_interceptor/pointer_interceptor/LICENSE b/packages/pointer_interceptor/pointer_interceptor/LICENSE index 1d33397b449..c6823b81eb8 100644 --- a/packages/pointer_interceptor/pointer_interceptor/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor/LICENSE @@ -22,4 +22,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift index 70693e4a8c1..caf99839333 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import UIKit import Flutter diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h index 308a2a560b4..eb7e8ba8052 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Runner-Bridging-Header.h @@ -1 +1,5 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + #import "GeneratedPluginRegistrant.h" diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE index 1d33397b449..c6823b81eb8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor_ios/LICENSE @@ -22,4 +22,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile index 37dd7a55be0..fdcc671eb34 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Podfile @@ -32,7 +32,7 @@ target 'Runner' do use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerUITests' do + target 'RunnerTests' do inherit! :search_paths end end diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index cc94ea43f85..f7afb78ca36 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -14,7 +14,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerUITests.swift */; }; + F243D6112AE053F700F4A2FC /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerTests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; F70CF50607AC59EC61498F31 /* Pods_RunnerUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */; }; /* End PBXBuildFile section */ @@ -65,7 +65,7 @@ EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.debug.xcconfig"; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - F243D6102AE053F700F4A2FC /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; + F243D6102AE053F700F4A2FC /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -114,7 +114,7 @@ children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, - F243D60F2AE053F700F4A2FC /* RunnerUITests */, + F243D60F2AE053F700F4A2FC /* RunnerTests */, 97C146EF1CF9000F007C117D /* Products */, CA6EAE272C76E7B047DA5950 /* Pods */, 82C4B0C219FA8A2BE76C1522 /* Frameworks */, @@ -159,12 +159,12 @@ path = Pods; sourceTree = ""; }; - F243D60F2AE053F700F4A2FC /* RunnerUITests */ = { + F243D60F2AE053F700F4A2FC /* RunnerTests */ = { isa = PBXGroup; children = ( - F243D6102AE053F700F4A2FC /* RunnerUITests.swift */, + F243D6102AE053F700F4A2FC /* RunnerTests.swift */, ); - path = RunnerUITests; + path = RunnerTests; sourceTree = ""; }; /* End PBXGroup section */ @@ -382,7 +382,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F243D6112AE053F700F4A2FC /* RunnerUITests.swift in Sources */, + F243D6112AE053F700F4A2FC /* RunnerTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift index 223b108ad01..41be7b25597 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/AppDelegate.swift @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import UIKit import Flutter diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift index aae4b389929..3abfea0becd 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import Flutter import UIKit diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift similarity index 96% rename from packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift rename to packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift index ecd03b08418..8b402b02cf3 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift @@ -4,7 +4,7 @@ import XCTest -final class RunnerUITests: XCTestCase { +final class RunnerTests: XCTestCase { override func setUp() { continueAfterFailure = false diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart index 91178c111be..1e947b4cedb 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/lib/main.dart @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE index 1d33397b449..c6823b81eb8 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/LICENSE @@ -22,4 +22,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart index 73018963650..dfdace230f1 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/pointer_interceptor_platform_interface.dart @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + library pointer_interceptor; export 'src/pointer_interceptor_platform.dart'; From d5bf4c906176b8bd03554c1e8b8fa29fac1bf8fd Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 13 Nov 2023 01:21:22 -0800 Subject: [PATCH 37/52] podfile --- .../example/ios/RunnerTests/RunnerTests.swift | 4 ++ .../ios/Runner.xcodeproj/project.pbxproj | 52 ++++++++++--------- .../xcshareddata/xcschemes/Runner.xcscheme | 4 +- .../ios/Runner/Runner-Bridging-Header.h | 4 ++ .../test/pointer_interceptor_ios_test.dart | 4 ++ .../pubspec.yaml | 2 +- 6 files changed, 43 insertions(+), 27 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift index 86a7c3b1b61..f4dc3f41a54 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import Flutter import UIKit import XCTest diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index f7afb78ca36..4734b74dc00 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -10,13 +10,12 @@ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1A46290CBEF98B705C2A625A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 3BD31EF753903CCB735C80AF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DABD745B9E6DB10A9D2388 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - F243D6112AE053F700F4A2FC /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F243D6102AE053F700F4A2FC /* RunnerTests.swift */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; - F70CF50607AC59EC61498F31 /* Pods_RunnerUITests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -48,12 +47,15 @@ 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.release.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.release.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 414B0FC892AE12013FCBDEDE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5E28413DB4139FF5D257C46F /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.profile.xcconfig"; sourceTree = ""; }; + 91DABD745B9E6DB10A9D2388 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -61,10 +63,10 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + BD9F07D13A0045B72C86A883 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerUITests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.debug.xcconfig"; sourceTree = ""; }; - F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -82,7 +84,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F70CF50607AC59EC61498F31 /* Pods_RunnerUITests.framework in Frameworks */, + 3BD31EF753903CCB735C80AF /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -93,7 +95,7 @@ isa = PBXGroup; children = ( 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */, - EBB792912A46DD7C5A654473 /* Pods_RunnerUITests.framework */, + 91DABD745B9E6DB10A9D2388 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -125,7 +127,7 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, - F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */, + F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -155,6 +157,9 @@ EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */, 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */, 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */, + BD9F07D13A0045B72C86A883 /* Pods-RunnerTests.debug.xcconfig */, + 414B0FC892AE12013FCBDEDE /* Pods-RunnerTests.release.xcconfig */, + 5E28413DB4139FF5D257C46F /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -192,9 +197,9 @@ productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; }; - F243D60D2AE053F700F4A2FC /* RunnerUITests */ = { + F243D60D2AE053F700F4A2FC /* RunnerTests */ = { isa = PBXNativeTarget; - buildConfigurationList = F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerUITests" */; + buildConfigurationList = F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( C3F0329C6232986D5E52BA17 /* [CP] Check Pods Manifest.lock */, F243D60A2AE053F700F4A2FC /* Sources */, @@ -206,9 +211,9 @@ dependencies = ( F243D6152AE053F700F4A2FC /* PBXTargetDependency */, ); - name = RunnerUITests; + name = RunnerTests; productName = RunnerUITests; - productReference = F243D60E2AE053F700F4A2FC /* RunnerUITests.xctest */; + productReference = F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ @@ -246,7 +251,7 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, - F243D60D2AE053F700F4A2FC /* RunnerUITests */, + F243D60D2AE053F700F4A2FC /* RunnerTests */, ); }; /* End PBXProject section */ @@ -358,7 +363,7 @@ outputFileListPaths = ( ); outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerUITests-checkManifestLockResult.txt", + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -382,7 +387,6 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F243D6112AE053F700F4A2FC /* RunnerTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -468,7 +472,7 @@ }; 249021D4217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + baseConfigurationReference = 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -597,7 +601,7 @@ }; 97C147061CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + baseConfigurationReference = C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -620,7 +624,7 @@ }; 97C147071CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + baseConfigurationReference = 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -642,13 +646,13 @@ }; F243D6162AE053F700F4A2FC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */; + baseConfigurationReference = BD9F07D13A0045B72C86A883 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -672,13 +676,13 @@ }; F243D6172AE053F700F4A2FC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */; + baseConfigurationReference = 414B0FC892AE12013FCBDEDE /* Pods-RunnerTests.release.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -699,13 +703,13 @@ }; F243D6182AE053F700F4A2FC /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */; + baseConfigurationReference = 5E28413DB4139FF5D257C46F /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CLANG_ENABLE_OBJC_WEAK = YES; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; @@ -747,7 +751,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = { + F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { isa = XCConfigurationList; buildConfigurations = ( F243D6162AE053F700F4A2FC /* Debug */, diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 924949c644a..3fb5162c6d0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -54,8 +54,8 @@ diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h index 308a2a560b4..eb7e8ba8052 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/Runner-Bridging-Header.h @@ -1 +1,5 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + #import "GeneratedPluginRegistrant.h" diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart index fc8c21c7176..35671246ea5 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/test/pointer_interceptor_ios_test.dart @@ -1,3 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:pointer_interceptor_ios/pointer_interceptor_ios.dart'; diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index 0239dc5553b..2aaae916c19 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ version: 0.0.1 publish_to: none environment: - sdk: '>=3.1.0-134.0.dev <4.0.0' + sdk: '>=3.1.0' flutter: '>=3.13.0' dependencies: From 75a19a8e5c07e4ea370c4399d06ef763174310ce Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 14 Nov 2023 14:40:45 -0800 Subject: [PATCH 38/52] refactor web into own package, move integration tests, rewrite example for both ios and web --- .../pointer_interceptor/example/.gitignore | 1 - .../ios/Runner.xcodeproj/project.pbxproj | 9 +- .../example/ios/Runner/AppDelegate.swift | 8 + .../ios/Runner/DummyPlatformViewFactory.swift | 91 +++++++ .../example/ios/Runner/Info.plist | 8 +- .../pointer_interceptor/example/lib/main.dart | 59 +---- .../example/lib/native_widget.dart | 5 + .../lib/platforms/native_widget_ios.dart | 24 ++ .../lib/platforms/native_widget_web.dart | 59 +++++ .../pointer_interceptor/pubspec.yaml | 5 +- .../test/tests_exist_elsewhere_test.dart | 3 +- .../pointer_interceptor_web/CHANGELOG.md | 4 + .../pointer_interceptor_web/LICENSE | 25 ++ .../pointer_interceptor_web/README.md | 15 ++ .../pointer_interceptor_web/example/README.md | 9 + .../example/integration_test/widget_test.dart | 2 +- .../example/lib/main.dart | 224 ++++++++++++++++++ .../example/pubspec.yaml | 26 ++ .../example/test_driver/integration_test.dart | 0 .../example/web/favicon.png | Bin 0 -> 917 bytes .../example/web/icons/Icon-192.png | Bin 0 -> 5292 bytes .../example/web/icons/Icon-512.png | Bin 0 -> 8252 bytes .../example/web/index.html | 48 ++++ .../example/web/manifest.json | 23 ++ .../lib}/pointer_interceptor_web.dart | 2 +- .../pointer_interceptor_web/pubspec.yaml | 31 +++ 26 files changed, 612 insertions(+), 69 deletions(-) create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/DummyPlatformViewFactory.swift create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/LICENSE create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/README.md create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/README.md rename packages/pointer_interceptor/{pointer_interceptor => pointer_interceptor_web}/example/integration_test/widget_test.dart (98%) create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/pubspec.yaml rename packages/pointer_interceptor/{pointer_interceptor => pointer_interceptor_web}/example/test_driver/integration_test.dart (100%) create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/web/favicon.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/web/icons/Icon-192.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/web/icons/Icon-512.png create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/web/index.html create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/example/web/manifest.json rename packages/pointer_interceptor/{pointer_interceptor/lib/src => pointer_interceptor_web/lib}/pointer_interceptor_web.dart (95%) create mode 100644 packages/pointer_interceptor/pointer_interceptor_web/pubspec.yaml diff --git a/packages/pointer_interceptor/pointer_interceptor/example/.gitignore b/packages/pointer_interceptor/pointer_interceptor/example/.gitignore index 0fa6b675c0a..a1345d017cf 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/.gitignore +++ b/packages/pointer_interceptor/pointer_interceptor/example/.gitignore @@ -32,7 +32,6 @@ /build/ # Web related -lib/generated_plugin_registrant.dart # Symbolication related app.*.symbols diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj index 4cf0362c6c4..4cd919c846d 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj @@ -16,6 +16,7 @@ 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; B42E6688CF6D533A672F99FA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */; }; + F25BFF892B037A720088B2C7 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -64,6 +65,7 @@ B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; D1541F5A096B8882503CFC4E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; F33FCBEB709E16FA17277EE4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ @@ -106,7 +108,6 @@ D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */, 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */, ); - name = Pods; path = Pods; sourceTree = ""; }; @@ -153,6 +154,7 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, @@ -377,6 +379,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F25BFF892B037A720088B2C7 /* DummyPlatformViewFactory.swift in Sources */, 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); @@ -469,14 +472,14 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = PZ83UV676J; + DEVELOPMENT_TEAM = S8QB4VV633; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.example; + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerinterceptor; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift index caf99839333..41be7b25597 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/AppDelegate.swift @@ -12,6 +12,14 @@ import Flutter didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) + + weak var registrar = self.registrar(forPlugin: "DummyPlatform"); + + let factory = DummyPlatformViewFactory(messenger: registrar!.messenger()) + self.registrar(forPlugin: "")!.register( + factory, + withId: "dummy_platform_view") + return super.application(application, didFinishLaunchingWithOptions: launchOptions) } } diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/DummyPlatformViewFactory.swift new file mode 100644 index 00000000000..5ea634fa922 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/DummyPlatformViewFactory.swift @@ -0,0 +1,91 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import Flutter +import UIKit + +/** + * A simple factory that creates a dummy platform view for testing. + */ +public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { + private var messenger: FlutterBinaryMessenger + + init(messenger: FlutterBinaryMessenger) { + self.messenger = messenger + super.init() + } + + public func create( + withFrame frame: CGRect, + viewIdentifier viewId: Int64, + arguments args: Any? + ) -> FlutterPlatformView { + return DummyPlatformView( + frame: frame, + viewIdentifier: viewId, + arguments: args, + binaryMessenger: messenger) + } + + public func createArgsCodec() -> FlutterMessageCodec & NSObjectProtocol { + return FlutterStandardMessageCodec.sharedInstance() + } +} + +/** + * A native view that will remove it's tag if clicked. + */ +public class CustomView: UIView { + + var timesClicked = 0; + var nativeLabel = UILabel() + + override public func hitTest( + _ point: CGPoint, + with event: UIEvent? + ) -> UIView? { + if (viewWithTag(1) != nil) { + viewWithTag(1)?.removeFromSuperview(); + createNativeView(view: self); + } + timesClicked += 1; + nativeLabel.text = "Traversed \(timesClicked) subviews" + return super.hitTest(point, with: event) + } + + func createNativeView(view _view: CustomView){ + nativeLabel.text = "Traversed \(timesClicked) subviews" + nativeLabel.frame = CGRect(x: 0, y: 0, width: 180, height: 48.0) + _view.addSubview(nativeLabel) + } +} +/** + * A flutter platform view that displays a simple native view. + */ +class DummyPlatformView: NSObject, FlutterPlatformView { + private var _view: CustomView; + + init( + frame: CGRect, + viewIdentifier viewId: Int64, + arguments args: Any?, + binaryMessenger messenger: FlutterBinaryMessenger? + ) { + _view = CustomView() + super.init() + createNativeView(view: _view) + } + + func view() -> UIView { + return _view + } + + func createNativeView(view _view: CustomView){ + let nativeLabel = UILabel() + nativeLabel.tag = 1; + nativeLabel.text = "Native View Not Clicked" + nativeLabel.frame = CGRect(x: 0, y: 0, width: 180, height: 48.0) + _view.addSubview(nativeLabel) + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist index 5458fc4188b..f15383a8587 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner/Info.plist @@ -2,6 +2,8 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion $(DEVELOPMENT_LANGUAGE) CFBundleDisplayName @@ -24,6 +26,8 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + UIApplicationSupportsIndirectInputEvents + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -41,9 +45,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart index 74f632a6023..bef73fed067 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart @@ -3,49 +3,17 @@ // found in the LICENSE file. // ignore: avoid_web_libraries_in_flutter -import 'dart:html' as html; -import 'dart:ui_web' as ui_web; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; +import 'native_widget.dart'; const String _htmlElementViewType = '_htmlElementViewType'; const double _videoWidth = 640; const double _videoHeight = 480; -/// The html.Element that will be rendered underneath the flutter UI. -html.Element htmlElement = html.DivElement() - ..style.width = '100%' - ..style.height = '100%' - ..style.backgroundColor = '#fabada' - ..style.cursor = 'auto' - ..id = 'background-html-view'; - -// See other examples commented out below... - -// html.Element htmlElement = html.VideoElement() -// ..style.width = '100%' -// ..style.height = '100%' -// ..style.cursor = 'auto' -// ..style.backgroundColor = 'black' -// ..id = 'background-html-view' -// ..src = 'https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4' -// ..poster = 'https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217' -// ..controls = true; - -// html.Element htmlElement = html.IFrameElement() -// ..width = '100%' -// ..height = '100%' -// ..id = 'background-html-view' -// ..src = 'https://www.youtube.com/embed/IyFZznAk69U' -// ..style.border = 'none'; - void main() { - ui_web.platformViewRegistry.registerViewFactory( - _htmlElementViewType, - (int viewId) => htmlElement, - ); - runApp(const MyApp()); } @@ -114,13 +82,13 @@ class _MyHomePageState extends State { child: Stack( alignment: Alignment.center, children: [ - HtmlElement( + NativeWidget( key: const ValueKey('background-widget'), onClick: () { _clickedOn('html-element'); }, ), - Row( + Column( mainAxisAlignment: MainAxisAlignment.spaceEvenly, children: [ ElevatedButton( @@ -198,22 +166,3 @@ class _MyHomePageState extends State { } } -/// Initialize the videoPlayer, then render the corresponding view... -class HtmlElement extends StatelessWidget { - /// Constructor - const HtmlElement({super.key, required this.onClick}); - - /// A function to run when the element is clicked - final VoidCallback onClick; - - @override - Widget build(BuildContext context) { - htmlElement.onClick.listen((_) { - onClick(); - }); - - return const HtmlElementView( - viewType: _htmlElementViewType, - ); - } -} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart new file mode 100644 index 00000000000..ed54a6c47ec --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart @@ -0,0 +1,5 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +export 'platforms/native_widget_ios.dart' if (dart.library.html) 'platforms/native_widget_web.dart'; \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart new file mode 100644 index 00000000000..7517b4ff689 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart @@ -0,0 +1,24 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; + +class NativeWidget extends StatelessWidget { + + /// Constructor + const NativeWidget({super.key, required this.onClick}); + + /// A function to run when the element is clicked + final VoidCallback onClick; + + @override + Widget build(BuildContext context) { + const String viewType = 'dummy_platform_view'; + final Map creationParams = {}; + + return UiKitView( + viewType: viewType, + layoutDirection: TextDirection.ltr, + creationParams: creationParams, + creationParamsCodec: const StandardMessageCodec(), + ); + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart new file mode 100644 index 00000000000..cd05f4a7950 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart @@ -0,0 +1,59 @@ +import 'dart:html' as html; +import 'dart:ui_web' as ui_web; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; + +/// The html.Element that will be rendered underneath the flutter UI. +html.Element htmlElement = html.DivElement() + ..style.width = '100%' + ..style.height = '100%' + ..style.backgroundColor = '#fabada' + ..style.cursor = 'auto' + ..id = 'background-html-view'; + +// See other examples commented out below... + +// html.Element htmlElement = html.VideoElement() +// ..style.width = '100%' +// ..style.height = '100%' +// ..style.cursor = 'auto' +// ..style.backgroundColor = 'black' +// ..id = 'background-html-view' +// ..src = 'https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4' +// ..poster = 'https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217' +// ..controls = true; + +// html.Element htmlElement = html.IFrameElement() +// ..width = '100%' +// ..height = '100%' +// ..id = 'background-html-view' +// ..src = 'https://www.youtube.com/embed/IyFZznAk69U' +// ..style.border = 'none'; + +const String _htmlElementViewType = '_htmlElementViewType'; + +class NativeWidget extends StatelessWidget { + + /// Constructor + const NativeWidget({super.key, required this.onClick}); + + /// A function to run when the element is clicked + final VoidCallback onClick; + + @override + Widget build(BuildContext context) { + htmlElement.onClick.listen((_) { + onClick(); + }); + + ui_web.platformViewRegistry.registerViewFactory( + _htmlElementViewType, + (int viewId) => htmlElement, + ); + + return const HtmlElementView( + viewType: _htmlElementViewType, + ); + } +} \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml index 12fe6922f16..08b7bc6ae86 100644 --- a/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor/pubspec.yaml @@ -14,8 +14,7 @@ flutter: implements: pointer_interceptor_platform_interface platforms: web: - pluginClass: PointerInterceptorWeb - fileName: ./src/pointer_interceptor_web.dart + default_package: pointer_interceptor_web ios: default_package: pointer_interceptor_ios @@ -28,6 +27,8 @@ dependencies: path: ../pointer_interceptor_ios pointer_interceptor_platform_interface: path: ../pointer_interceptor_platform_interface + pointer_interceptor_web: + path: ../pointer_interceptor_web dev_dependencies: flutter_test: diff --git a/packages/pointer_interceptor/pointer_interceptor/test/tests_exist_elsewhere_test.dart b/packages/pointer_interceptor/pointer_interceptor/test/tests_exist_elsewhere_test.dart index cc32e6c72f1..5aa7115caa0 100644 --- a/packages/pointer_interceptor/pointer_interceptor/test/tests_exist_elsewhere_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor/test/tests_exist_elsewhere_test.dart @@ -9,8 +9,7 @@ import 'package:flutter_test/flutter_test.dart'; void main() { test('Tell the user where to find the real tests', () { print('---'); - print('This package uses integration_test for its tests.'); - print('See `example/README.md` for more info.'); + print('Please find platform tests in their respective packages.'); print('---'); }); } diff --git a/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md new file mode 100644 index 00000000000..50be02009c8 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md @@ -0,0 +1,4 @@ +## 0.9.0 + +* Initial release. + diff --git a/packages/pointer_interceptor/pointer_interceptor_web/LICENSE b/packages/pointer_interceptor/pointer_interceptor_web/LICENSE new file mode 100644 index 00000000000..c6823b81eb8 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/LICENSE @@ -0,0 +1,25 @@ +Copyright 2013 The Flutter Authors. All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of Google Inc. nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/packages/pointer_interceptor/pointer_interceptor_web/README.md b/packages/pointer_interceptor/pointer_interceptor_web/README.md new file mode 100644 index 00000000000..45db9bdcbc7 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/README.md @@ -0,0 +1,15 @@ +# pointer\_interceptor\_web + +The web implementation of [`pointer interceptor`][1]. + +## Usage + +This package is [endorsed][2], which means you can simply use `pointer_interceptor` +normally. This package will be automatically included in your app when you do, +so you do not need to add it to your `pubspec.yaml`. + +However, if you `import` this package to use any of its APIs directly, you +should add it to your `pubspec.yaml` as usual. + +[1]: https://pub.dev/packages/pointer_interceptor +[2]: https://flutter.dev/docs/development/packages-and-plugins/developing-packages#endorsed-federated-plugin \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/README.md b/packages/pointer_interceptor/pointer_interceptor_web/example/README.md new file mode 100644 index 00000000000..96b8bb17dbf --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/README.md @@ -0,0 +1,9 @@ +# Platform Implementation Test App + +This is a test app for manual testing and automated integration testing +of this platform implementation. It is not intended to demonstrate actual use of +this package, since the intent is that plugin clients use the app-facing +package. + +Unless you are making changes to this implementation package, this example is +very unlikely to be relevant. diff --git a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor_web/example/integration_test/widget_test.dart similarity index 98% rename from packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart rename to packages/pointer_interceptor/pointer_interceptor_web/example/integration_test/widget_test.dart index c8d5d6f52b7..22a2528f7d1 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/integration_test/widget_test.dart @@ -11,7 +11,7 @@ import 'package:flutter/src/widgets/framework.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; -import 'package:pointer_interceptor_example/main.dart' as app; +import 'package:pointer_interceptor_web_example/main.dart' as app; final Finder nonClickableButtonFinder = find.byKey(const Key('transparent-button')); diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart new file mode 100644 index 00000000000..8c39022a655 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart @@ -0,0 +1,224 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ignore: avoid_web_libraries_in_flutter +import 'dart:html' as html; +import 'dart:ui_web' as ui_web; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:pointer_interceptor/pointer_interceptor.dart'; + +const String _htmlElementViewType = '_htmlElementViewType'; +const double _videoWidth = 640; +const double _videoHeight = 480; + +/// The html.Element that will be rendered underneath the flutter UI. +html.Element htmlElement = html.DivElement() + ..style.width = '100%' + ..style.height = '100%' + ..style.backgroundColor = '#fabada' + ..style.cursor = 'auto' + ..id = 'background-html-view'; + +// See other examples commented out below... + +// html.Element htmlElement = html.VideoElement() +// ..style.width = '100%' +// ..style.height = '100%' +// ..style.cursor = 'auto' +// ..style.backgroundColor = 'black' +// ..id = 'background-html-view' +// ..src = 'https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4' +// ..poster = 'https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217' +// ..controls = true; + +// html.Element htmlElement = html.IFrameElement() +// ..width = '100%' +// ..height = '100%' +// ..id = 'background-html-view' +// ..src = 'https://www.youtube.com/embed/IyFZznAk69U' +// ..style.border = 'none'; + +void main() { + ui_web.platformViewRegistry.registerViewFactory( + _htmlElementViewType, + (int viewId) => htmlElement, + ); + + if(!kIsWeb) { + return; + } + + runApp(const MyApp()); +} + +/// Main app +class MyApp extends StatelessWidget { + /// Creates main app. + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + title: 'Stopping Clicks with some DOM', + home: MyHomePage(), + ); + } +} + +/// First page +class MyHomePage extends StatefulWidget { + /// Creates first page. + const MyHomePage({super.key}); + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + String _lastClick = 'none'; + + void _clickedOn(String key) { + setState(() { + _lastClick = key; + }); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text('PointerInterceptor demo'), + actions: [ + PointerInterceptor( + // debug: true, + child: IconButton( + icon: const Icon(Icons.add_alert), + tooltip: 'AppBar Icon', + onPressed: () { + _clickedOn('appbar-icon'); + }, + ), + ), + ], + ), + body: Center( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Text( + 'Last click on: $_lastClick', + key: const Key('last-clicked'), + ), + Container( + color: Colors.black, + width: _videoWidth, + height: _videoHeight, + child: Stack( + alignment: Alignment.center, + children: [ + HtmlElement( + key: const ValueKey('background-widget'), + onClick: () { + _clickedOn('html-element'); + }, + ), + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + ElevatedButton( + key: const Key('transparent-button'), + child: const Text('Never calls onPressed'), + onPressed: () { + _clickedOn('transparent-button'); + }, + ), + PointerInterceptor( + intercepting: false, + child: ElevatedButton( + key: const Key('wrapped-transparent-button'), + child: + const Text('Never calls onPressed transparent'), + onPressed: () { + _clickedOn('wrapped-transparent-button'); + }, + ), + ), + PointerInterceptor( + child: ElevatedButton( + key: const Key('clickable-button'), + child: const Text('Works As Expected'), + onPressed: () { + _clickedOn('clickable-button'); + }, + ), + ), + ], + ), + ], + ), + ), + ], + ), + ), + floatingActionButton: Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + PointerInterceptor( + // debug: true, + child: FloatingActionButton( + child: const Icon(Icons.navigation), + onPressed: () { + _clickedOn('fab-1'); + }, + ), + ), + ], + ), + drawer: Drawer( + child: PointerInterceptor( + // debug: true, // Enable this to "see" the interceptor covering the column. + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ListTile( + title: const Text('Item 1'), + onTap: () { + _clickedOn('drawer-item-1'); + }, + ), + ListTile( + title: const Text('Item 2'), + onTap: () { + _clickedOn('drawer-item-2'); + }, + ), + ], + ), + ), + ), + ); + } +} + +/// Initialize the videoPlayer, then render the corresponding view... +class HtmlElement extends StatelessWidget { + /// Constructor + const HtmlElement({super.key, required this.onClick}); + + /// A function to run when the element is clicked + final VoidCallback onClick; + + @override + Widget build(BuildContext context) { + htmlElement.onClick.listen((_) { + onClick(); + }); + + return const HtmlElementView( + viewType: _htmlElementViewType, + ); + } +} diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_web/example/pubspec.yaml new file mode 100644 index 00000000000..aef1717d1e6 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/pubspec.yaml @@ -0,0 +1,26 @@ +name: pointer_interceptor_web_example +description: "Demonstrates how to use the pointer_interceptor_web plugin." +# The following line prevents the package from being accidentally published to +# pub.dev using `flutter pub publish`. This is preferred for private packages. +publish_to: 'none' # Remove this line if you wish to publish to pub.dev + +environment: + sdk: '>=3.1.0-134.0.dev <4.0.0' + +dependencies: + cupertino_icons: ^1.0.2 + flutter: + sdk: flutter + pointer_interceptor: + path: ../../pointer_interceptor + +dev_dependencies: + flutter_lints: ^2.0.0 + flutter_test: + sdk: flutter + integration_test: + sdk: flutter + +flutter: + uses-material-design: true + diff --git a/packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart b/packages/pointer_interceptor/pointer_interceptor_web/example/test_driver/integration_test.dart similarity index 100% rename from packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart rename to packages/pointer_interceptor/pointer_interceptor_web/example/test_driver/integration_test.dart diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/web/favicon.png b/packages/pointer_interceptor/pointer_interceptor_web/example/web/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8aaa46ac1ae21512746f852a42ba87e4165dfdd1 GIT binary patch literal 917 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0X7 zltGxWVyS%@P(fs7NJL45ua8x7ey(0(N`6wRUPW#JP&EUCO@$SZnVVXYs8ErclUHn2 zVXFjIVFhG^g!Ppaz)DK8ZIvQ?0~DO|i&7O#^-S~(l1AfjnEK zjFOT9D}DX)@^Za$W4-*MbbUihOG|wNBYh(yU7!lx;>x^|#0uTKVr7USFmqf|i<65o z3raHc^AtelCMM;Vme?vOfh>Xph&xL%(-1c06+^uR^q@XSM&D4+Kp$>4P^%3{)XKjo zGZknv$b36P8?Z_gF{nK@`XI}Z90TzwSQO}0J1!f2c(B=V`5aP@1P1a|PZ!4!3&Gl8 zTYqUsf!gYFyJnXpu0!n&N*SYAX-%d(5gVjrHJWqXQshj@!Zm{!01WsQrH~9=kTxW#6SvuapgMqt>$=j#%eyGrQzr zP{L-3gsMA^$I1&gsBAEL+vxi1*Igl=8#8`5?A-T5=z-sk46WA1IUT)AIZHx1rdUrf zVJrJn<74DDw`j)Ki#gt}mIT-Q`XRa2-jQXQoI%w`nb|XblvzK${ZzlV)m-XcwC(od z71_OEC5Bt9GEXosOXaPTYOia#R4ID2TiU~`zVMl08TV_C%DnU4^+HE>9(CE4D6?Fz oujB08i7adh9xk7*FX66dWH6F5TM;?E2b5PlUHx3vIVCg!0Dx9vYXATM literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/web/icons/Icon-192.png b/packages/pointer_interceptor/pointer_interceptor_web/example/web/icons/Icon-192.png new file mode 100644 index 0000000000000000000000000000000000000000..b749bfef07473333cf1dd31e9eed89862a5d52aa GIT binary patch literal 5292 zcmZ`-2T+sGz6~)*FVZ`aW+(v>MIm&M-g^@e2u-B-DoB?qO+b1Tq<5uCCv>ESfRum& zp%X;f!~1{tzL__3=gjVJ=j=J>+nMj%ncXj1Q(b|Ckbw{Y0FWpt%4y%$uD=Z*c-x~o zE;IoE;xa#7Ll5nj-e4CuXB&G*IM~D21rCP$*xLXAK8rIMCSHuSu%bL&S3)8YI~vyp@KBu9Ph7R_pvKQ@xv>NQ`dZp(u{Z8K3yOB zn7-AR+d2JkW)KiGx0hosml;+eCXp6+w%@STjFY*CJ?udJ64&{BCbuebcuH;}(($@@ znNlgBA@ZXB)mcl9nbX#F!f_5Z=W>0kh|UVWnf!At4V*LQP%*gPdCXd6P@J4Td;!Ur z<2ZLmwr(NG`u#gDEMP19UcSzRTL@HsK+PnIXbVBT@oHm53DZr?~V(0{rsalAfwgo zEh=GviaqkF;}F_5-yA!1u3!gxaR&Mj)hLuj5Q-N-@Lra{%<4ONja8pycD90&>yMB` zchhd>0CsH`^|&TstH-8+R`CfoWqmTTF_0?zDOY`E`b)cVi!$4xA@oO;SyOjJyP^_j zx^@Gdf+w|FW@DMdOi8=4+LJl$#@R&&=UM`)G!y%6ZzQLoSL%*KE8IO0~&5XYR9 z&N)?goEiWA(YoRfT{06&D6Yuu@Qt&XVbuW@COb;>SP9~aRc+z`m`80pB2o%`#{xD@ zI3RAlukL5L>px6b?QW1Ac_0>ew%NM!XB2(H+1Y3AJC?C?O`GGs`331Nd4ZvG~bMo{lh~GeL zSL|tT*fF-HXxXYtfu5z+T5Mx9OdP7J4g%@oeC2FaWO1D{=NvL|DNZ}GO?O3`+H*SI z=grGv=7dL{+oY0eJFGO!Qe(e2F?CHW(i!!XkGo2tUvsQ)I9ev`H&=;`N%Z{L zO?vV%rDv$y(@1Yj@xfr7Kzr<~0{^T8wM80xf7IGQF_S-2c0)0D6b0~yD7BsCy+(zL z#N~%&e4iAwi4F$&dI7x6cE|B{f@lY5epaDh=2-(4N05VO~A zQT3hanGy_&p+7Fb^I#ewGsjyCEUmSCaP6JDB*=_()FgQ(-pZ28-{qx~2foO4%pM9e z*_63RT8XjgiaWY|*xydf;8MKLd{HnfZ2kM%iq}fstImB-K6A79B~YoPVa@tYN@T_$ zea+9)<%?=Fl!kd(Y!G(-o}ko28hg2!MR-o5BEa_72uj7Mrc&{lRh3u2%Y=Xk9^-qa zBPWaD=2qcuJ&@Tf6ue&)4_V*45=zWk@Z}Q?f5)*z)-+E|-yC4fs5CE6L_PH3=zI8p z*Z3!it{1e5_^(sF*v=0{`U9C741&lub89gdhKp|Y8CeC{_{wYK-LSbp{h)b~9^j!s z7e?Y{Z3pZv0J)(VL=g>l;<}xk=T*O5YR|hg0eg4u98f2IrA-MY+StQIuK-(*J6TRR z|IM(%uI~?`wsfyO6Tgmsy1b3a)j6M&-jgUjVg+mP*oTKdHg?5E`!r`7AE_#?Fc)&a z08KCq>Gc=ne{PCbRvs6gVW|tKdcE1#7C4e`M|j$C5EYZ~Y=jUtc zj`+?p4ba3uy7><7wIokM79jPza``{Lx0)zGWg;FW1^NKY+GpEi=rHJ+fVRGfXO zPHV52k?jxei_!YYAw1HIz}y8ZMwdZqU%ESwMn7~t zdI5%B;U7RF=jzRz^NuY9nM)&<%M>x>0(e$GpU9th%rHiZsIT>_qp%V~ILlyt^V`=d z!1+DX@ah?RnB$X!0xpTA0}lN@9V-ePx>wQ?-xrJr^qDlw?#O(RsXeAvM%}rg0NT#t z!CsT;-vB=B87ShG`GwO;OEbeL;a}LIu=&@9cb~Rsx(ZPNQ!NT7H{@j0e(DiLea>QD zPmpe90gEKHEZ8oQ@6%E7k-Ptn#z)b9NbD@_GTxEhbS+}Bb74WUaRy{w;E|MgDAvHw zL)ycgM7mB?XVh^OzbC?LKFMotw3r@i&VdUV%^Efdib)3@soX%vWCbnOyt@Y4swW925@bt45y0HY3YI~BnnzZYrinFy;L?2D3BAL`UQ zEj))+f>H7~g8*VuWQ83EtGcx`hun$QvuurSMg3l4IP8Fe`#C|N6mbYJ=n;+}EQm;< z!!N=5j1aAr_uEnnzrEV%_E|JpTb#1p1*}5!Ce!R@d$EtMR~%9# zd;h8=QGT)KMW2IKu_fA_>p_und#-;Q)p%%l0XZOXQicfX8M~7?8}@U^ihu;mizj)t zgV7wk%n-UOb z#!P5q?Ex+*Kx@*p`o$q8FWL*E^$&1*!gpv?Za$YO~{BHeGY*5%4HXUKa_A~~^d z=E*gf6&+LFF^`j4$T~dR)%{I)T?>@Ma?D!gi9I^HqvjPc3-v~=qpX1Mne@*rzT&Xw zQ9DXsSV@PqpEJO-g4A&L{F&;K6W60D!_vs?Vx!?w27XbEuJJP&);)^+VF1nHqHBWu z^>kI$M9yfOY8~|hZ9WB!q-9u&mKhEcRjlf2nm_@s;0D#c|@ED7NZE% zzR;>P5B{o4fzlfsn3CkBK&`OSb-YNrqx@N#4CK!>bQ(V(D#9|l!e9(%sz~PYk@8zt zPN9oK78&-IL_F zhsk1$6p;GqFbtB^ZHHP+cjMvA0(LqlskbdYE_rda>gvQLTiqOQ1~*7lg%z*&p`Ry& zRcG^DbbPj_jOKHTr8uk^15Boj6>hA2S-QY(W-6!FIq8h$<>MI>PYYRenQDBamO#Fv zAH5&ImqKBDn0v5kb|8i0wFhUBJTpT!rB-`zK)^SNnRmLraZcPYK7b{I@+}wXVdW-{Ps17qdRA3JatEd?rPV z4@}(DAMf5EqXCr4-B+~H1P#;t@O}B)tIJ(W6$LrK&0plTmnPpb1TKn3?f?Kk``?D+ zQ!MFqOX7JbsXfQrz`-M@hq7xlfNz;_B{^wbpG8des56x(Q)H)5eLeDwCrVR}hzr~= zM{yXR6IM?kXxauLza#@#u?Y|o;904HCqF<8yT~~c-xyRc0-vxofnxG^(x%>bj5r}N zyFT+xnn-?B`ohA>{+ZZQem=*Xpqz{=j8i2TAC#x-m;;mo{{sLB_z(UoAqD=A#*juZ zCv=J~i*O8;F}A^Wf#+zx;~3B{57xtoxC&j^ie^?**T`WT2OPRtC`xj~+3Kprn=rVM zVJ|h5ux%S{dO}!mq93}P+h36mZ5aZg1-?vhL$ke1d52qIiXSE(llCr5i=QUS?LIjc zV$4q=-)aaR4wsrQv}^shL5u%6;`uiSEs<1nG^?$kl$^6DL z43CjY`M*p}ew}}3rXc7Xck@k41jx}c;NgEIhKZ*jsBRZUP-x2cm;F1<5$jefl|ppO zmZd%%?gMJ^g9=RZ^#8Mf5aWNVhjAS^|DQO+q$)oeob_&ZLFL(zur$)); zU19yRm)z<4&4-M}7!9+^Wl}Uk?`S$#V2%pQ*SIH5KI-mn%i;Z7-)m$mN9CnI$G7?# zo`zVrUwoSL&_dJ92YhX5TKqaRkfPgC4=Q&=K+;_aDs&OU0&{WFH}kKX6uNQC6%oUH z2DZa1s3%Vtk|bglbxep-w)PbFG!J17`<$g8lVhqD2w;Z0zGsh-r zxZ13G$G<48leNqR!DCVt9)@}(zMI5w6Wo=N zpP1*3DI;~h2WDWgcKn*f!+ORD)f$DZFwgKBafEZmeXQMAsq9sxP9A)7zOYnkHT9JU zRA`umgmP9d6=PHmFIgx=0$(sjb>+0CHG)K@cPG{IxaJ&Ueo8)0RWgV9+gO7+Bl1(F z7!BslJ2MP*PWJ;x)QXbR$6jEr5q3 z(3}F@YO_P1NyTdEXRLU6fp?9V2-S=E+YaeLL{Y)W%6`k7$(EW8EZSA*(+;e5@jgD^I zaJQ2|oCM1n!A&-8`;#RDcZyk*+RPkn_r8?Ak@agHiSp*qFNX)&i21HE?yuZ;-C<3C zwJGd1lx5UzViP7sZJ&|LqH*mryb}y|%AOw+v)yc`qM)03qyyrqhX?ub`Cjwx2PrR! z)_z>5*!*$x1=Qa-0uE7jy0z`>|Ni#X+uV|%_81F7)b+nf%iz=`fF4g5UfHS_?PHbr zB;0$bK@=di?f`dS(j{l3-tSCfp~zUuva+=EWxJcRfp(<$@vd(GigM&~vaYZ0c#BTs z3ijkxMl=vw5AS&DcXQ%eeKt!uKvh2l3W?&3=dBHU=Gz?O!40S&&~ei2vg**c$o;i89~6DVns zG>9a*`k5)NI9|?W!@9>rzJ;9EJ=YlJTx1r1BA?H`LWijk(rTax9(OAu;q4_wTj-yj z1%W4GW&K4T=uEGb+E!>W0SD_C0RR91 literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/web/icons/Icon-512.png b/packages/pointer_interceptor/pointer_interceptor_web/example/web/icons/Icon-512.png new file mode 100644 index 0000000000000000000000000000000000000000..88cfd48dff1169879ba46840804b412fe02fefd6 GIT binary patch literal 8252 zcmd5=2T+s!lYZ%-(h(2@5fr2dC?F^$C=i-}R6$UX8af(!je;W5yC_|HmujSgN*6?W z3knF*TL1$|?oD*=zPbBVex*RUIKsL<(&Rj9%^UD2IK3W?2j>D?eWQgvS-HLymHo9%~|N2Q{~j za?*X-{b9JRowv_*Mh|;*-kPFn>PI;r<#kFaxFqbn?aq|PduQg=2Q;~Qc}#z)_T%x9 zE|0!a70`58wjREmAH38H1)#gof)U3g9FZ^ zF7&-0^Hy{4XHWLoC*hOG(dg~2g6&?-wqcpf{ z&3=o8vw7lMi22jCG9RQbv8H}`+}9^zSk`nlR8?Z&G2dlDy$4#+WOlg;VHqzuE=fM@ z?OI6HEJH4&tA?FVG}9>jAnq_^tlw8NbjNhfqk2rQr?h(F&WiKy03Sn=-;ZJRh~JrD zbt)zLbnabttEZ>zUiu`N*u4sfQaLE8-WDn@tHp50uD(^r-}UsUUu)`!Rl1PozAc!a z?uj|2QDQ%oV-jxUJmJycySBINSKdX{kDYRS=+`HgR2GO19fg&lZKyBFbbXhQV~v~L za^U944F1_GtuFXtvDdDNDvp<`fqy);>Vw=ncy!NB85Tw{&sT5&Ox%-p%8fTS;OzlRBwErvO+ROe?{%q-Zge=%Up|D4L#>4K@Ke=x%?*^_^P*KD zgXueMiS63!sEw@fNLB-i^F|@Oib+S4bcy{eu&e}Xvb^(mA!=U=Xr3||IpV~3K zQWzEsUeX_qBe6fky#M zzOJm5b+l;~>=sdp%i}}0h zO?B?i*W;Ndn02Y0GUUPxERG`3Bjtj!NroLoYtyVdLtl?SE*CYpf4|_${ku2s`*_)k zN=a}V8_2R5QANlxsq!1BkT6$4>9=-Ix4As@FSS;1q^#TXPrBsw>hJ}$jZ{kUHoP+H zvoYiR39gX}2OHIBYCa~6ERRPJ#V}RIIZakUmuIoLF*{sO8rAUEB9|+A#C|@kw5>u0 zBd=F!4I)Be8ycH*)X1-VPiZ+Ts8_GB;YW&ZFFUo|Sw|x~ZajLsp+_3gv((Q#N>?Jz zFBf`~p_#^${zhPIIJY~yo!7$-xi2LK%3&RkFg}Ax)3+dFCjGgKv^1;lUzQlPo^E{K zmCnrwJ)NuSaJEmueEPO@(_6h3f5mFffhkU9r8A8(JC5eOkux{gPmx_$Uv&|hyj)gN zd>JP8l2U&81@1Hc>#*su2xd{)T`Yw< zN$dSLUN}dfx)Fu`NcY}TuZ)SdviT{JHaiYgP4~@`x{&h*Hd>c3K_To9BnQi@;tuoL z%PYQo&{|IsM)_>BrF1oB~+`2_uZQ48z9!)mtUR zdfKE+b*w8cPu;F6RYJiYyV;PRBbThqHBEu_(U{(gGtjM}Zi$pL8Whx}<JwE3RM0F8x7%!!s)UJVq|TVd#hf1zVLya$;mYp(^oZQ2>=ZXU1c$}f zm|7kfk>=4KoQoQ!2&SOW5|JP1)%#55C$M(u4%SP~tHa&M+=;YsW=v(Old9L3(j)`u z2?#fK&1vtS?G6aOt@E`gZ9*qCmyvc>Ma@Q8^I4y~f3gs7*d=ATlP>1S zyF=k&6p2;7dn^8?+!wZO5r~B+;@KXFEn^&C=6ma1J7Au6y29iMIxd7#iW%=iUzq&C=$aPLa^Q zncia$@TIy6UT@69=nbty5epP>*fVW@5qbUcb2~Gg75dNd{COFLdiz3}kODn^U*=@E z0*$7u7Rl2u)=%fk4m8EK1ctR!6%Ve`e!O20L$0LkM#f+)n9h^dn{n`T*^~d+l*Qlx z$;JC0P9+en2Wlxjwq#z^a6pdnD6fJM!GV7_%8%c)kc5LZs_G^qvw)&J#6WSp< zmsd~1-(GrgjC56Pdf6#!dt^y8Rg}!#UXf)W%~PeU+kU`FeSZHk)%sFv++#Dujk-~m zFHvVJC}UBn2jN& zs!@nZ?e(iyZPNo`p1i#~wsv9l@#Z|ag3JR>0#u1iW9M1RK1iF6-RbJ4KYg?B`dET9 zyR~DjZ>%_vWYm*Z9_+^~hJ_|SNTzBKx=U0l9 z9x(J96b{`R)UVQ$I`wTJ@$_}`)_DyUNOso6=WOmQKI1e`oyYy1C&%AQU<0-`(ow)1 zT}gYdwWdm4wW6|K)LcfMe&psE0XGhMy&xS`@vLi|1#Za{D6l@#D!?nW87wcscUZgELT{Cz**^;Zb~7 z(~WFRO`~!WvyZAW-8v!6n&j*PLm9NlN}BuUN}@E^TX*4Or#dMMF?V9KBeLSiLO4?B zcE3WNIa-H{ThrlCoN=XjOGk1dT=xwwrmt<1a)mrRzg{35`@C!T?&_;Q4Ce=5=>z^*zE_c(0*vWo2_#TD<2)pLXV$FlwP}Ik74IdDQU@yhkCr5h zn5aa>B7PWy5NQ!vf7@p_qtC*{dZ8zLS;JetPkHi>IvPjtJ#ThGQD|Lq#@vE2xdl%`x4A8xOln}BiQ92Po zW;0%A?I5CQ_O`@Ad=`2BLPPbBuPUp@Hb%a_OOI}y{Rwa<#h z5^6M}s7VzE)2&I*33pA>e71d78QpF>sNK;?lj^Kl#wU7G++`N_oL4QPd-iPqBhhs| z(uVM}$ItF-onXuuXO}o$t)emBO3Hjfyil@*+GF;9j?`&67GBM;TGkLHi>@)rkS4Nj zAEk;u)`jc4C$qN6WV2dVd#q}2X6nKt&X*}I@jP%Srs%%DS92lpDY^K*Sx4`l;aql$ zt*-V{U&$DM>pdO?%jt$t=vg5|p+Rw?SPaLW zB6nvZ69$ne4Z(s$3=Rf&RX8L9PWMV*S0@R zuIk&ba#s6sxVZ51^4Kon46X^9`?DC9mEhWB3f+o4#2EXFqy0(UTc>GU| zGCJmI|Dn-dX#7|_6(fT)>&YQ0H&&JX3cTvAq(a@ydM4>5Njnuere{J8p;3?1az60* z$1E7Yyxt^ytULeokgDnRVKQw9vzHg1>X@@jM$n$HBlveIrKP5-GJq%iWH#odVwV6cF^kKX(@#%%uQVb>#T6L^mC@)%SMd4DF? zVky!~ge27>cpUP1Vi}Z32lbLV+CQy+T5Wdmva6Fg^lKb!zrg|HPU=5Qu}k;4GVH+x z%;&pN1LOce0w@9i1Mo-Y|7|z}fbch@BPp2{&R-5{GLoeu8@limQmFF zaJRR|^;kW_nw~0V^ zfTnR!Ni*;-%oSHG1yItARs~uxra|O?YJxBzLjpeE-=~TO3Dn`JL5Gz;F~O1u3|FE- zvK2Vve`ylc`a}G`gpHg58Cqc9fMoy1L}7x7T>%~b&irrNMo?np3`q;d3d;zTK>nrK zOjPS{@&74-fA7j)8uT9~*g23uGnxwIVj9HorzUX#s0pcp2?GH6i}~+kv9fWChtPa_ z@T3m+$0pbjdQw7jcnHn;Pi85hk_u2-1^}c)LNvjdam8K-XJ+KgKQ%!?2n_!#{$H|| zLO=%;hRo6EDmnOBKCL9Cg~ETU##@u^W_5joZ%Et%X_n##%JDOcsO=0VL|Lkk!VdRJ z^|~2pB@PUspT?NOeO?=0Vb+fAGc!j%Ufn-cB`s2A~W{Zj{`wqWq_-w0wr@6VrM zbzni@8c>WS!7c&|ZR$cQ;`niRw{4kG#e z70e!uX8VmP23SuJ*)#(&R=;SxGAvq|&>geL&!5Z7@0Z(No*W561n#u$Uc`f9pD70# z=sKOSK|bF~#khTTn)B28h^a1{;>EaRnHj~>i=Fnr3+Fa4 z`^+O5_itS#7kPd20rq66_wH`%?HNzWk@XFK0n;Z@Cx{kx==2L22zWH$Yg?7 zvDj|u{{+NR3JvUH({;b*$b(U5U z7(lF!1bz2%06+|-v(D?2KgwNw7( zJB#Tz+ZRi&U$i?f34m7>uTzO#+E5cbaiQ&L}UxyOQq~afbNB4EI{E04ZWg53w0A{O%qo=lF8d zf~ktGvIgf-a~zQoWf>loF7pOodrd0a2|BzwwPDV}ShauTK8*fmF6NRbO>Iw9zZU}u zw8Ya}?seBnEGQDmH#XpUUkj}N49tP<2jYwTFp!P+&Fd(%Z#yo80|5@zN(D{_pNow*&4%ql zW~&yp@scb-+Qj-EmErY+Tu=dUmf@*BoXY2&oKT8U?8?s1d}4a`Aq>7SV800m$FE~? zjmz(LY+Xx9sDX$;vU`xgw*jLw7dWOnWWCO8o|;}f>cu0Q&`0I{YudMn;P;L3R-uz# zfns_mZED_IakFBPP2r_S8XM$X)@O-xVKi4`7373Jkd5{2$M#%cRhWer3M(vr{S6>h zj{givZJ3(`yFL@``(afn&~iNx@B1|-qfYiZu?-_&Z8+R~v`d6R-}EX9IVXWO-!hL5 z*k6T#^2zAXdardU3Ao~I)4DGdAv2bx{4nOK`20rJo>rmk3S2ZDu}))8Z1m}CKigf0 z3L`3Y`{huj`xj9@`$xTZzZc3je?n^yG<8sw$`Y%}9mUsjUR%T!?k^(q)6FH6Af^b6 zlPg~IEwg0y;`t9y;#D+uz!oE4VP&Je!<#q*F?m5L5?J3i@!0J6q#eu z!RRU`-)HeqGi_UJZ(n~|PSNsv+Wgl{P-TvaUQ9j?ZCtvb^37U$sFpBrkT{7Jpd?HpIvj2!}RIq zH{9~+gErN2+}J`>Jvng2hwM`=PLNkc7pkjblKW|+Fk9rc)G1R>Ww>RC=r-|!m-u7( zc(a$9NG}w#PjWNMS~)o=i~WA&4L(YIW25@AL9+H9!?3Y}sv#MOdY{bb9j>p`{?O(P zIvb`n?_(gP2w3P#&91JX*md+bBEr%xUHMVqfB;(f?OPtMnAZ#rm5q5mh;a2f_si2_ z3oXWB?{NF(JtkAn6F(O{z@b76OIqMC$&oJ_&S|YbFJ*)3qVX_uNf5b8(!vGX19hsG z(OP>RmZp29KH9Ge2kKjKigUmOe^K_!UXP`von)PR8Qz$%=EmOB9xS(ZxE_tnyzo}7 z=6~$~9k0M~v}`w={AeqF?_)9q{m8K#6M{a&(;u;O41j)I$^T?lx5(zlebpY@NT&#N zR+1bB)-1-xj}R8uwqwf=iP1GbxBjneCC%UrSdSxK1vM^i9;bUkS#iRZw2H>rS<2<$ zNT3|sDH>{tXb=zq7XZi*K?#Zsa1h1{h5!Tq_YbKFm_*=A5-<~j63he;4`77!|LBlo zR^~tR3yxcU=gDFbshyF6>o0bdp$qmHS7D}m3;^QZq9kBBU|9$N-~oU?G5;jyFR7>z hN`IR97YZXIo@y!QgFWddJ3|0`sjFx!m))><{BI=FK%f8s literal 0 HcmV?d00001 diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/web/index.html b/packages/pointer_interceptor/pointer_interceptor_web/example/web/index.html new file mode 100644 index 00000000000..a53f5677b57 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/web/index.html @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + example + + + + + + + + diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/web/manifest.json b/packages/pointer_interceptor/pointer_interceptor_web/example/web/manifest.json new file mode 100644 index 00000000000..8c012917dab --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/web/manifest.json @@ -0,0 +1,23 @@ +{ + "name": "example", + "short_name": "example", + "start_url": ".", + "display": "standalone", + "background_color": "#0175C2", + "theme_color": "#0175C2", + "description": "A new Flutter project.", + "orientation": "portrait-primary", + "prefer_related_applications": false, + "icons": [ + { + "src": "icons/Icon-192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "icons/Icon-512.png", + "sizes": "512x512", + "type": "image/png" + } + ] +} diff --git a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart b/packages/pointer_interceptor/pointer_interceptor_web/lib/pointer_interceptor_web.dart similarity index 95% rename from packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart rename to packages/pointer_interceptor/pointer_interceptor_web/lib/pointer_interceptor_web.dart index 16e4a03a741..6ebcc256b6b 100644 --- a/packages/pointer_interceptor/pointer_interceptor/lib/src/pointer_interceptor_web.dart +++ b/packages/pointer_interceptor/pointer_interceptor_web/lib/pointer_interceptor_web.dart @@ -9,7 +9,7 @@ import 'dart:ui_web' as ui_web; import 'package:flutter/widgets.dart'; import 'package:flutter_web_plugins/flutter_web_plugins.dart'; -import '../pointer_interceptor.dart'; +import 'package:pointer_interceptor_platform_interface/pointer_interceptor_platform_interface.dart'; const String _viewType = '__webPointerInterceptorViewType__'; const String _debug = 'debug__'; diff --git a/packages/pointer_interceptor/pointer_interceptor_web/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_web/pubspec.yaml new file mode 100644 index 00000000000..9430956e25c --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_web/pubspec.yaml @@ -0,0 +1,31 @@ +name: pointer_interceptor_web +description: Web implementation of the pointer_interceptor plugin. +repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_web +issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen++label%3A%22p%3A+pointer_interceptor%22 +version: 2.3.1 +publish_to: none + +environment: + sdk: '>=3.1.0' + flutter: '>=3.13.0' + +flutter: + plugin: + implements: pointer_interceptor + platforms: + web: + pluginClass: PointerInterceptorWeb + fileName: pointer_interceptor_web.dart + +dependencies: + flutter: + sdk: flutter + flutter_web_plugins: + sdk: flutter + plugin_platform_interface: ^2.1.6 + pointer_interceptor_platform_interface: + path: ../pointer_interceptor_platform_interface + +dev_dependencies: + flutter_test: + sdk: flutter \ No newline at end of file From b53e4f80bd3d8cd088b519bf7c291180cf966c15 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 14 Nov 2023 15:14:03 -0800 Subject: [PATCH 39/52] licensing, formatting --- .../pointer_interceptor/example/lib/main.dart | 3 --- .../example/lib/native_widget.dart | 3 ++- .../example/lib/platforms/native_widget_ios.dart | 6 +++++- .../example/lib/platforms/native_widget_web.dart | 11 +++++++---- .../pointer_interceptor_web/example/lib/main.dart | 5 ----- 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart index bef73fed067..cb9c7498ab9 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart @@ -4,12 +4,10 @@ // ignore: avoid_web_libraries_in_flutter -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; import 'native_widget.dart'; -const String _htmlElementViewType = '_htmlElementViewType'; const double _videoWidth = 640; const double _videoHeight = 480; @@ -165,4 +163,3 @@ class _MyHomePageState extends State { ); } } - diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart index ed54a6c47ec..37dc7b2a349 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/native_widget.dart @@ -2,4 +2,5 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -export 'platforms/native_widget_ios.dart' if (dart.library.html) 'platforms/native_widget_web.dart'; \ No newline at end of file +export 'platforms/native_widget_ios.dart' + if (dart.library.html) 'platforms/native_widget_web.dart'; diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart index 7517b4ff689..ebfe1a12c7c 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart @@ -1,8 +1,12 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +/// A widget representing an underlying platform view class NativeWidget extends StatelessWidget { - /// Constructor const NativeWidget({super.key, required this.onClick}); diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart index cd05f4a7950..5b9458796c5 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_web.dart @@ -1,7 +1,10 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + import 'dart:html' as html; import 'dart:ui_web' as ui_web; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; /// The html.Element that will be rendered underneath the flutter UI. @@ -33,8 +36,8 @@ html.Element htmlElement = html.DivElement() const String _htmlElementViewType = '_htmlElementViewType'; +/// A widget representing an underlying html view class NativeWidget extends StatelessWidget { - /// Constructor const NativeWidget({super.key, required this.onClick}); @@ -49,11 +52,11 @@ class NativeWidget extends StatelessWidget { ui_web.platformViewRegistry.registerViewFactory( _htmlElementViewType, - (int viewId) => htmlElement, + (int viewId) => htmlElement, ); return const HtmlElementView( viewType: _htmlElementViewType, ); } -} \ No newline at end of file +} diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart index 8c39022a655..f1363bdcec1 100644 --- a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart @@ -46,11 +46,6 @@ void main() { _htmlElementViewType, (int viewId) => htmlElement, ); - - if(!kIsWeb) { - return; - } - runApp(const MyApp()); } From afb90bd1abc5956eab01484a4797f8cdb76d6f05 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Tue, 14 Nov 2023 15:22:05 -0800 Subject: [PATCH 40/52] fix integration test --- .../example/integration_test/widget_test.dart | 15 +++++++++++++++ .../example/test_driver/integration_test.dart | 7 +++++++ .../pointer_interceptor_web/example/lib/main.dart | 1 - 3 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart diff --git a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart new file mode 100644 index 00000000000..eceaac09c7d --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart @@ -0,0 +1,15 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// ignore_for_file: avoid_print + +import 'package:flutter_test/flutter_test.dart'; + +void main() { + test('Tell the user where to find the real tests', () { + print('---'); + print('Please find integration tests in the their respective platform packages'); + print('---'); + }); +} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart b/packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart new file mode 100644 index 00000000000..f26b6a310cf --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor/example/test_driver/integration_test.dart @@ -0,0 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:integration_test/integration_test_driver.dart'; + +Future main() async => integrationDriver(); diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart index f1363bdcec1..49fbc13a95b 100644 --- a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart @@ -6,7 +6,6 @@ import 'dart:html' as html; import 'dart:ui_web' as ui_web; -import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:pointer_interceptor/pointer_interceptor.dart'; From 7b4d1be6dfd2dbb320d25f78a967537ac6e5942d Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 00:41:46 -0800 Subject: [PATCH 41/52] formatting --- .../example/integration_test/widget_test.dart | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart index eceaac09c7d..28fd1a31662 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart @@ -5,11 +5,15 @@ // ignore_for_file: avoid_print import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; void main() { - test('Tell the user where to find the real tests', () { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + testWidgets('Tell the user where to find the real tests', + (WidgetTester tester) async { print('---'); - print('Please find integration tests in the their respective platform packages'); + print('Please find platform tests in their respective packages.'); print('---'); }); } From fa36d02e45c97274e1e7729b6496c4b1c62b2bd6 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 00:48:50 -0800 Subject: [PATCH 42/52] fix pbxproj --- .../ios/Runner.xcodeproj/project.pbxproj | 104 ++++++++-------- .../ios/Runner.xcodeproj/project.pbxproj | 116 +++++++++--------- 2 files changed, 107 insertions(+), 113 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj index 4cd919c846d..90b87f2d640 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj @@ -9,13 +9,13 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; - 347725BE8B139589DCEF27CB /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 30A6BBCBDBF121EF5AB37891 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - B42E6688CF6D533A672F99FA /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */; }; + AD9B762ED7D3DC6CEA4CD966 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */; }; + F00A561614F2B3E7FE823F46 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */; }; F25BFF892B037A720088B2C7 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ @@ -43,18 +43,17 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 30A6BBCBDBF121EF5AB37891 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8BA87836106AD097565548A6 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + 91777E2C65BCDDBD842AAB48 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -62,11 +61,12 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - D1541F5A096B8882503CFC4E /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + BE50CEFF6761C66C94F2234E /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + D5636FB8626068E5672ACD85 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + E06D75F07A10E45570A0BF84 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; - F33FCBEB709E16FA17277EE4 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + F3F99F51903866D0EBFE326B /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; + FC4D75C4D199CFA3ED85C270 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -74,7 +74,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 347725BE8B139589DCEF27CB /* Pods_RunnerTests.framework in Frameworks */, + F00A561614F2B3E7FE823F46 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,31 +82,22 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - B42E6688CF6D533A672F99FA /* Pods_Runner.framework in Frameworks */, + AD9B762ED7D3DC6CEA4CD966 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0611E84C8FDCDE5A710A5991 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 12C57ED7C6C5D7E10E3E5DA7 /* Pods_Runner.framework */, - 30A6BBCBDBF121EF5AB37891 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 1C9A5A1A7487CB72068132AF /* Pods */ = { isa = PBXGroup; children = ( - D1541F5A096B8882503CFC4E /* Pods-Runner.debug.xcconfig */, - F33FCBEB709E16FA17277EE4 /* Pods-Runner.release.xcconfig */, - 8BA87836106AD097565548A6 /* Pods-Runner.profile.xcconfig */, - B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */, - D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */, - 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */, + E06D75F07A10E45570A0BF84 /* Pods-Runner.debug.xcconfig */, + D5636FB8626068E5672ACD85 /* Pods-Runner.release.xcconfig */, + 91777E2C65BCDDBD842AAB48 /* Pods-Runner.profile.xcconfig */, + F3F99F51903866D0EBFE326B /* Pods-RunnerTests.debug.xcconfig */, + FC4D75C4D199CFA3ED85C270 /* Pods-RunnerTests.release.xcconfig */, + BE50CEFF6761C66C94F2234E /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -119,6 +110,15 @@ path = RunnerTests; sourceTree = ""; }; + 90A39E330862534F1534C253 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */, + 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -138,7 +138,7 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, 1C9A5A1A7487CB72068132AF /* Pods */, - 0611E84C8FDCDE5A710A5991 /* Frameworks */, + 90A39E330862534F1534C253 /* Frameworks */, ); sourceTree = ""; }; @@ -174,7 +174,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - D74D8217940E678B679B4251 /* [CP] Check Pods Manifest.lock */, + DD58C5E96F70DE04A6B53D7D /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, 481F635FF99F21DB6CE5074C /* Frameworks */, @@ -193,14 +193,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 132A6E50737F13F7D1A77FBC /* [CP] Check Pods Manifest.lock */, + 325438A1F419DCAC9CBB9DCA /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - AF30B8576CD54E4B905A2F2C /* [CP] Embed Pods Frameworks */, + EE2C046C51CFC8758C997EC1 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -272,7 +272,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 132A6E50737F13F7D1A77FBC /* [CP] Check Pods Manifest.lock */ = { + 325438A1F419DCAC9CBB9DCA /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -325,43 +325,43 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AF30B8576CD54E4B905A2F2C /* [CP] Embed Pods Frameworks */ = { + DD58C5E96F70DE04A6B53D7D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "[CP] Embed Pods Frameworks"; + inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + ); + outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - D74D8217940E678B679B4251 /* [CP] Check Pods Manifest.lock */ = { + EE2C046C51CFC8758C997EC1 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -472,14 +472,14 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = S8QB4VV633; + DEVELOPMENT_TEAM = PZ83UV676J; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerinterceptor; + PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerinterceptorios; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -489,7 +489,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B3522878D65FCBC0601EA061 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = F3F99F51903866D0EBFE326B /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -507,7 +507,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D4C14C39DA0CF40A2BE928AE /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = FC4D75C4D199CFA3ED85C270 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -523,7 +523,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3C955695FF302C5CE3F51C78 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = BE50CEFF6761C66C94F2234E /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 4734b74dc00..d8ae65de578 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,10 +8,10 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 1A46290CBEF98B705C2A625A /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */; }; + 218B2294B1CFCD61003AC4A5 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEF0C00E0CD9AAEC73DDBD9 /* Pods_RunnerTests.framework */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 3BD31EF753903CCB735C80AF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 91DABD745B9E6DB10A9D2388 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 8CACC05578EEAD2F10266FC4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBF534DCDBE6E68795AB4413 /* Pods_Runner.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -44,28 +44,25 @@ /* Begin PBXFileReference section */ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.release.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.release.xcconfig"; sourceTree = ""; }; + 376192EF13530A2F9C8A25D5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 414B0FC892AE12013FCBDEDE /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5E28413DB4139FF5D257C46F /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + 4769A4AD1A261E5AE3FA9C74 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; + 4A2C44B0000D9387232EBD5E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.profile.xcconfig"; sourceTree = ""; }; - 91DABD745B9E6DB10A9D2388 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 94846F4A339FFD56E489B450 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97B88D0C8025FFF0F8934763 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BD9F07D13A0045B72C86A883 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; - EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerUITests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerUITests/Pods-RunnerUITests.debug.xcconfig"; sourceTree = ""; }; + CBF534DCDBE6E68795AB4413 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DAEF0C00E0CD9AAEC73DDBD9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F1A4A93ACD9364FD0E8CBA05 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F243D6102AE053F700F4A2FC /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; @@ -76,7 +73,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 1A46290CBEF98B705C2A625A /* Pods_Runner.framework in Frameworks */, + 8CACC05578EEAD2F10266FC4 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -84,18 +81,18 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 3BD31EF753903CCB735C80AF /* Pods_RunnerTests.framework in Frameworks */, + 218B2294B1CFCD61003AC4A5 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 82C4B0C219FA8A2BE76C1522 /* Frameworks */ = { + 35B2938A6849760E824FA060 /* Frameworks */ = { isa = PBXGroup; children = ( - 59B2E5573246066B9248F6A6 /* Pods_Runner.framework */, - 91DABD745B9E6DB10A9D2388 /* Pods_RunnerTests.framework */, + CBF534DCDBE6E68795AB4413 /* Pods_Runner.framework */, + DAEF0C00E0CD9AAEC73DDBD9 /* Pods_RunnerTests.framework */, ); name = Frameworks; sourceTree = ""; @@ -119,7 +116,7 @@ F243D60F2AE053F700F4A2FC /* RunnerTests */, 97C146EF1CF9000F007C117D /* Products */, CA6EAE272C76E7B047DA5950 /* Pods */, - 82C4B0C219FA8A2BE76C1522 /* Frameworks */, + 35B2938A6849760E824FA060 /* Frameworks */, ); sourceTree = ""; }; @@ -151,15 +148,12 @@ CA6EAE272C76E7B047DA5950 /* Pods */ = { isa = PBXGroup; children = ( - C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */, - 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */, - 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */, - EC4CC0B2FE0461A7E900B600 /* Pods-RunnerUITests.debug.xcconfig */, - 391AA0C48579C832B4563D13 /* Pods-RunnerUITests.release.xcconfig */, - 7B648B1BBF65711A8B276112 /* Pods-RunnerUITests.profile.xcconfig */, - BD9F07D13A0045B72C86A883 /* Pods-RunnerTests.debug.xcconfig */, - 414B0FC892AE12013FCBDEDE /* Pods-RunnerTests.release.xcconfig */, - 5E28413DB4139FF5D257C46F /* Pods-RunnerTests.profile.xcconfig */, + 376192EF13530A2F9C8A25D5 /* Pods-Runner.debug.xcconfig */, + 4A2C44B0000D9387232EBD5E /* Pods-Runner.release.xcconfig */, + F1A4A93ACD9364FD0E8CBA05 /* Pods-Runner.profile.xcconfig */, + 94846F4A339FFD56E489B450 /* Pods-RunnerTests.debug.xcconfig */, + 4769A4AD1A261E5AE3FA9C74 /* Pods-RunnerTests.release.xcconfig */, + 97B88D0C8025FFF0F8934763 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -179,14 +173,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 827456E708AF4D4FB232D511 /* [CP] Check Pods Manifest.lock */, + 8B2A84257A702FEC944D003C /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 05B12E96BF02498BBE4B9E87 /* [CP] Embed Pods Frameworks */, + D0BD470468C51C1D1BDBC59A /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -201,7 +195,7 @@ isa = PBXNativeTarget; buildConfigurationList = F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - C3F0329C6232986D5E52BA17 /* [CP] Check Pods Manifest.lock */, + 776BD2B16B1623B47EE8F214 /* [CP] Check Pods Manifest.lock */, F243D60A2AE053F700F4A2FC /* Sources */, F243D60B2AE053F700F4A2FC /* Frameworks */, F243D60C2AE053F700F4A2FC /* Resources */, @@ -278,40 +272,45 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 05B12E96BF02498BBE4B9E87 /* [CP] Embed Pods Frameworks */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", + name = "Thin Binary"; + outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 776BD2B16B1623B47EE8F214 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - 827456E708AF4D4FB232D511 /* [CP] Check Pods Manifest.lock */ = { + 8B2A84257A702FEC944D003C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -348,26 +347,21 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - C3F0329C6232986D5E52BA17 /* [CP] Check Pods Manifest.lock */ = { + D0BD470468C51C1D1BDBC59A /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; + name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; /* End PBXShellScriptBuildPhase section */ @@ -472,7 +466,7 @@ }; 249021D4217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 799C43480041BBE962B24F46 /* Pods-Runner.profile.xcconfig */; + baseConfigurationReference = F1A4A93ACD9364FD0E8CBA05 /* Pods-Runner.profile.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -601,7 +595,7 @@ }; 97C147061CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C040E9FFDD4154203A254D5B /* Pods-Runner.debug.xcconfig */; + baseConfigurationReference = 376192EF13530A2F9C8A25D5 /* Pods-Runner.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -624,7 +618,7 @@ }; 97C147071CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3DAE6A042A9557CF5946F16A /* Pods-Runner.release.xcconfig */; + baseConfigurationReference = 4A2C44B0000D9387232EBD5E /* Pods-Runner.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; @@ -646,7 +640,7 @@ }; F243D6162AE053F700F4A2FC /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = BD9F07D13A0045B72C86A883 /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 94846F4A339FFD56E489B450 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -676,7 +670,7 @@ }; F243D6172AE053F700F4A2FC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 414B0FC892AE12013FCBDEDE /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 4769A4AD1A261E5AE3FA9C74 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; @@ -703,7 +697,7 @@ }; F243D6182AE053F700F4A2FC /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5E28413DB4139FF5D257C46F /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 97B88D0C8025FFF0F8934763 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; From d40abd2b8145b57d2c9f2bcd2f7a2d1692db24b3 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 11:05:47 -0800 Subject: [PATCH 43/52] fix pbxproj? --- .../example/ios/Runner.xcodeproj/project.pbxproj | 3 +++ 1 file changed, 3 insertions(+) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index d8ae65de578..142e8d5e348 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -473,6 +473,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = S8QB4VV633; ENABLE_BITCODE = NO; + FLUTTER_BUILD_DIR = build; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -602,6 +603,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = PZ83UV676J; ENABLE_BITCODE = NO; + FLUTTER_BUILD_DIR = build; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -625,6 +627,7 @@ CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = PZ83UV676J; ENABLE_BITCODE = NO; + FLUTTER_BUILD_DIR = build; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", From 340bd5c8ab226bc4f89b952ee5934c39c15d6ed2 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 12:07:52 -0800 Subject: [PATCH 44/52] pbxproj --- .../example/ios/Runner.xcodeproj/project.pbxproj | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 142e8d5e348..01f3484a2b7 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -15,6 +15,7 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; + F2D8AF642B0552FB0069EAC7 /* RunnerTests.xctest in Resources */ = {isa = PBXBuildFile; fileRef = F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */; }; F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ @@ -266,6 +267,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + F2D8AF642B0552FB0069EAC7 /* RunnerTests.xctest in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; From a766eb8402e75e6e801c2d7f4e404065f9a99819 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 15:43:52 -0800 Subject: [PATCH 45/52] fix ios platform tests, add unit tests --- .../ios/Flutter/AppFrameworkInfo.plist | 40 +- .../ios/Runner.xcodeproj/project.pbxproj | 377 +++++++++++------- .../xcshareddata/xcschemes/Runner.xcscheme | 6 +- .../example/ios/RunnerTests/RunnerTests.swift | 38 +- .../ios/RunnerUITests/RunnerUITests.swift | 40 ++ 5 files changed, 314 insertions(+), 187 deletions(-) create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist index a5ecb31c77d..9625e105df3 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - App - CFBundleIdentifier - dev.flutter - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - pointer_interceptor_ios_example - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0 - CFBundleSignature - ???? - CFBundleVersion - 1.0 - MinimumOSVersion - 11.0 + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 11.0 diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 01f3484a2b7..8eabdb5cf6a 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,19 +8,27 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 218B2294B1CFCD61003AC4A5 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAEF0C00E0CD9AAEC73DDBD9 /* Pods_RunnerTests.framework */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 46643191504C316CD4ABDB75 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F7324BF52939888500E1D0F3 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 8CACC05578EEAD2F10266FC4 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CBF534DCDBE6E68795AB4413 /* Pods_Runner.framework */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - F2D8AF642B0552FB0069EAC7 /* RunnerTests.xctest in Resources */ = {isa = PBXBuildFile; fileRef = F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */; }; - F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */; }; + E168ED82D399C1A9329D0876 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1F367B2EDD332D4B9230AF1 /* Pods_Runner.framework */; }; + F21CDFA32B056EBD0017C279 /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21CDFA22B056EBD0017C279 /* RunnerUITests.swift */; }; + F2D8AF672B0567630069EAC7 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D8AF662B0567630069EAC7 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - F243D6142AE053F700F4A2FC /* PBXContainerItemProxy */ = { + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; + F21CDFA62B056EBD0017C279 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 97C146E61CF9000F007C117D /* Project object */; proxyType = 1; @@ -43,59 +51,68 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0572F01CACAE4D575F1A1128 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 376192EF13530A2F9C8A25D5 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 2DD5F6BD11575A75FA2A0EBC /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 37A897E52BBF8D001E20DCBE /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 4769A4AD1A261E5AE3FA9C74 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; - 4A2C44B0000D9387232EBD5E /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + 4231BCCD2D6A3407E2AA20F2 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 94846F4A339FFD56E489B450 /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; - 97B88D0C8025FFF0F8934763 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - CBF534DCDBE6E68795AB4413 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DAEF0C00E0CD9AAEC73DDBD9 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F1A4A93ACD9364FD0E8CBA05 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - F243D6102AE053F700F4A2FC /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; + B65B5543E4E11276FC0745D9 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; + CDA7125E540D71A7A056DCE6 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; + F1F367B2EDD332D4B9230AF1 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F21CDF922B056DB70017C279 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; + F21CDFA02B056EBD0017C279 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + F21CDFA22B056EBD0017C279 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; + F2D8AF662B0567630069EAC7 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DummyPlatformViewFactory.swift; path = ../../../../../../../../Desktop/example/ios/Runner/DummyPlatformViewFactory.swift; sourceTree = ""; }; + F7324BF52939888500E1D0F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 92C054B3F5E4DE78794EA034 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 46643191504C316CD4ABDB75 /* Pods_RunnerTests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 8CACC05578EEAD2F10266FC4 /* Pods_Runner.framework in Frameworks */, + E168ED82D399C1A9329D0876 /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - F243D60B2AE053F700F4A2FC /* Frameworks */ = { + F21CDF9D2B056EBD0017C279 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 218B2294B1CFCD61003AC4A5 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 35B2938A6849760E824FA060 /* Frameworks */ = { + 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( - CBF534DCDBE6E68795AB4413 /* Pods_Runner.framework */, - DAEF0C00E0CD9AAEC73DDBD9 /* Pods_RunnerTests.framework */, + 331C807B294A618700263BE5 /* RunnerTests.swift */, ); - name = Frameworks; + path = RunnerTests; sourceTree = ""; }; 9740EEB11CF90186004384FC /* Flutter */ = { @@ -114,10 +131,12 @@ children = ( 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, - F243D60F2AE053F700F4A2FC /* RunnerTests */, + F21CDF912B056DB70017C279 /* RunnerUITests */, + F21CDFA12B056EBD0017C279 /* RunnerUITests */, 97C146EF1CF9000F007C117D /* Products */, - CA6EAE272C76E7B047DA5950 /* Pods */, - 35B2938A6849760E824FA060 /* Frameworks */, + 331C8082294A63A400263BE5 /* RunnerTests */, + DBD25E199A731479B0BACE39 /* Pods */, + ACDADE5C43240D66CC8F6502 /* Frameworks */, ); sourceTree = ""; }; @@ -125,7 +144,8 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, - F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + F21CDFA02B056EBD0017C279 /* RunnerUITests.xctest */, ); name = Products; sourceTree = ""; @@ -138,50 +158,86 @@ 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + F2D8AF662B0567630069EAC7 /* DummyPlatformViewFactory.swift */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, - F2FC28702AE9D8C7000AB127 /* DummyPlatformViewFactory.swift */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, ); path = Runner; sourceTree = ""; }; - CA6EAE272C76E7B047DA5950 /* Pods */ = { + ACDADE5C43240D66CC8F6502 /* Frameworks */ = { + isa = PBXGroup; + children = ( + F1F367B2EDD332D4B9230AF1 /* Pods_Runner.framework */, + F7324BF52939888500E1D0F3 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + DBD25E199A731479B0BACE39 /* Pods */ = { isa = PBXGroup; children = ( - 376192EF13530A2F9C8A25D5 /* Pods-Runner.debug.xcconfig */, - 4A2C44B0000D9387232EBD5E /* Pods-Runner.release.xcconfig */, - F1A4A93ACD9364FD0E8CBA05 /* Pods-Runner.profile.xcconfig */, - 94846F4A339FFD56E489B450 /* Pods-RunnerTests.debug.xcconfig */, - 4769A4AD1A261E5AE3FA9C74 /* Pods-RunnerTests.release.xcconfig */, - 97B88D0C8025FFF0F8934763 /* Pods-RunnerTests.profile.xcconfig */, + 2DD5F6BD11575A75FA2A0EBC /* Pods-Runner.debug.xcconfig */, + CDA7125E540D71A7A056DCE6 /* Pods-Runner.release.xcconfig */, + 0572F01CACAE4D575F1A1128 /* Pods-Runner.profile.xcconfig */, + 37A897E52BBF8D001E20DCBE /* Pods-RunnerTests.debug.xcconfig */, + 4231BCCD2D6A3407E2AA20F2 /* Pods-RunnerTests.release.xcconfig */, + B65B5543E4E11276FC0745D9 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; }; - F243D60F2AE053F700F4A2FC /* RunnerTests */ = { + F21CDF912B056DB70017C279 /* RunnerUITests */ = { isa = PBXGroup; children = ( - F243D6102AE053F700F4A2FC /* RunnerTests.swift */, + F21CDF922B056DB70017C279 /* RunnerUITests.swift */, ); - path = RunnerTests; + path = RunnerUITests; + sourceTree = ""; + }; + F21CDFA12B056EBD0017C279 /* RunnerUITests */ = { + isa = PBXGroup; + children = ( + F21CDFA22B056EBD0017C279 /* RunnerUITests.swift */, + ); + path = RunnerUITests; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + DB9D75B7E0C58FFA3FAAD55B /* [CP] Check Pods Manifest.lock */, + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + 92C054B3F5E4DE78794EA034 /* Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 8B2A84257A702FEC944D003C /* [CP] Check Pods Manifest.lock */, + C53E3297221374298B80F1DF /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - D0BD470468C51C1D1BDBC59A /* [CP] Embed Pods Frameworks */, + EBA0739E77CF3B079516C7F7 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -192,23 +248,22 @@ productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; }; - F243D60D2AE053F700F4A2FC /* RunnerTests */ = { + F21CDF9F2B056EBD0017C279 /* RunnerUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildConfigurationList = F21CDFA82B056EBD0017C279 /* Build configuration list for PBXNativeTarget "RunnerUITests" */; buildPhases = ( - 776BD2B16B1623B47EE8F214 /* [CP] Check Pods Manifest.lock */, - F243D60A2AE053F700F4A2FC /* Sources */, - F243D60B2AE053F700F4A2FC /* Frameworks */, - F243D60C2AE053F700F4A2FC /* Resources */, + F21CDF9C2B056EBD0017C279 /* Sources */, + F21CDF9D2B056EBD0017C279 /* Frameworks */, + F21CDF9E2B056EBD0017C279 /* Resources */, ); buildRules = ( ); dependencies = ( - F243D6152AE053F700F4A2FC /* PBXTargetDependency */, + F21CDFA72B056EBD0017C279 /* PBXTargetDependency */, ); - name = RunnerTests; + name = RunnerUITests; productName = RunnerUITests; - productReference = F243D60E2AE053F700F4A2FC /* RunnerTests.xctest */; + productReference = F21CDFA02B056EBD0017C279 /* RunnerUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ @@ -218,16 +273,20 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastSwiftUpdateCheck = 1410; + LastSwiftUpdateCheck = 1500; LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; }; - F243D60D2AE053F700F4A2FC = { - CreatedOnToolsVersion = 14.1; + F21CDF9F2B056EBD0017C279 = { + CreatedOnToolsVersion = 15.0; TestTargetID = 97C146ED1CF9000F007C117D; }; }; @@ -246,12 +305,20 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, - F243D60D2AE053F700F4A2FC /* RunnerTests */, + 331C8080294A63A400263BE5 /* RunnerTests */, + F21CDF9F2B056EBD0017C279 /* RunnerUITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -263,11 +330,10 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F243D60C2AE053F700F4A2FC /* Resources */ = { + F21CDF9E2B056EBD0017C279 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F2D8AF642B0552FB0069EAC7 /* RunnerTests.xctest in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -290,29 +356,22 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 776BD2B16B1623B47EE8F214 /* [CP] Check Pods Manifest.lock */ = { + 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( ); + name = "Run Script"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - 8B2A84257A702FEC944D003C /* [CP] Check Pods Manifest.lock */ = { + C53E3297221374298B80F1DF /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -334,22 +393,29 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - 9740EEB61CF901F6004384FC /* Run Script */ = { + DB9D75B7E0C58FFA3FAAD55B /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Run Script"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; - D0BD470468C51C1D1BDBC59A /* [CP] Embed Pods Frameworks */ = { + EBA0739E77CF3B079516C7F7 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -369,30 +435,44 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F2FC28712AE9D8C7000AB127 /* DummyPlatformViewFactory.swift in Sources */, + F2D8AF672B0567630069EAC7 /* DummyPlatformViewFactory.swift in Sources */, 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - F243D60A2AE053F700F4A2FC /* Sources */ = { + F21CDF9C2B056EBD0017C279 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + F21CDFA32B056EBD0017C279 /* RunnerUITests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - F243D6152AE053F700F4A2FC /* PBXTargetDependency */ = { + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; + F21CDFA72B056EBD0017C279 /* PBXTargetDependency */ = { isa = PBXTargetDependency; target = 97C146ED1CF9000F007C117D /* Runner */; - targetProxy = F243D6142AE053F700F4A2FC /* PBXContainerItemProxy */; + targetProxy = F21CDFA62B056EBD0017C279 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ @@ -468,20 +548,19 @@ }; 249021D4217E4FDB00AE95B9 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F1A4A93ACD9364FD0E8CBA05 /* Pods-Runner.profile.xcconfig */; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; - DEVELOPMENT_TEAM = S8QB4VV633; + DEVELOPMENT_TEAM = PZ83UV676J; ENABLE_BITCODE = NO; - FLUTTER_BUILD_DIR = build; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample; + PRODUCT_BUNDLE_IDENTIFIER = flutter.dev.pointerInterceptorIosExample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -489,6 +568,56 @@ }; name = Profile; }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 37A897E52BBF8D001E20DCBE /* Pods-RunnerTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = flutter.dev.pointerInterceptorIosExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4231BCCD2D6A3407E2AA20F2 /* Pods-RunnerTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = flutter.dev.pointerInterceptorIosExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = B65B5543E4E11276FC0745D9 /* Pods-RunnerTests.profile.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = flutter.dev.pointerInterceptorIosExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -598,20 +727,19 @@ }; 97C147061CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 376192EF13530A2F9C8A25D5 /* Pods-Runner.debug.xcconfig */; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = PZ83UV676J; ENABLE_BITCODE = NO; - FLUTTER_BUILD_DIR = build; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample; + PRODUCT_BUNDLE_IDENTIFIER = flutter.dev.pointerInterceptorIosExample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -622,20 +750,19 @@ }; 97C147071CF9000F007C117D /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4A2C44B0000D9387232EBD5E /* Pods-Runner.release.xcconfig */; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; DEVELOPMENT_TEAM = PZ83UV676J; ENABLE_BITCODE = NO; - FLUTTER_BUILD_DIR = build; INFOPLIST_FILE = Runner/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = com.example.pointerInterceptorIosExample; + PRODUCT_BUNDLE_IDENTIFIER = flutter.dev.pointerInterceptorIosExample; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; SWIFT_VERSION = 5.0; @@ -643,86 +770,58 @@ }; name = Release; }; - F243D6162AE053F700F4A2FC /* Debug */ = { + F21CDFA92B056EBD0017C279 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 94846F4A339FFD56E489B450 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = S8QB4VV633; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = test.RunnerUITests; + PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Runner; }; name = Debug; }; - F243D6172AE053F700F4A2FC /* Release */ = { + F21CDFAA2B056EBD0017C279 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4769A4AD1A261E5AE3FA9C74 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = S8QB4VV633; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = test.RunnerUITests; + PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Runner; }; name = Release; }; - F243D6182AE053F700F4A2FC /* Profile */ = { + F21CDFAB2B056EBD0017C279 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 97B88D0C8025FFF0F8934763 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = "$(inherited)"; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = S8QB4VV633; - GCC_C_LANGUAGE_STANDARD = gnu11; + ENABLE_USER_SCRIPT_SANDBOXING = YES; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 16.1; + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MARKETING_VERSION = 1.0; - MTL_FAST_MATH = YES; - PRODUCT_BUNDLE_IDENTIFIER = test.RunnerUITests; + PRODUCT_BUNDLE_IDENTIFIER = dev.flutter.plugins.RunnerUITests; PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Runner; }; name = Profile; @@ -730,6 +829,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -750,12 +859,12 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F243D6192AE053F700F4A2FC /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + F21CDFA82B056EBD0017C279 /* Build configuration list for PBXNativeTarget "RunnerUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - F243D6162AE053F700F4A2FC /* Debug */, - F243D6172AE053F700F4A2FC /* Release */, - F243D6182AE053F700F4A2FC /* Profile */, + F21CDFA92B056EBD0017C279 /* Debug */, + F21CDFAA2B056EBD0017C279 /* Release */, + F21CDFAB2B056EBD0017C279 /* Profile */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 3fb5162c6d0..5b9439af886 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -53,9 +53,9 @@ parallelizable = "YES"> diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift index 8b402b02cf3..c641584ccd0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift @@ -2,39 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import Flutter +import UIKit import XCTest -final class RunnerTests: XCTestCase { +@testable import pointer_interceptor_ios - override func setUp() { - continueAfterFailure = false - } +class RunnerTests: XCTestCase { + func testDebugMode() { + let view = PointerInterceptorView(frame: CGRect(x: 0, y: 0, width: 180, height: 48.0), debug: true); - func testPointerInterceptorBlocksGesturesFromFlutter() { - let app = XCUIApplication() - app.launch() - - let fabInitial = app.buttons["Initial"] - if (!(fabInitial.waitForExistence(timeout: 30))){ - print(app.debugDescription); - XCTFail("Could not find Flutter button to click on") - return - } - - fabInitial.tap(); - - let fabAfter = app.buttons["Tapped"] - if (!(fabAfter.waitForExistence(timeout: 30))){ - print(app.debugDescription); - XCTFail("Flutter button did not change on tap") - return - } - - let dummyButton = app.staticTexts["Not Clicked"] - if (!(dummyButton.waitForExistence(timeout: 30))){ - print(app.debugDescription); - XCTFail("Pointer interceptor did not block gesture from hitting platform view") - return - } + let debugView = view.view(); + XCTAssertTrue(debugView.backgroundColor == UIColor(red: 1, green: 0, blue: 0, alpha: 0.5)) } } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift new file mode 100644 index 00000000000..f15f3f83d52 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift @@ -0,0 +1,40 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import XCTest + +final class RunnerUITests: XCTestCase { + + override func setUp() { + continueAfterFailure = false + } + + func testPointerInterceptorBlocksGesturesFromFlutter() { + let app = XCUIApplication() + app.launch() + + let fabInitial = app.buttons["Initial"] + if (!(fabInitial.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Could not find Flutter button to click on") + return + } + + fabInitial.tap(); + + let fabAfter = app.buttons["Tapped"] + if (!(fabAfter.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Flutter button did not change on tap") + return + } + + let dummyButton = app.staticTexts["Not Clicked"] + if (!(dummyButton.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Pointer interceptor did not block gesture from hitting platform view") + return + } + } +} From 1e5c612927cd64d1047b91451f478c472bb585b0 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 15:55:49 -0800 Subject: [PATCH 46/52] pbxproj --- .../example/ios/Runner.xcodeproj/project.pbxproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj index 8eabdb5cf6a..26c357f3507 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner.xcodeproj/project.pbxproj @@ -17,7 +17,7 @@ 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; E168ED82D399C1A9329D0876 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F1F367B2EDD332D4B9230AF1 /* Pods_Runner.framework */; }; F21CDFA32B056EBD0017C279 /* RunnerUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21CDFA22B056EBD0017C279 /* RunnerUITests.swift */; }; - F2D8AF672B0567630069EAC7 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F2D8AF662B0567630069EAC7 /* DummyPlatformViewFactory.swift */; }; + F21CDFAD2B0591E30017C279 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F21CDFAC2B0591E30017C279 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -76,7 +76,7 @@ F21CDF922B056DB70017C279 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; F21CDFA02B056EBD0017C279 /* RunnerUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; F21CDFA22B056EBD0017C279 /* RunnerUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerUITests.swift; sourceTree = ""; }; - F2D8AF662B0567630069EAC7 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = DummyPlatformViewFactory.swift; path = ../../../../../../../../Desktop/example/ios/Runner/DummyPlatformViewFactory.swift; sourceTree = ""; }; + F21CDFAC2B0591E30017C279 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; F7324BF52939888500E1D0F3 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -153,12 +153,12 @@ 97C146F01CF9000F007C117D /* Runner */ = { isa = PBXGroup; children = ( + F21CDFAC2B0591E30017C279 /* DummyPlatformViewFactory.swift */, 97C146FA1CF9000F007C117D /* Main.storyboard */, 97C146FD1CF9000F007C117D /* Assets.xcassets */, 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, 97C147021CF9000F007C117D /* Info.plist */, 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, - F2D8AF662B0567630069EAC7 /* DummyPlatformViewFactory.swift */, 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, @@ -447,7 +447,7 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F2D8AF672B0567630069EAC7 /* DummyPlatformViewFactory.swift in Sources */, + F21CDFAD2B0591E30017C279 /* DummyPlatformViewFactory.swift in Sources */, 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, ); From d8a7fd20d11b05e5157d1e7b057a8b7605a37125 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 16:09:22 -0800 Subject: [PATCH 47/52] add placeholder integration tests --- .../integration_test/pointer_interceptor_test.dart | 12 ++++++++++++ .../example/test_driver/integration_test.dart | 7 +++++++ 2 files changed, 19 insertions(+) create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart create mode 100644 packages/pointer_interceptor/pointer_interceptor_ios/example/test_driver/integration_test.dart diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart new file mode 100644 index 00000000000..8a8745e5fb9 --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart @@ -0,0 +1,12 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + testWidgets('placeholder test', (WidgetTester tester) async {}); +} \ No newline at end of file diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/test_driver/integration_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/test_driver/integration_test.dart new file mode 100644 index 00000000000..f26b6a310cf --- /dev/null +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/test_driver/integration_test.dart @@ -0,0 +1,7 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:integration_test/integration_test_driver.dart'; + +Future main() async => integrationDriver(); From 39c04395f44a6108955ad5b804ef3ec66c9ebb66 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Wed, 15 Nov 2023 16:18:49 -0800 Subject: [PATCH 48/52] formatting --- .../example/integration_test/pointer_interceptor_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart index 8a8745e5fb9..2b82b4bda5e 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart @@ -9,4 +9,4 @@ void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); testWidgets('placeholder test', (WidgetTester tester) async {}); -} \ No newline at end of file +} From 0d099f42743c64963ad79ac938a30262b30902a6 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Thu, 16 Nov 2023 10:49:16 -0800 Subject: [PATCH 49/52] update README --- .../pointer_interceptor/pointer_interceptor/README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/README.md b/packages/pointer_interceptor/pointer_interceptor/README.md index 5fa98a464b2..e3cce028a5e 100644 --- a/packages/pointer_interceptor/pointer_interceptor/README.md +++ b/packages/pointer_interceptor/pointer_interceptor/README.md @@ -4,23 +4,22 @@ |-------------|---------|-----| | **Support** | iOS 11+ | Any | -`PointerInterceptor` is a widget that prevents mouse events (in web) from being captured by an underlying [`HtmlElementView`](https://api.flutter.dev/flutter/widgets/HtmlElementView-class.html). +`PointerInterceptor` is a widget that prevents mouse events from being captured by an underlying [`HtmlElementView`](https://api.flutter.dev/flutter/widgets/HtmlElementView-class.html) in web, or an underlying [`PlatformView`](https://api.flutter.dev/flutter/widgets/PlatformViewLink-class.html) on iOS. ## What is the problem? -When overlaying Flutter widgets on top of `HtmlElementView` widgets that respond to mouse gestures (handle clicks, for example), the clicks will be consumed by the `HtmlElementView`, and not relayed to Flutter. +When overlaying Flutter widgets on top of `HtmlElementView`/`PlatformView` widgets that respond to mouse gestures (handle clicks, for example), the clicks will be consumed by the `HtmlElementView`/`PlatformView`, and not relayed to Flutter. -The result is that Flutter widget's `onTap` (and other) handlers won't fire as expected, but they'll affect the underlying webview. +The result is that Flutter widget's `onTap` (and other) handlers won't fire as expected, but they'll affect the underlying native platform view. |The problem...| |:-:| |![Depiction of problematic areas](https://raw.githubusercontent.com/flutter/packages/main/packages/pointer_interceptor/doc/img/affected-areas.png)| |_In the dashed areas, mouse events won't work as expected. The `HtmlElementView` will consume them before Flutter sees them._| - ## How does this work? -`PointerInterceptor` creates a platform view consisting of an empty HTML element. The element has the size of its `child` widget, and is inserted in the layer tree _behind_ its child in paint order. +In web, `PointerInterceptor` creates a platform view consisting of an empty HTML element, while on iOS it creates an empty `CGRect` instead. The element has the size of its `child` widget, and is inserted in the layer tree _behind_ its child in paint order. This empty platform view doesn't do anything with mouse events, other than preventing them from reaching other platform views underneath it. From e8f3445cc13bce377c9cce2f5a666de93f5a7174 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Thu, 16 Nov 2023 14:12:50 -0800 Subject: [PATCH 50/52] PR comments --- .../pointer_interceptor/CHANGELOG.md | 5 +- .../pointer_interceptor/README.md | 2 +- .../pointer_interceptor/example/ios/Podfile | 3 - .../ios/Runner.xcodeproj/project.pbxproj | 161 ------------------ .../example/ios/RunnerTests/RunnerTests.swift | 16 -- .../lib/platforms/native_widget_ios.dart | 3 +- .../pointer_interceptor_ios/CHANGELOG.md | 2 +- .../example/ios/RunnerTests/RunnerTests.swift | 7 + .../ios/RunnerUITests/RunnerUITests.swift | 16 +- .../CHANGELOG.md | 2 +- .../lib/src/default_pointer_interceptor.dart | 1 - .../pointer_interceptor_web/CHANGELOG.md | 2 +- 12 files changed, 26 insertions(+), 194 deletions(-) delete mode 100644 packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift diff --git a/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md index 74eac4fbafd..a74334b3462 100644 --- a/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor/CHANGELOG.md @@ -1,5 +1,6 @@ -## 0.9.4 -* Adds iOS implementation +## 0.10.0 + +* Adds iOS implementation. ## 0.9.3+7 diff --git a/packages/pointer_interceptor/pointer_interceptor/README.md b/packages/pointer_interceptor/pointer_interceptor/README.md index e3cce028a5e..29139dac074 100644 --- a/packages/pointer_interceptor/pointer_interceptor/README.md +++ b/packages/pointer_interceptor/pointer_interceptor/README.md @@ -19,7 +19,7 @@ The result is that Flutter widget's `onTap` (and other) handlers won't fire as e ## How does this work? -In web, `PointerInterceptor` creates a platform view consisting of an empty HTML element, while on iOS it creates an empty `CGRect` instead. The element has the size of its `child` widget, and is inserted in the layer tree _behind_ its child in paint order. +In web, `PointerInterceptor` creates a platform view consisting of an empty HTML element, while on iOS it creates an empty `UIView` instead. The element has the size of its `child` widget, and is inserted in the layer tree _behind_ its child in paint order. This empty platform view doesn't do anything with mouse events, other than preventing them from reaching other platform views underneath it. diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile b/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile index fdcc671eb34..88359b225fa 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Podfile @@ -32,9 +32,6 @@ target 'Runner' do use_modular_headers! flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end end post_install do |installer| diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj index 90b87f2d640..9451023aa59 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj @@ -8,27 +8,15 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; AD9B762ED7D3DC6CEA4CD966 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */; }; - F00A561614F2B3E7FE823F46 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */; }; F25BFF892B037A720088B2C7 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */; }; /* End PBXBuildFile section */ -/* Begin PBXContainerItemProxy section */ - 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 97C146E61CF9000F007C117D /* Project object */; - proxyType = 1; - remoteGlobalIDString = 97C146ED1CF9000F007C117D; - remoteInfo = Runner; - }; -/* End PBXContainerItemProxy section */ - /* Begin PBXCopyFilesBuildPhase section */ 9705A1C41CF9048500538489 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; @@ -46,8 +34,6 @@ 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; - 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -70,14 +56,6 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 481F635FF99F21DB6CE5074C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - F00A561614F2B3E7FE823F46 /* Pods_RunnerTests.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -102,14 +80,6 @@ path = Pods; sourceTree = ""; }; - 331C8082294A63A400263BE5 /* RunnerTests */ = { - isa = PBXGroup; - children = ( - 331C807B294A618700263BE5 /* RunnerTests.swift */, - ); - path = RunnerTests; - sourceTree = ""; - }; 90A39E330862534F1534C253 /* Frameworks */ = { isa = PBXGroup; children = ( @@ -136,7 +106,6 @@ 9740EEB11CF90186004384FC /* Flutter */, 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, - 331C8082294A63A400263BE5 /* RunnerTests */, 1C9A5A1A7487CB72068132AF /* Pods */, 90A39E330862534F1534C253 /* Frameworks */, ); @@ -146,7 +115,6 @@ isa = PBXGroup; children = ( 97C146EE1CF9000F007C117D /* Runner.app */, - 331C8081294A63A400263BE5 /* RunnerTests.xctest */, ); name = Products; sourceTree = ""; @@ -170,25 +138,6 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - 331C8080294A63A400263BE5 /* RunnerTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; - buildPhases = ( - DD58C5E96F70DE04A6B53D7D /* [CP] Check Pods Manifest.lock */, - 331C807D294A63A400263BE5 /* Sources */, - 331C807F294A63A400263BE5 /* Resources */, - 481F635FF99F21DB6CE5074C /* Frameworks */, - ); - buildRules = ( - ); - dependencies = ( - 331C8086294A63A400263BE5 /* PBXTargetDependency */, - ); - name = RunnerTests; - productName = RunnerTests; - productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; 97C146ED1CF9000F007C117D /* Runner */ = { isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; @@ -221,10 +170,6 @@ LastUpgradeCheck = 1430; ORGANIZATIONNAME = ""; TargetAttributes = { - 331C8080294A63A400263BE5 = { - CreatedOnToolsVersion = 14.0; - TestTargetID = 97C146ED1CF9000F007C117D; - }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; LastSwiftMigration = 1100; @@ -245,19 +190,11 @@ projectRoot = ""; targets = ( 97C146ED1CF9000F007C117D /* Runner */, - 331C8080294A63A400263BE5 /* RunnerTests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 331C807F294A63A400263BE5 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 97C146EC1CF9000F007C117D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -325,28 +262,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - DD58C5E96F70DE04A6B53D7D /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; EE2C046C51CFC8758C997EC1 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -367,14 +282,6 @@ /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 331C807D294A63A400263BE5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 97C146EA1CF9000F007C117D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -387,14 +294,6 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXTargetDependency section */ - 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = 97C146ED1CF9000F007C117D /* Runner */; - targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - /* Begin PBXVariantGroup section */ 97C146FA1CF9000F007C117D /* Main.storyboard */ = { isa = PBXVariantGroup; @@ -487,56 +386,6 @@ }; name = Profile; }; - 331C8088294A63A400263BE5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F3F99F51903866D0EBFE326B /* Pods-RunnerTests.debug.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Debug; - }; - 331C8089294A63A400263BE5 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FC4D75C4D199CFA3ED85C270 /* Pods-RunnerTests.release.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Release; - }; - 331C808A294A63A400263BE5 /* Profile */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = BE50CEFF6761C66C94F2234E /* Pods-RunnerTests.profile.xcconfig */; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - GENERATE_INFOPLIST_FILE = YES; - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.example.example.RunnerTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_VERSION = 5.0; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; - }; - name = Profile; - }; 97C147031CF9000F007C117D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -692,16 +541,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 331C8088294A63A400263BE5 /* Debug */, - 331C8089294A63A400263BE5 /* Release */, - 331C808A294A63A400263BE5 /* Profile */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift deleted file mode 100644 index f4dc3f41a54..00000000000 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/RunnerTests/RunnerTests.swift +++ /dev/null @@ -1,16 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -import Flutter -import UIKit -import XCTest - -class RunnerTests: XCTestCase { - - func testExample() { - // If you add code to the Runner application, consider adding tests here. - // See https://developer.apple.com/documentation/xctest for more information about using XCTest. - } - -} diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart index ebfe1a12c7c..33ca0791072 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart @@ -10,7 +10,8 @@ class NativeWidget extends StatelessWidget { /// Constructor const NativeWidget({super.key, required this.onClick}); - /// A function to run when the element is clicked + /// Placeholder param to allow web example to work - + /// onClick functionality for iOS is in the PlatformView final VoidCallback onClick; @override diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md index 50be02009c8..4033d9196e3 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_ios/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.9.0 +## 0.10.0 * Initial release. diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift index c641584ccd0..4b3d460c975 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift @@ -9,6 +9,13 @@ import XCTest @testable import pointer_interceptor_ios class RunnerTests: XCTestCase { + func testNonDebugMode() { + let view = PointerInterceptorView(frame: CGRect(x: 0, y: 0, width: 180, height: 48.0), debug: true); + + let debugView = view.view(); + XCTAssertTrue(debugView.backgroundColor == UIColor.clear) + } + func testDebugMode() { let view = PointerInterceptorView(frame: CGRect(x: 0, y: 0, width: 180, height: 48.0), debug: true); diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift index f15f3f83d52..3fb1578d9e7 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerUITests/RunnerUITests.swift @@ -30,11 +30,15 @@ final class RunnerUITests: XCTestCase { return } - let dummyButton = app.staticTexts["Not Clicked"] - if (!(dummyButton.waitForExistence(timeout: 30))){ - print(app.debugDescription); - XCTFail("Pointer interceptor did not block gesture from hitting platform view") - return - } + let exp = expectation(description: "Check platform view not clicked after 3 seconds") + let result = XCTWaiter.wait(for: [exp], timeout: 3.0) + if result == XCTWaiter.Result.timedOut { + let dummyButton = app.staticTexts["Not Clicked"] + if (!(dummyButton.waitForExistence(timeout: 30))){ + print(app.debugDescription); + XCTFail("Pointer interceptor did not block gesture from hitting platform view") + return + } + } } } diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md index 8e8a5212d58..f4c3d3e1bc4 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/CHANGELOG.md @@ -1,3 +1,3 @@ -## 0.9.0 +## 0.10.0 * Initial release from migration to federated architecture. diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart index 957b3c9196b..0c935e6ab1f 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/lib/src/default_pointer_interceptor.dart @@ -13,7 +13,6 @@ class DefaultPointerInterceptor extends PointerInterceptorPlatform { @override Widget buildWidget({ required Widget child, - bool intercepting = true, bool debug = false, Key? key, }) { diff --git a/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md index 50be02009c8..4033d9196e3 100644 --- a/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md @@ -1,4 +1,4 @@ -## 0.9.0 +## 0.10.0 * Initial release. From ba3fd60b3563ad1272c00b3b8b7b9b770a914d00 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Thu, 16 Nov 2023 14:48:56 -0800 Subject: [PATCH 51/52] fix test --- .../example/ios/RunnerTests/RunnerTests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift index 4b3d460c975..04da94504dd 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/RunnerTests/RunnerTests.swift @@ -10,7 +10,7 @@ import XCTest class RunnerTests: XCTestCase { func testNonDebugMode() { - let view = PointerInterceptorView(frame: CGRect(x: 0, y: 0, width: 180, height: 48.0), debug: true); + let view = PointerInterceptorView(frame: CGRect(x: 0, y: 0, width: 180, height: 48.0), debug: false); let debugView = view.view(); XCTAssertTrue(debugView.backgroundColor == UIColor.clear) From a4df6346452bb62e442101c15c0763668dac1975 Mon Sep 17 00:00:00 2001 From: Louise Hsu Date: Mon, 27 Nov 2023 23:36:29 -0800 Subject: [PATCH 52/52] some pr comments --- .../example/integration_test/widget_test.dart | 11 +-- .../ios/Runner.xcodeproj/project.pbxproj | 82 +++++++++---------- .../pointer_interceptor/example/lib/main.dart | 2 +- .../lib/platforms/native_widget_ios.dart | 2 +- .../pointer_interceptor_test.dart | 3 + .../ios/Flutter/AppFrameworkInfo.plist | 2 +- .../ios/Runner/DummyPlatformViewFactory.swift | 2 +- .../pointer_interceptor_ios/pubspec.yaml | 2 +- .../pubspec.yaml | 2 +- .../pointer_interceptor_web/CHANGELOG.md | 2 +- .../example/lib/main.dart | 2 +- 11 files changed, 52 insertions(+), 60 deletions(-) diff --git a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart index 28fd1a31662..4d35073287d 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/integration_test/widget_test.dart @@ -9,11 +9,8 @@ import 'package:integration_test/integration_test.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); - - testWidgets('Tell the user where to find the real tests', - (WidgetTester tester) async { - print('---'); - print('Please find platform tests in their respective packages.'); - print('---'); - }); + // TODO(louisehsu): given the difficulty of making the same integration tests + // work for both web and ios implementations, please find tests in their respective + // platform implementation packages. + testWidgets('placeholder test', (WidgetTester tester) async {}); } diff --git a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj index 9451023aa59..c0b3e74c2e1 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/pointer_interceptor/pointer_interceptor/example/ios/Runner.xcodeproj/project.pbxproj @@ -13,8 +13,8 @@ 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - AD9B762ED7D3DC6CEA4CD966 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */; }; F25BFF892B037A720088B2C7 /* DummyPlatformViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */; }; + F7B3FF2A19BF60DCE2927CCE /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = ABC6D95C6CA2BCA05B3C28FD /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXCopyFilesBuildPhase section */ @@ -31,15 +31,14 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 095E300DCC1C42BD0A014AAC /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; - 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 53AC91685EB02A84FAE15CFA /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 91777E2C65BCDDBD842AAB48 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -47,12 +46,9 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - BE50CEFF6761C66C94F2234E /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; - D5636FB8626068E5672ACD85 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - E06D75F07A10E45570A0BF84 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + ABC6D95C6CA2BCA05B3C28FD /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EBBA6242570F249EF7490E9D /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; F25BFF882B037A6C0088B2C7 /* DummyPlatformViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DummyPlatformViewFactory.swift; sourceTree = ""; }; - F3F99F51903866D0EBFE326B /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - FC4D75C4D199CFA3ED85C270 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -60,7 +56,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - AD9B762ED7D3DC6CEA4CD966 /* Pods_Runner.framework in Frameworks */, + F7B3FF2A19BF60DCE2927CCE /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -70,25 +66,13 @@ 1C9A5A1A7487CB72068132AF /* Pods */ = { isa = PBXGroup; children = ( - E06D75F07A10E45570A0BF84 /* Pods-Runner.debug.xcconfig */, - D5636FB8626068E5672ACD85 /* Pods-Runner.release.xcconfig */, - 91777E2C65BCDDBD842AAB48 /* Pods-Runner.profile.xcconfig */, - F3F99F51903866D0EBFE326B /* Pods-RunnerTests.debug.xcconfig */, - FC4D75C4D199CFA3ED85C270 /* Pods-RunnerTests.release.xcconfig */, - BE50CEFF6761C66C94F2234E /* Pods-RunnerTests.profile.xcconfig */, + EBBA6242570F249EF7490E9D /* Pods-Runner.debug.xcconfig */, + 095E300DCC1C42BD0A014AAC /* Pods-Runner.release.xcconfig */, + 53AC91685EB02A84FAE15CFA /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; }; - 90A39E330862534F1534C253 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 786ABA10A1A10CF682060B37 /* Pods_Runner.framework */, - 1E493FA18D4BBEBB1AB7790A /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( @@ -107,7 +91,7 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 1C9A5A1A7487CB72068132AF /* Pods */, - 90A39E330862534F1534C253 /* Frameworks */, + FC5EF6E923E6BF75C542BDC7 /* Frameworks */, ); sourceTree = ""; }; @@ -135,6 +119,14 @@ path = Runner; sourceTree = ""; }; + FC5EF6E923E6BF75C542BDC7 /* Frameworks */ = { + isa = PBXGroup; + children = ( + ABC6D95C6CA2BCA05B3C28FD /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -142,14 +134,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 325438A1F419DCAC9CBB9DCA /* [CP] Check Pods Manifest.lock */, + 4B32A7E5952A8E40E6FE6E6C /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - EE2C046C51CFC8758C997EC1 /* [CP] Embed Pods Frameworks */, + D271A2AAEBA84769C4A17920 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -209,43 +201,43 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 325438A1F419DCAC9CBB9DCA /* [CP] Check Pods Manifest.lock */ = { + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputFileListPaths = ( - ); inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", ); + name = "Thin Binary"; outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + 4B32A7E5952A8E40E6FE6E6C /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + "${PODS_PODFILE_DIR_PATH}/Podfile.lock", + "${PODS_ROOT}/Manifest.lock", + ); + name = "[CP] Check Pods Manifest.lock"; + outputFileListPaths = ( ); - name = "Thin Binary"; outputPaths = ( + "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; + showEnvVarsInLog = 0; }; 9740EEB61CF901F6004384FC /* Run Script */ = { isa = PBXShellScriptBuildPhase; @@ -262,7 +254,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - EE2C046C51CFC8758C997EC1 /* [CP] Embed Pods Frameworks */ = { + D271A2AAEBA84769C4A17920 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart index cb9c7498ab9..f62f5ad5ea0 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/main.dart @@ -83,7 +83,7 @@ class _MyHomePageState extends State { NativeWidget( key: const ValueKey('background-widget'), onClick: () { - _clickedOn('html-element'); + _clickedOn('native-element'); }, ), Column( diff --git a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart index 33ca0791072..1ce481d4544 100644 --- a/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart +++ b/packages/pointer_interceptor/pointer_interceptor/example/lib/platforms/native_widget_ios.dart @@ -5,7 +5,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -/// A widget representing an underlying platform view +/// A widget representing an underlying platform view. class NativeWidget extends StatelessWidget { /// Constructor const NativeWidget({super.key, required this.onClick}); diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart index 2b82b4bda5e..3bb4e68e871 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/integration_test/pointer_interceptor_test.dart @@ -8,5 +8,8 @@ import 'package:integration_test/integration_test.dart'; void main() { IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + // Integration tests for iOS requires a native platform view and thus + // can not be tested in Dart. These tests can instead + // be found in the XCUITests testWidgets('placeholder test', (WidgetTester tester) async {}); } diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist index 9625e105df3..f219bde3ddf 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Flutter/AppFrameworkInfo.plist @@ -7,7 +7,7 @@ CFBundleExecutable App CFBundleIdentifier - io.flutter.flutter.app + dev.flutter.flutter.app CFBundleInfoDictionaryVersion 6.0 CFBundleName diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift index 3abfea0becd..71b1bff63b1 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift +++ b/packages/pointer_interceptor/pointer_interceptor_ios/example/ios/Runner/DummyPlatformViewFactory.swift @@ -34,7 +34,7 @@ public class DummyPlatformViewFactory: NSObject, FlutterPlatformViewFactory { } /** - * A native view that will remove it's tag if clicked. + * A native view that will remove its tag if clicked. */ public class CustomView: UIView { diff --git a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml index 7843cd90ace..4d1b3759150 100644 --- a/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_ios/pubspec.yaml @@ -2,7 +2,7 @@ name: pointer_interceptor_ios description: iOS implementation of the pointer_interceptor plugin. repository: https://github.com/flutter/packages/tree/main/packages/pointer_interceptor/pointer_interceptor_ios issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen++label%3A%22p%3A+pointer_interceptor%22 -version: 2.3.1 +version: 0.10.0 publish_to: none environment: diff --git a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml index 2aaae916c19..5a20f7ecdaa 100644 --- a/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml +++ b/packages/pointer_interceptor/pointer_interceptor_platform_interface/pubspec.yaml @@ -1,6 +1,6 @@ name: pointer_interceptor_platform_interface description: "A common platform interface for the pointer_interceptor plugin." -version: 0.0.1 +version: 1.0.0 publish_to: none environment: diff --git a/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md b/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md index 4033d9196e3..ff399443424 100644 --- a/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md +++ b/packages/pointer_interceptor/pointer_interceptor_web/CHANGELOG.md @@ -1,4 +1,4 @@ ## 0.10.0 -* Initial release. +* Moved web implementation to own package. diff --git a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart index 49fbc13a95b..12718cfe2e0 100644 --- a/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart +++ b/packages/pointer_interceptor/pointer_interceptor_web/example/lib/main.dart @@ -56,7 +56,7 @@ class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return const MaterialApp( - title: 'Stopping Clicks with some DOM', + title: 'Stopping Clicks with PointerInterceptor', home: MyHomePage(), ); }