tree 70800816544def1b917dbb2e727047b302db9ebf
parent 19bc12e2a67d7771410addd7e3dccc1727d0ff07
author Maurits van Beusekom <maurits@baseflow.com> 1632206424 +0200
committer GitHub <noreply@github.com> 1632206424 +0200
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJhSX5YCRBK7hj4Ov3rIwAAckAIAGLfBvQMT17+oWWF4AHdx45B
 mBXSsfw9Z9G/ExlqcSr4Xtrif9a1oTmbF6/HJWkNopGVQDRWmKYX8JrDYga6G0dd
 3u+s1h2reln2QFBLqYmJ9cmg2pe9hrXsuOTDaydUuQANvY2g8g6MnGZSj3fUcedM
 2owayUfCbC+tE3YCi0xFpU/VR3KTn2pw7jXdlIezzOVP4mDug1qaLe/IP8IL+RB7
 R550jLdP3QpogXcVjja31f2t6aoOOyJgS/7xwh62hmL0VEbzNWYxOh2My5FXIj7o
 igBZOZppuqy9XMBFZPymBi2waQhTZEmJeuLv64WoTXKrdX3TrsAS+nee1i3HnYQ=
 =kvf3
 -----END PGP SIGNATURE-----
 

[webview_flutter] Extract WKWebView implementation into a separate package (#4345)

* Setup webview_flutter_wkwebview package.

Creates a new `webview_flutter_wkwebview` directory and adds
the following meta-data files:
- `AUTHORS`: copied from the `webview_flutter` package and added my name;
- `CHANGELOG.md`: new file adding description for release 0.0.1;
- `LICENSE`: copied from the `webview_flutter` package;
- `README.md`: new file adding the standard platform implementation
  description;
- `pubspec.yaml`: new file adding package meta-data for the
  `webview_flutter_wkwebview` package.

* Direct copy of "iOS" folder.

A one to one copy of the `webview_flutter/ios` folder to
`webview_flutter_wkwebview/` using the following command:
```
cp -R ./webview_flutter/ios ./webview_flutter_wkwebview/
```

* Rename .podspec file to match package name.

For the Cocaopod package to be registered correctly the .podspec file
name needs to match the name of the Flutter package.

* Direct copy of WKWebView specific .dart files.

Copied the WKWebView specific .dart files over from the
`./webview_flutter` package.

* Modify .dart code to work with new platform_interface.

Make sure the `CupertinoWebView` widget extends the `WebViewPlatform`
class from the `webview_flutter_platform_interface` package correctly by
accepting an instance of the `JavascriptChannelRegistry` class.

* Direct copy of the `webview_flutter/example` app.

This commit makes a direct copy of the `webview_flutter/example` app to
the  `webview_flutter_wkwebview` package. After the copy the `example/android`
folder is removed as it doesn't serve a purpose in the WKWebView specific
package. Commands run where:
```
cp -R ./webview_flutter/example ./webview_flutter_wkwebview/
rm -rf ./webview_flutter_wkwebview/example/ios
```

* Update example to WKWebView specific implementation.

This commit updates the example App so it directly implements the
WKWebView specific implementation of the webview_flutter_platform_interface.

* Update integration tests.

Updated the existing integration tests (copied from webview_flutter
package) so they work correctly with the implementation of the
webview_flutter_wkwebview package.

Co-authored-by: BeMacized <bodhimulders@bemacized.net>

* Fix iOS UI tests.

This commit resolves failing UI tests and ensures the `Publishable` task
is green.

* Point to existing documentation URL

Update the documentation URL in the
`ios/webview_flutter_wkwebview.podspec` file to point to a valid
location. The `https://pub.dev/packages/webview_flutter_wkwebview`
package doesn't exists until this PR is published. However the `pod lib
lint` step in CI is failing if the URL doesn't exist yet.

* Split helper classes from main example widget.

Move the `WebView` and related `WebViewController` classes from the
main.dart into a separate web_view.dart file.

* Updated version numbers as suggested in review.

Updated the version of the plugin to the version of webview_flutter
package (2.0.13).

Also updated the Dart and Flutter versions to respectively 2.14.0 and
2.5.0.

Co-authored-by: BeMacized <bodhimulders@bemacized.net>