diff --git a/.github/workflows/flutter.yml b/.github/workflows/flutter.yml index 122470106..c4425bd95 100644 --- a/.github/workflows/flutter.yml +++ b/.github/workflows/flutter.yml @@ -24,6 +24,12 @@ jobs: with: cache: true - run: dart format --set-exit-if-changed --output none . + - name: Run chromedriver + run: | + set -e + + chromedriver --port=4444 & + echo CHROMEDRIVER_PORT_4444=yes >$GITHUB_ENV - run: ./tool/test.sh --coverage - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 if: failure() @@ -31,6 +37,9 @@ jobs: name: failures path: '**/failures/' - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # v4.0.1 + with: + fail_ci_if_error: true + token: ${{ secrets.CODECOV_TOKEN }} integration_test_android: strategy: diff --git a/.github/workflows/flutter_beta.yml b/.github/workflows/flutter_beta.yml index c110d5c50..1b96c6448 100644 --- a/.github/workflows/flutter_beta.yml +++ b/.github/workflows/flutter_beta.yml @@ -22,10 +22,4 @@ jobs: uses: subosito/flutter-action@2783a3f08e1baf891508463f8c6653c258246225 # v2.12.0 with: channel: beta - - run: ./tool/test.sh --coverage - - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 - if: failure() - with: - name: failures - path: demo_app/test/failures/ - - uses: codecov/codecov-action@e0b68c6749509c5f83f984dd99a76a1c1a231044 # v4.0.1 + - run: ./tool/test.sh diff --git a/demo_app/.metadata b/demo_app/.metadata index a8ee7922b..002bea4e6 100644 --- a/demo_app/.metadata +++ b/demo_app/.metadata @@ -4,7 +4,7 @@ # This file should be version controlled and should not be manually edited. version: - revision: "db7ef5bf9f59442b0e200a90587e8fa5e0c6336a" + revision: "bae5e49bc2a867403c43b2aae2de8f8c33b037e4" channel: "stable" project_type: app @@ -13,20 +13,20 @@ project_type: app migration: platforms: - platform: root - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: android - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: ios - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: macos - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 - platform: web - create_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a - base_revision: db7ef5bf9f59442b0e200a90587e8fa5e0c6336a + create_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 + base_revision: bae5e49bc2a867403c43b2aae2de8f8c33b037e4 # User provided section diff --git a/demo_app/android/app/build.gradle b/demo_app/android/app/build.gradle index 14c421272..2dd32677d 100644 --- a/demo_app/android/app/build.gradle +++ b/demo_app/android/app/build.gradle @@ -24,7 +24,7 @@ if (flutterVersionName == null) { android { namespace "dev.fwfh.demo_app" - compileSdkVersion 33 + compileSdk flutter.compileSdkVersion ndkVersion flutter.ndkVersion compileOptions { @@ -42,6 +42,9 @@ android { defaultConfig { applicationId "dev.fwfh.demo_app" + + // TODO: remove hard-coded value when `flutter.minSdkVersion` >= 21 + // open $(dirname $(dirname $(which flutter)))/packages/flutter_tools minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion diff --git a/demo_app/android/app/src/main/AndroidManifest.xml b/demo_app/android/app/src/main/AndroidManifest.xml index 5be168c71..027bb8afb 100644 --- a/demo_app/android/app/src/main/AndroidManifest.xml +++ b/demo_app/android/app/src/main/AndroidManifest.xml @@ -32,4 +32,15 @@ android:name="flutterEmbedding" android:value="2" /> + + + + + + + diff --git a/demo_app/android/app/src/main/kotlin/dev/fwfh/demo_app/MainActivity.kt b/demo_app/android/app/src/main/kotlin/dev/fwfh/demo_app/MainActivity.kt index c0cece7ea..912f03ac9 100644 --- a/demo_app/android/app/src/main/kotlin/dev/fwfh/demo_app/MainActivity.kt +++ b/demo_app/android/app/src/main/kotlin/dev/fwfh/demo_app/MainActivity.kt @@ -2,5 +2,4 @@ package dev.fwfh.demo_app import io.flutter.embedding.android.FlutterActivity -class MainActivity: FlutterActivity() { -} +class MainActivity: FlutterActivity() diff --git a/demo_app/android/build.gradle b/demo_app/android/build.gradle index 802640d04..bc157bd1a 100644 --- a/demo_app/android/build.gradle +++ b/demo_app/android/build.gradle @@ -1,15 +1,3 @@ -buildscript { - ext.kotlin_version = '1.9.22' - repositories { - google() - mavenCentral() - } - - dependencies { - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} - allprojects { repositories { google() diff --git a/demo_app/android/settings.gradle b/demo_app/android/settings.gradle index 08a150436..f5d466228 100644 --- a/demo_app/android/settings.gradle +++ b/demo_app/android/settings.gradle @@ -15,15 +15,12 @@ pluginManagement { mavenCentral() gradlePluginPortal() } - - plugins { - id "dev.flutter.flutter-gradle-plugin" version "1.0.0" apply false - } } plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" id "com.android.application" version "8.2.2" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false } include ":app" diff --git a/demo_app/ios/Flutter/AppFrameworkInfo.plist b/demo_app/ios/Flutter/AppFrameworkInfo.plist index 9625e105d..7c5696400 100644 --- a/demo_app/ios/Flutter/AppFrameworkInfo.plist +++ b/demo_app/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 12.0 diff --git a/demo_app/ios/Podfile b/demo_app/ios/Podfile index 0f7a42877..d97f17e22 100644 --- a/demo_app/ios/Podfile +++ b/demo_app/ios/Podfile @@ -1,4 +1,5 @@ -platform :ios, '11.0' +# Uncomment this line to define a global platform for your project +# platform :ios, '12.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' diff --git a/demo_app/ios/Podfile.lock b/demo_app/ios/Podfile.lock index 87726ab8f..edff828da 100644 --- a/demo_app/ios/Podfile.lock +++ b/demo_app/ios/Podfile.lock @@ -2,9 +2,6 @@ PODS: - audio_session (0.0.1): - Flutter - Flutter (1.0.0) - - FMDB (2.7.5): - - FMDB/standard (= 2.7.5) - - FMDB/standard (2.7.5) - integration_test (0.0.1): - Flutter - just_audio (0.0.1): @@ -16,7 +13,7 @@ PODS: - FlutterMacOS - sqflite (0.0.3): - Flutter - - FMDB (>= 2.7.5) + - FlutterMacOS - url_launcher_ios (0.0.1): - Flutter - video_player_avfoundation (0.0.1): @@ -34,16 +31,12 @@ DEPENDENCIES: - just_audio (from `.symlinks/plugins/just_audio/ios`) - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - - sqflite (from `.symlinks/plugins/sqflite/ios`) + - sqflite (from `.symlinks/plugins/sqflite/darwin`) - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`) -SPEC REPOS: - trunk: - - FMDB - EXTERNAL SOURCES: audio_session: :path: ".symlinks/plugins/audio_session/ios" @@ -58,7 +51,7 @@ EXTERNAL SOURCES: path_provider_foundation: :path: ".symlinks/plugins/path_provider_foundation/darwin" sqflite: - :path: ".symlinks/plugins/sqflite/ios" + :path: ".symlinks/plugins/sqflite/darwin" url_launcher_ios: :path: ".symlinks/plugins/url_launcher_ios/ios" video_player_avfoundation: @@ -70,18 +63,17 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: audio_session: 4f3e461722055d21515cf3261b64c973c062f345 - Flutter: f04841e97a9d0b0a8025694d0796dd46242b2854 - FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 integration_test: 13825b8a9334a850581300559b8839134b124670 just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85 - path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 - sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a - url_launcher_ios: bf5ce03e0e2088bad9cc378ea97fa0ed5b49673b - video_player_avfoundation: e9e6f9cae7d7a6d9b43519b0aab382bca60fcfd1 + path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec + url_launcher_ios: bbd758c6e7f9fd7b5b1d4cde34d2b95fcce5e812 + video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47 - webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a + webview_flutter_wkwebview: be0f0d33777f1bfd0c9fdcb594786704dbf65f36 -PODFILE CHECKSUM: d4b1e61d92195dbae4de5691d6fcd85ff6450632 +PODFILE CHECKSUM: 819463e6a0290f5a72f145ba7cde16e8b6ef0796 COCOAPODS: 1.14.3 diff --git a/demo_app/ios/Runner.xcodeproj/project.pbxproj b/demo_app/ios/Runner.xcodeproj/project.pbxproj index 97e0e93b3..5965a5710 100644 --- a/demo_app/ios/Runner.xcodeproj/project.pbxproj +++ b/demo_app/ios/Runner.xcodeproj/project.pbxproj @@ -7,12 +7,12 @@ objects = { /* Begin PBXBuildFile section */ + 134DF81D300A097245666CFD /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B53D3B531A142FC832E6D8B5 /* Pods_Runner.framework */; }; 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 */; }; - 6D24F54A2CE9B1DBA393DFA0 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EBAC0D89347F9027093CF945 /* Pods_Runner.framework */; }; + 4ECF5D4D0BD8A98DC6A66C32 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3144430AD9FDCB9C0382A7C0 /* Pods_RunnerTests.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 7EA327CE8C487F95331357F6 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 51166573D5E6011694F85C28 /* 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 */; }; @@ -42,20 +42,20 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 018C284B3D03A3546EBE7EFB /* 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 = ""; }; + 027C1CA7F3B323EE90FE9DE8 /* 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 = ""; }; - 16D1A24B31E9FA93BA4E54BE /* 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 = ""; }; + 30DC65025EE83CFC7F7EBFF4 /* 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 = ""; }; + 3144430AD9FDCB9C0382A7C0 /* 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 = ""; }; - 51166573D5E6011694F85C28 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 4FB4766568B3D5056E507CF7 /* 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 = ""; }; - 7DEBED04321B1527297CEDBD /* 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 = ""; }; - 80CF85874E30821CE1E52843 /* 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 = ""; }; - 8D796009B10F3F3D984C7F9D /* 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 = ""; }; - 95A6FFDF87A777A91DBDD448 /* 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 = ""; }; + 7CA783024D41923FC23BA34D /* 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 = ""; }; 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; }; @@ -63,53 +63,30 @@ 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 = ""; }; - D799C89A7898E07DEC789F34 /* 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 = ""; }; - EBAC0D89347F9027093CF945 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AA7EB5F1A947F3FF565B6BD8 /* 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 = ""; }; + B53D3B531A142FC832E6D8B5 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 8D4E44B0696F4F03C037B112 /* Frameworks */ = { + 97C146EB1CF9000F007C117D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7EA327CE8C487F95331357F6 /* Pods_RunnerTests.framework in Frameworks */, + 134DF81D300A097245666CFD /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 97C146EB1CF9000F007C117D /* Frameworks */ = { + DA93D4F1DEC19B1BECADA1F7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 6D24F54A2CE9B1DBA393DFA0 /* Pods_Runner.framework in Frameworks */, + 4ECF5D4D0BD8A98DC6A66C32 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0D7127C3ACC42D8B7A01501D /* Pods */ = { - isa = PBXGroup; - children = ( - 7DEBED04321B1527297CEDBD /* Pods-Runner.debug.xcconfig */, - 95A6FFDF87A777A91DBDD448 /* Pods-Runner.release.xcconfig */, - 16D1A24B31E9FA93BA4E54BE /* Pods-Runner.profile.xcconfig */, - 8D796009B10F3F3D984C7F9D /* Pods-RunnerTests.debug.xcconfig */, - 80CF85874E30821CE1E52843 /* Pods-RunnerTests.release.xcconfig */, - D799C89A7898E07DEC789F34 /* Pods-RunnerTests.profile.xcconfig */, - ); - name = Pods; - path = Pods; - sourceTree = ""; - }; - 147B6A51DAD75F333272638B /* Frameworks */ = { - isa = PBXGroup; - children = ( - EBAC0D89347F9027093CF945 /* Pods_Runner.framework */, - 51166573D5E6011694F85C28 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 331C8082294A63A400263BE5 /* RunnerTests */ = { isa = PBXGroup; children = ( @@ -136,8 +113,8 @@ 97C146F01CF9000F007C117D /* Runner */, 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, - 0D7127C3ACC42D8B7A01501D /* Pods */, - 147B6A51DAD75F333272638B /* Frameworks */, + CEE1F8201386AE99EF8A64D1 /* Pods */, + A3CDCB7BE9033809998E0DEB /* Frameworks */, ); sourceTree = ""; }; @@ -165,6 +142,29 @@ path = Runner; sourceTree = ""; }; + A3CDCB7BE9033809998E0DEB /* Frameworks */ = { + isa = PBXGroup; + children = ( + B53D3B531A142FC832E6D8B5 /* Pods_Runner.framework */, + 3144430AD9FDCB9C0382A7C0 /* Pods_RunnerTests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + CEE1F8201386AE99EF8A64D1 /* Pods */ = { + isa = PBXGroup; + children = ( + 4FB4766568B3D5056E507CF7 /* Pods-Runner.debug.xcconfig */, + AA7EB5F1A947F3FF565B6BD8 /* Pods-Runner.release.xcconfig */, + 30DC65025EE83CFC7F7EBFF4 /* Pods-Runner.profile.xcconfig */, + 018C284B3D03A3546EBE7EFB /* Pods-RunnerTests.debug.xcconfig */, + 7CA783024D41923FC23BA34D /* Pods-RunnerTests.release.xcconfig */, + 027C1CA7F3B323EE90FE9DE8 /* Pods-RunnerTests.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -172,10 +172,10 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 24826AC14ED0E42531BC4EA9 /* [CP] Check Pods Manifest.lock */, + 15F2092A7A7A09BBA5D7D76D /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, - 8D4E44B0696F4F03C037B112 /* Frameworks */, + DA93D4F1DEC19B1BECADA1F7 /* Frameworks */, ); buildRules = ( ); @@ -191,14 +191,14 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - 7511D0A47D24D75B15595D81 /* [CP] Check Pods Manifest.lock */, + 4C3A3C561018A12434135840 /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 700F7C15E26F767CBEB74A81 /* [CP] Embed Pods Frameworks */, + 1CEC6AEF4DE0DE2F8C592FEB /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -216,7 +216,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C8080294A63A400263BE5 = { @@ -270,7 +270,7 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 24826AC14ED0E42531BC4EA9 /* [CP] Check Pods Manifest.lock */ = { + 15F2092A7A7A09BBA5D7D76D /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -292,40 +292,40 @@ 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 */ = { + 1CEC6AEF4DE0DE2F8C592FEB /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); - inputPaths = ( - "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + inputFileListPaths = ( + "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - name = "Thin Binary"; - outputPaths = ( + 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 = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; }; - 700F7C15E26F767CBEB74A81 /* [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"; }; - 7511D0A47D24D75B15595D81 /* [CP] Check Pods Manifest.lock */ = { + 4C3A3C561018A12434135840 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -416,6 +416,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -445,6 +446,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -453,7 +455,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; @@ -485,7 +487,7 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8D796009B10F3F3D984C7F9D /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 018C284B3D03A3546EBE7EFB /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -503,7 +505,7 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 80CF85874E30821CE1E52843 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 7CA783024D41923FC23BA34D /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -519,7 +521,7 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D799C89A7898E07DEC789F34 /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = 027C1CA7F3B323EE90FE9DE8 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -537,6 +539,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -566,6 +569,7 @@ DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -580,7 +584,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -592,6 +596,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; @@ -621,6 +626,7 @@ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -629,7 +635,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 11.0; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; SUPPORTED_PLATFORMS = iphoneos; diff --git a/demo_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/demo_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 87131a09b..8e3ca5dfe 100644 --- a/demo_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/demo_app/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ Introducing Flutter

Google Developers

-

Get started at https://flutter.io today.

+

Get started at https://flutter.dev today.

-

Flutter is Google’s mobile UI framework for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

+

Flutter is Google's mobile UI framework for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.

diff --git a/demo_app/macos/Podfile.lock b/demo_app/macos/Podfile.lock index 82eaf4fb2..7f3d6df3d 100644 --- a/demo_app/macos/Podfile.lock +++ b/demo_app/macos/Podfile.lock @@ -2,9 +2,6 @@ PODS: - audio_session (0.0.1): - FlutterMacOS - FlutterMacOS (1.0.0) - - FMDB (2.7.5): - - FMDB/standard (= 2.7.5) - - FMDB/standard (2.7.5) - just_audio (0.0.1): - FlutterMacOS - package_info_plus (0.0.1): @@ -12,9 +9,9 @@ PODS: - path_provider_foundation (0.0.1): - Flutter - FlutterMacOS - - sqflite (0.0.2): + - sqflite (0.0.3): + - Flutter - FlutterMacOS - - FMDB (>= 2.7.5) - url_launcher_macos (0.0.1): - FlutterMacOS - video_player_avfoundation (0.0.1): @@ -29,15 +26,11 @@ DEPENDENCIES: - just_audio (from `Flutter/ephemeral/.symlinks/plugins/just_audio/macos`) - package_info_plus (from `Flutter/ephemeral/.symlinks/plugins/package_info_plus/macos`) - path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`) - - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`) + - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`) - wakelock_plus (from `Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos`) -SPEC REPOS: - trunk: - - FMDB - EXTERNAL SOURCES: audio_session: :path: Flutter/ephemeral/.symlinks/plugins/audio_session/macos @@ -50,7 +43,7 @@ EXTERNAL SOURCES: path_provider_foundation: :path: Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin sqflite: - :path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos + :path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin url_launcher_macos: :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos video_player_avfoundation: @@ -61,13 +54,12 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: audio_session: dea1f41890dbf1718f04a56f1d6150fd50039b72 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 - FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a just_audio: 9b67ca7b97c61cfc9784ea23cd8cc55eb226d489 package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce - path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943 - sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea + path_provider_foundation: 3784922295ac71e43754bd15e0653ccfd36a147c + sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95 - video_player_avfoundation: e9e6f9cae7d7a6d9b43519b0aab382bca60fcfd1 + video_player_avfoundation: 02011213dab73ae3687df27ce441fbbcc82b5579 wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269 PODFILE CHECKSUM: 236401fc2c932af29a9fcf0e97baeeb2d750d367 diff --git a/demo_app/macos/Runner.xcodeproj/project.pbxproj b/demo_app/macos/Runner.xcodeproj/project.pbxproj index d81ab3839..837b47387 100644 --- a/demo_app/macos/Runner.xcodeproj/project.pbxproj +++ b/demo_app/macos/Runner.xcodeproj/project.pbxproj @@ -27,8 +27,8 @@ 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; }; 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; }; 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; }; - 7F60517F14681FB88CA8285D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5278E5633825673A48D19B43 /* Pods_Runner.framework */; }; - F0BA5FDF4A7AB299CF61AFCF /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1A0C3332915F37692F48F0F7 /* Pods_RunnerTests.framework */; }; + 4AD29B0ADD889BDC533E54BC /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D38B8E46EA9B6145B234C91F /* Pods_RunnerTests.framework */; }; + D4227722E97A67FFD2281E5D /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2361EFBAF42FE70FE1760475 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -62,9 +62,8 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 1A0C3332915F37692F48F0F7 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 1D48FE217AAA6B7853DB58C2 /* 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 = ""; }; - 2DD07C3601BC34B506F6C898 /* 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 = ""; }; + 1D0F5CB573178D113AE65D29 /* 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 = ""; }; + 2361EFBAF42FE70FE1760475 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D5294CF71000263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 331C80D7294CF71000263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = ""; }; @@ -81,13 +80,14 @@ 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = ""; }; 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = ""; }; 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = ""; }; - 3FED3604C1027FF8E8F47A36 /* 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 = ""; }; - 5278E5633825673A48D19B43 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6DB3E8DC72334C067A0023DC /* 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 = ""; }; - 75E003EC51AF3F9424C48EEF /* 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 = ""; }; + 5DA36FEA48E05B8865ED3A74 /* 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 = ""; }; + 6F8746C86E421A96A9128F53 /* 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 = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = ""; }; - A444D0ECA8D74B3318BA8C17 /* 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 = ""; }; + B6F567335FAF3C6DA5B8C90C /* 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 = ""; }; + BA2071868D3CABF9522E4BEB /* 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 = ""; }; + D38B8E46EA9B6145B234C91F /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EA37EC409D07CB2DDD42F212 /* 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 */ @@ -95,7 +95,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F0BA5FDF4A7AB299CF61AFCF /* Pods_RunnerTests.framework in Frameworks */, + 4AD29B0ADD889BDC533E54BC /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -103,7 +103,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7F60517F14681FB88CA8285D /* Pods_Runner.framework in Frameworks */, + D4227722E97A67FFD2281E5D /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -137,7 +137,7 @@ 331C80D6294CF71000263BE5 /* RunnerTests */, 33CC10EE2044A3C60003C045 /* Products */, D73912EC22F37F3D000D13A0 /* Frameworks */, - C1A83EAEED9B0FE7F5A7E0DB /* Pods */, + EB2E1E32FCE03D0EC4DC6BED /* Pods */, ); sourceTree = ""; }; @@ -185,27 +185,27 @@ path = Runner; sourceTree = ""; }; - C1A83EAEED9B0FE7F5A7E0DB /* Pods */ = { + D73912EC22F37F3D000D13A0 /* Frameworks */ = { isa = PBXGroup; children = ( - A444D0ECA8D74B3318BA8C17 /* Pods-Runner.debug.xcconfig */, - 2DD07C3601BC34B506F6C898 /* Pods-Runner.release.xcconfig */, - 3FED3604C1027FF8E8F47A36 /* Pods-Runner.profile.xcconfig */, - 6DB3E8DC72334C067A0023DC /* Pods-RunnerTests.debug.xcconfig */, - 1D48FE217AAA6B7853DB58C2 /* Pods-RunnerTests.release.xcconfig */, - 75E003EC51AF3F9424C48EEF /* Pods-RunnerTests.profile.xcconfig */, + 2361EFBAF42FE70FE1760475 /* Pods_Runner.framework */, + D38B8E46EA9B6145B234C91F /* Pods_RunnerTests.framework */, ); - name = Pods; - path = Pods; + name = Frameworks; sourceTree = ""; }; - D73912EC22F37F3D000D13A0 /* Frameworks */ = { + EB2E1E32FCE03D0EC4DC6BED /* Pods */ = { isa = PBXGroup; children = ( - 5278E5633825673A48D19B43 /* Pods_Runner.framework */, - 1A0C3332915F37692F48F0F7 /* Pods_RunnerTests.framework */, + BA2071868D3CABF9522E4BEB /* Pods-Runner.debug.xcconfig */, + EA37EC409D07CB2DDD42F212 /* Pods-Runner.release.xcconfig */, + 5DA36FEA48E05B8865ED3A74 /* Pods-Runner.profile.xcconfig */, + 1D0F5CB573178D113AE65D29 /* Pods-RunnerTests.debug.xcconfig */, + 6F8746C86E421A96A9128F53 /* Pods-RunnerTests.release.xcconfig */, + B6F567335FAF3C6DA5B8C90C /* Pods-RunnerTests.profile.xcconfig */, ); - name = Frameworks; + name = Pods; + path = Pods; sourceTree = ""; }; /* End PBXGroup section */ @@ -215,7 +215,7 @@ isa = PBXNativeTarget; buildConfigurationList = 331C80DE294CF71000263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - 4BEDA540330E036C4564FA86 /* [CP] Check Pods Manifest.lock */, + 3F7248E32F0BA97A06C05EA2 /* [CP] Check Pods Manifest.lock */, 331C80D1294CF70F00263BE5 /* Sources */, 331C80D2294CF70F00263BE5 /* Frameworks */, 331C80D3294CF70F00263BE5 /* Resources */, @@ -234,13 +234,13 @@ isa = PBXNativeTarget; buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - F7A938853D40701B31C12E84 /* [CP] Check Pods Manifest.lock */, + 2B4E37A043A773F719286135 /* [CP] Check Pods Manifest.lock */, 33CC10E92044A3C60003C045 /* Sources */, 33CC10EA2044A3C60003C045 /* Frameworks */, 33CC10EB2044A3C60003C045 /* Resources */, 33CC110E2044A8840003C045 /* Bundle Framework */, 3399D490228B24CF009A79C7 /* ShellScript */, - DBD513ED9951103B48A00A61 /* [CP] Embed Pods Frameworks */, + 4FDCA18F9277BA16677C8403 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); @@ -258,8 +258,9 @@ 33CC10E52044A3C60003C045 /* Project object */ = { isa = PBXProject; attributes = { + BuildIndependentTargetsInParallel = YES; LastSwiftUpdateCheck = 0920; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C80D4294CF70F00263BE5 = { @@ -322,6 +323,28 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ + 2B4E37A043A773F719286135 /* [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; + }; 3399D490228B24CF009A79C7 /* ShellScript */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -360,7 +383,7 @@ shellPath = /bin/sh; shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire"; }; - 4BEDA540330E036C4564FA86 /* [CP] Check Pods Manifest.lock */ = { + 3F7248E32F0BA97A06C05EA2 /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -382,7 +405,7 @@ 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; }; - DBD513ED9951103B48A00A61 /* [CP] Embed Pods Frameworks */ = { + 4FDCA18F9277BA16677C8403 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -399,28 +422,6 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; showEnvVarsInLog = 0; }; - F7A938853D40701B31C12E84 /* [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 */ @@ -472,7 +473,7 @@ /* Begin XCBuildConfiguration section */ 331C80DB294CF71000263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6DB3E8DC72334C067A0023DC /* Pods-RunnerTests.debug.xcconfig */; + baseConfigurationReference = 1D0F5CB573178D113AE65D29 /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -487,7 +488,7 @@ }; 331C80DC294CF71000263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1D48FE217AAA6B7853DB58C2 /* Pods-RunnerTests.release.xcconfig */; + baseConfigurationReference = 6F8746C86E421A96A9128F53 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -502,7 +503,7 @@ }; 331C80DD294CF71000263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 75E003EC51AF3F9424C48EEF /* Pods-RunnerTests.profile.xcconfig */; + baseConfigurationReference = B6F567335FAF3C6DA5B8C90C /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CURRENT_PROJECT_VERSION = 1; @@ -520,6 +521,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -543,9 +545,11 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; @@ -593,6 +597,7 @@ baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -616,9 +621,11 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_NO_COMMON_BLOCKS = YES; @@ -646,6 +653,7 @@ baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; @@ -669,9 +677,11 @@ CLANG_WARN_SUSPICIOUS_MOVE = YES; CODE_SIGN_IDENTITY = "-"; COPY_PHASE_STRIP = NO; + DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; diff --git a/demo_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/demo_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index d4ade99b6..29acf5bfd 100644 --- a/demo_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/demo_app/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ =3.2.0 <4.0.0" - flutter: ">=3.16.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.16.6" diff --git a/packages/core/lib/src/widgets/html_list_marker.dart b/packages/core/lib/src/widgets/html_list_marker.dart index 9c0f48b5d..ce5de1a8d 100644 --- a/packages/core/lib/src/widgets/html_list_marker.dart +++ b/packages/core/lib/src/widgets/html_list_marker.dart @@ -1,3 +1,5 @@ +// TODO: remove lint ignore when our minimum Flutter version >= 3.19 +// ignore: unnecessary_import import 'dart:ui'; import 'package:flutter/rendering.dart'; diff --git a/packages/fwfh_webview/integration_test/js_interop_test.dart b/packages/fwfh_webview/integration_test/js_interop_test.dart new file mode 100644 index 000000000..a5a9b6fc8 --- /dev/null +++ b/packages/fwfh_webview/integration_test/js_interop_test.dart @@ -0,0 +1,46 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:flutter_widget_from_html_core/flutter_widget_from_html_core.dart'; +import 'package:fwfh_webview/fwfh_webview.dart'; +import 'package:integration_test/integration_test.dart'; +import 'package:web/web.dart' as web; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + testWidgets('IFRAME app', (WidgetTester tester) async { + runApp(const IframeApp()); + await tester.pumpAndSettle(); + + final elements = web.document.getElementsByTagName('iframe'); + expect(elements.length, 1); + + for (var i = 0; i < elements.length; i++) { + final element = elements.item(i); + expect(element, isA()); + + final iframe = element! as web.HTMLIFrameElement; + expect(iframe.src, 'https://www.youtube.com/embed/jNQXAC9IVRw'); + } + }); +} + +class IframeApp extends StatelessWidget { + const IframeApp({super.key}); + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + body: Center( + child: HtmlWidget( + '', + factoryBuilder: () => MyWidgetFactory(), + ), + ), + ), + ); + } +} + +class MyWidgetFactory extends WidgetFactory with WebViewFactory {} diff --git a/packages/fwfh_webview/lib/src/external/dart_ui.dart b/packages/fwfh_webview/lib/src/external/dart_ui.dart deleted file mode 100644 index bd1f8984c..000000000 --- a/packages/fwfh_webview/lib/src/external/dart_ui.dart +++ /dev/null @@ -1 +0,0 @@ -export 'dart_ui_fallback.dart' if (dart.library.html) 'dart_ui_html.dart'; diff --git a/packages/fwfh_webview/lib/src/external/dart_ui_fallback.dart b/packages/fwfh_webview/lib/src/external/dart_ui_fallback.dart deleted file mode 100644 index 930b9e817..000000000 --- a/packages/fwfh_webview/lib/src/external/dart_ui_fallback.dart +++ /dev/null @@ -1,9 +0,0 @@ -// ignore: camel_case_types, avoid_classes_with_only_static_members -class platformViewRegistry { - /// TODO: remove this when it's no longer needed - /// See https://github.com/flutter/flutter/issues/55000 - static void registerViewFactory( - String viewTypeId, - dynamic Function(int viewId) viewFactory, - ) {} -} diff --git a/packages/fwfh_webview/lib/src/external/dart_ui_html.dart b/packages/fwfh_webview/lib/src/external/dart_ui_html.dart deleted file mode 100644 index 69c06ee29..000000000 --- a/packages/fwfh_webview/lib/src/external/dart_ui_html.dart +++ /dev/null @@ -1 +0,0 @@ -export 'dart:ui'; diff --git a/packages/fwfh_webview/lib/src/web_view/html.dart b/packages/fwfh_webview/lib/src/web_view/js_interop.dart similarity index 70% rename from packages/fwfh_webview/lib/src/web_view/html.dart rename to packages/fwfh_webview/lib/src/web_view/js_interop.dart index c0a504f6e..19fcb8a0c 100644 --- a/packages/fwfh_webview/lib/src/web_view/html.dart +++ b/packages/fwfh_webview/lib/src/web_view/js_interop.dart @@ -1,20 +1,18 @@ -// ignore: avoid_web_libraries_in_flutter -import 'dart:html' show IFrameElement; +import 'dart:ui_web'; import 'package:flutter/widgets.dart'; +import 'package:web/web.dart'; -import '../external/dart_ui.dart' as ui; import 'web_view.dart'; class WebViewState extends State { - final _iframeElement = IFrameElement(); + final _iframeElement = document.createElement('iframe') as HTMLIFrameElement; late Widget _iframeWidget; @override void initState() { super.initState(); - // ignore: unsafe_html _iframeElement.src = widget.url; _iframeElement.style.border = 'none'; @@ -24,8 +22,7 @@ class WebViewState extends State { final viewType = '$this#$hashCode'; - ui.platformViewRegistry - .registerViewFactory(viewType, (_) => _iframeElement); + platformViewRegistry.registerViewFactory(viewType, (_) => _iframeElement); // TODO: switch to `webview_flutter_web` when it's endorsed _iframeWidget = HtmlElementView(viewType: viewType); diff --git a/packages/fwfh_webview/lib/src/web_view/web_view.dart b/packages/fwfh_webview/lib/src/web_view/web_view.dart index 5a7368140..de7b585dd 100644 --- a/packages/fwfh_webview/lib/src/web_view/web_view.dart +++ b/packages/fwfh_webview/lib/src/web_view/web_view.dart @@ -2,7 +2,7 @@ import 'package:flutter/widgets.dart'; import 'fallback.dart' if (dart.library.io) 'io.dart' - if (dart.library.html) 'html.dart'; + if (dart.library.js_interop) 'js_interop.dart'; /// An embedded web view. class WebView extends StatefulWidget { diff --git a/packages/fwfh_webview/lib/src/web_view_factory.dart b/packages/fwfh_webview/lib/src/web_view_factory.dart index da4f30200..d128a0bac 100644 --- a/packages/fwfh_webview/lib/src/web_view_factory.dart +++ b/packages/fwfh_webview/lib/src/web_view_factory.dart @@ -139,7 +139,6 @@ mixin WebViewFactory on WidgetFactory { }, ), ); - break; } return super.parse(meta); } diff --git a/packages/fwfh_webview/pubspec.yaml b/packages/fwfh_webview/pubspec.yaml index df6f59277..436c844a8 100644 --- a/packages/fwfh_webview/pubspec.yaml +++ b/packages/fwfh_webview/pubspec.yaml @@ -4,14 +4,15 @@ description: WidgetFactory extension to render IFRAME with the official WebView homepage: https://github.com/daohoangson/flutter_widget_from_html environment: - flutter: ">=3.7.0" - sdk: ">=2.19.0 <4.0.0" + flutter: ">=3.16.0" + sdk: ">=3.2.0 <4.0.0" dependencies: flutter: sdk: flutter flutter_widget_from_html_core: ">=0.10.5 <0.15.0" logging: ^1.0.0 + web: ">=0.3.0 <0.6.0" webview_flutter: ^4.0.1 webview_flutter_android: ^3.10.0 webview_flutter_wkwebview: ^3.6.0 @@ -23,6 +24,8 @@ dependency_overrides: dev_dependencies: flutter_test: sdk: flutter + integration_test: + sdk: flutter lint: any measurer: ^2.1.1 plugin_platform_interface: any diff --git a/packages/fwfh_webview/test/mock_webview_platform.dart b/packages/fwfh_webview/test/mock_webview_platform.dart index b7494db8f..a9821888c 100644 --- a/packages/fwfh_webview/test/mock_webview_platform.dart +++ b/packages/fwfh_webview/test/mock_webview_platform.dart @@ -15,9 +15,7 @@ void mockWebViewPlatform() { const codec = StandardMessageCodec(); final emptyList = codec.encodeMessage([]); final messenger = - // TODO: remove lint ignore when our minimum Flutter version >= 3.10 - // ignore: unnecessary_non_null_assertion - TestDefaultBinaryMessengerBinding.instance!.defaultBinaryMessenger; + TestDefaultBinaryMessengerBinding.instance.defaultBinaryMessenger; messenger.setMockMessageHandler( 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', (_) => Future.value(emptyList), diff --git a/packages/fwfh_webview/test_driver/integration_test.dart b/packages/fwfh_webview/test_driver/integration_test.dart new file mode 100644 index 000000000..b38629cca --- /dev/null +++ b/packages/fwfh_webview/test_driver/integration_test.dart @@ -0,0 +1,3 @@ +import 'package:integration_test/integration_test_driver.dart'; + +Future main() => integrationDriver(); diff --git a/tool/integration.sh b/tool/integration.sh index d158bf48f..f85b420cf 100755 --- a/tool/integration.sh +++ b/tool/integration.sh @@ -4,7 +4,7 @@ set -euo pipefail cd "$(dirname $(dirname ${BASH_SOURCE[0]}))"/demo_app -if [ ! -z "$JAVA_HOME_17_X64" ]; then +if [ ! -z ${JAVA_HOME_17_X64+x} ]; then # switch to Java 17 in GitHub Actions export JAVA_HOME=$JAVA_HOME_17_X64 echo "JAVA_HOME=$JAVA_HOME" diff --git a/tool/test.sh b/tool/test.sh index 6c16c9384..6f55fe2a6 100755 --- a/tool/test.sh +++ b/tool/test.sh @@ -53,6 +53,17 @@ if [ -z ${UPDATE_GOLDENS+x} ]; then echo 'packages/fwfh_webview OK' ) + if [ ! -z ${CHROMEDRIVER_PORT_4444+x} ]; then + ( + cd ./packages/fwfh_webview && + flutter drive \ + -d web-server \ + --driver=test_driver/integration_test.dart \ + --target=integration_test/js_interop_test.dart && + echo 'packages/fwfh_webview JavaScript interop OK' + ) + fi + ( cd ./packages/enhanced && flutter analyze && diff --git a/tool/update-demo_app-files.sh b/tool/update-demo_app-files.sh index 9228db253..6c2da2f68 100755 --- a/tool/update-demo_app-files.sh +++ b/tool/update-demo_app-files.sh @@ -4,6 +4,9 @@ set -euo pipefail cd "$(dirname $(dirname ${BASH_SOURCE[0]}))"/demo_app +rm -rf android ios macos web +rm -f pubspec.lock + flutter create --platforms android,ios,macos,web --project-name demo_app --org dev.fwfh . flutter build ios --no-codesign flutter build macos