mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Automatically generated registrants for web plugins (#39628)
* WIP on web plugin registry * WIP on registering plugins * WIP on web plugin registration * Only generate `package:flutter_web_plugins` imports if plugins are defined * Add parsing test * Add documentation * Fix analyzer warnings * add license headers * Add tests for package:flutter_web_plugins * Run `flutter update-packages --force-upgrade` * Fix analyzer errors * Fix analyzer error in test * Update copyright and remove flutter SDK constraints * Enable tests since engine has rolled * add flutter_web_plugins tests to bots * Create an empty .packages file for WebFs test
This commit is contained in:
parent
0b93c96f52
commit
d33cf11556
@ -22,7 +22,7 @@ dependencies:
|
||||
collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
json_rpc_2: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -86,4 +86,4 @@ flutter:
|
||||
- packages/flutter_gallery_assets/people/square/ali.png
|
||||
- packages/flutter_gallery_assets/places/india_chettinad_silk_maker.png
|
||||
|
||||
# PUBSPEC CHECKSUM: 4c13
|
||||
# PUBSPEC CHECKSUM: 20df
|
||||
|
@ -22,7 +22,7 @@ dependencies:
|
||||
collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
json_rpc_2: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -83,4 +83,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 4c13
|
||||
# PUBSPEC CHECKSUM: 20df
|
||||
|
@ -17,7 +17,7 @@ dependencies:
|
||||
googleapis: 0.54.0
|
||||
googleapis_auth: 0.2.10
|
||||
|
||||
_discoveryapis_commons: 0.1.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
_discoveryapis_commons: 0.1.8+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
analyzer: 0.36.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -26,7 +26,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +67,4 @@ dev_dependencies:
|
||||
mockito: 4.1.0
|
||||
test_api: 0.2.5
|
||||
|
||||
# PUBSPEC CHECKSUM: 0eb3
|
||||
# PUBSPEC CHECKSUM: f181
|
||||
|
@ -474,6 +474,7 @@ Future<void> _runWebTests() async {
|
||||
// 'test/widgets/',
|
||||
// 'test/material/',
|
||||
]);
|
||||
await _runFlutterWebTest(path.join(flutterRoot, 'packages', 'flutter_web_plugins'), tests: <String>['test']);
|
||||
}
|
||||
|
||||
Future<void> _runCoverage() async {
|
||||
|
@ -9,7 +9,7 @@ environment:
|
||||
|
||||
dependencies:
|
||||
args: 1.5.2
|
||||
file: 5.0.8+1
|
||||
file: 5.0.10
|
||||
image: 2.1.4
|
||||
meta: 1.1.7
|
||||
path: 1.6.4
|
||||
@ -73,4 +73,4 @@ dev_dependencies:
|
||||
watcher: 0.9.7+12 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
yaml: 2.1.16 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: c82c
|
||||
# PUBSPEC CHECKSUM: 9cf8
|
||||
|
@ -17,7 +17,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -63,4 +63,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 22cd
|
||||
# PUBSPEC CHECKSUM: 4e9a
|
||||
|
@ -51,7 +51,7 @@ dev_dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -133,4 +133,4 @@ flutter:
|
||||
# For details regarding fonts from package dependencies,
|
||||
# see https://flutter.dev/custom-fonts/#from-packages
|
||||
|
||||
# PUBSPEC CHECKSUM: 19b8
|
||||
# PUBSPEC CHECKSUM: 0a85
|
||||
|
@ -51,7 +51,7 @@ dev_dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -133,4 +133,4 @@ flutter:
|
||||
# For details regarding fonts from package dependencies,
|
||||
# see https://flutter.dev/custom-fonts/#from-packages
|
||||
|
||||
# PUBSPEC CHECKSUM: 19b8
|
||||
# PUBSPEC CHECKSUM: 0a85
|
||||
|
@ -19,7 +19,7 @@ dependencies:
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
json_rpc_2: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -80,4 +80,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 45da
|
||||
# PUBSPEC CHECKSUM: 7fa7
|
||||
|
@ -21,7 +21,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +67,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 22cd
|
||||
# PUBSPEC CHECKSUM: 4e9a
|
||||
|
@ -16,7 +16,7 @@ dependencies:
|
||||
collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
json_rpc_2: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -74,4 +74,4 @@ builders:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 22cd
|
||||
# PUBSPEC CHECKSUM: 4e9a
|
||||
|
@ -21,7 +21,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +67,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 22cd
|
||||
# PUBSPEC CHECKSUM: 4e9a
|
||||
|
@ -21,7 +21,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +67,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 22cd
|
||||
# PUBSPEC CHECKSUM: 4e9a
|
||||
|
@ -21,7 +21,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -67,4 +67,4 @@ dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 22cd
|
||||
# PUBSPEC CHECKSUM: 4e9a
|
||||
|
@ -23,7 +23,7 @@ dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -77,4 +77,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 2b14
|
||||
# PUBSPEC CHECKSUM: 65e0
|
||||
|
@ -19,7 +19,7 @@ dependencies:
|
||||
collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
http_parser: 3.1.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pedantic: 1.8.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
platform: 2.2.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -37,4 +37,4 @@ dev_dependencies:
|
||||
stack_trace: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stream_channel: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 8220
|
||||
# PUBSPEC CHECKSUM: 9cec
|
||||
|
@ -31,7 +31,7 @@ dev_dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -77,4 +77,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 2b14
|
||||
# PUBSPEC CHECKSUM: 65e0
|
||||
|
@ -10,7 +10,7 @@ dependencies:
|
||||
collection: 1.14.11
|
||||
device_info: 0.4.0+2
|
||||
intl: 0.15.8
|
||||
connectivity: 0.4.3+7
|
||||
connectivity: 0.4.4
|
||||
string_scanner: 1.0.5
|
||||
url_launcher: 5.1.2
|
||||
cupertino_icons: 0.1.2
|
||||
@ -46,7 +46,7 @@ dev_dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -258,4 +258,4 @@ flutter:
|
||||
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Regular.ttf
|
||||
- asset: packages/flutter_gallery_assets/fonts/merriweather/Merriweather-Light.ttf
|
||||
|
||||
# PUBSPEC CHECKSUM: 2aad
|
||||
# PUBSPEC CHECKSUM: 3f19
|
||||
|
@ -29,7 +29,7 @@ dev_dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +76,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 2b14
|
||||
# PUBSPEC CHECKSUM: 65e0
|
||||
|
@ -29,7 +29,7 @@ dev_dependencies:
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
csslib: 0.16.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
front_end: 0.1.19 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
glob: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
html: 0.14.0+2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -76,4 +76,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 2b14
|
||||
# PUBSPEC CHECKSUM: 65e0
|
||||
|
@ -50,7 +50,7 @@ dev_dependencies:
|
||||
|
||||
archive: 2.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
image: 2.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
json_rpc_2: 2.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
matcher: 0.12.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -65,4 +65,4 @@ dev_dependencies:
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
||||
# PUBSPEC CHECKSUM: ded4
|
||||
# PUBSPEC CHECKSUM: 27a1
|
||||
|
@ -31,7 +31,7 @@ dev_dependencies:
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
image: 2.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
matcher: 0.12.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -49,4 +49,4 @@ dev_dependencies:
|
||||
test_api: 0.2.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 8060
|
||||
# PUBSPEC CHECKSUM: 012d
|
||||
|
@ -8,7 +8,7 @@ environment:
|
||||
sdk: ">=2.0.0-dev.68.0 <3.0.0"
|
||||
|
||||
dependencies:
|
||||
file: 5.0.8+1
|
||||
file: 5.0.10
|
||||
json_rpc_2: 2.1.0
|
||||
meta: 1.1.7
|
||||
path: 1.6.4
|
||||
@ -51,4 +51,4 @@ dev_dependencies:
|
||||
mockito: 4.1.0
|
||||
quiver: 2.0.5
|
||||
|
||||
# PUBSPEC CHECKSUM: 70d0
|
||||
# PUBSPEC CHECKSUM: 8a9d
|
||||
|
@ -8,7 +8,7 @@ dependencies:
|
||||
# To update these, use "flutter update-packages --force-upgrade".
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
file: 5.0.8+1
|
||||
file: 5.0.10
|
||||
meta: 1.1.7
|
||||
platform: 2.2.1
|
||||
process: 3.0.11
|
||||
@ -43,4 +43,4 @@ dependencies:
|
||||
dev_dependencies:
|
||||
mockito: 4.1.0
|
||||
|
||||
# PUBSPEC CHECKSUM: 8060
|
||||
# PUBSPEC CHECKSUM: 012d
|
||||
|
@ -6,7 +6,7 @@ environment:
|
||||
|
||||
dependencies:
|
||||
# To update these, use "flutter update-packages --force-upgrade".
|
||||
file: 5.0.8+1
|
||||
file: 5.0.10
|
||||
platform: 2.2.1
|
||||
process: 3.0.11
|
||||
|
||||
@ -18,4 +18,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: 4cbd
|
||||
# PUBSPEC CHECKSUM: 2f8a
|
||||
|
@ -50,8 +50,8 @@ dependencies:
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
dev_dependencies:
|
||||
file: 5.0.8+1
|
||||
file: 5.0.10
|
||||
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 9be7
|
||||
# PUBSPEC CHECKSUM: b5b4
|
||||
|
@ -86,7 +86,10 @@ final List<core.BuilderApplication> builders = <core.BuilderApplication>[
|
||||
core.apply(
|
||||
'flutter_tools:shell',
|
||||
<BuilderFactory>[
|
||||
(BuilderOptions options) => const FlutterWebShellBuilder(),
|
||||
(BuilderOptions options) {
|
||||
final bool hasPlugins = options.config['hasPlugins'] == true;
|
||||
return FlutterWebShellBuilder(hasPlugins: hasPlugins);
|
||||
}
|
||||
],
|
||||
core.toRoot(),
|
||||
hideOutput: true,
|
||||
@ -342,7 +345,9 @@ void setStackTraceMapper(StackTraceMapper mapper) {
|
||||
|
||||
/// A shell builder which generates the web specific entrypoint.
|
||||
class FlutterWebShellBuilder implements Builder {
|
||||
const FlutterWebShellBuilder();
|
||||
const FlutterWebShellBuilder({this.hasPlugins = false});
|
||||
|
||||
final bool hasPlugins;
|
||||
|
||||
@override
|
||||
Future<void> build(BuildStep buildStep) async {
|
||||
@ -352,16 +357,33 @@ class FlutterWebShellBuilder implements Builder {
|
||||
return;
|
||||
}
|
||||
final AssetId outputId = buildStep.inputId.changeExtension('_web_entrypoint.dart');
|
||||
await buildStep.writeAsString(outputId, '''
|
||||
if (hasPlugins) {
|
||||
await buildStep.writeAsString(outputId, '''
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
|
||||
|
||||
import 'generated_plugin_registrant.dart';
|
||||
import "${path.url.basename(buildStep.inputId.path)}" as entrypoint;
|
||||
|
||||
Future<void> main() async {
|
||||
registerPlugins(webPluginRegistry);
|
||||
await ui.webOnlyInitializePlatform();
|
||||
entrypoint.main();
|
||||
}
|
||||
''');
|
||||
} else {
|
||||
await buildStep.writeAsString(outputId, '''
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
import "${path.url.basename(buildStep.inputId.path)}" as entrypoint;
|
||||
|
||||
Future<void> main() async {
|
||||
await ui.webOnlyInitializePlatform();
|
||||
entrypoint.main();
|
||||
}
|
||||
|
||||
''');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -57,6 +57,7 @@ class BuildRunnerWebCompilationProxy extends WebCompilationProxy {
|
||||
_packageUriMapper = PackageUriMapper(
|
||||
path.absolute('lib/main.dart'), PackageMap.globalPackagesPath, null, null);
|
||||
_packageGraph = core.PackageGraph.forPath(projectDirectory.path);
|
||||
|
||||
final core.BuildEnvironment buildEnvironment = core.OverrideableEnvironment(
|
||||
core.IOEnvironment(_packageGraph), onLog: (LogRecord record) {
|
||||
if (record.level == Level.SEVERE || record.level == Level.SHOUT) {
|
||||
|
@ -31,6 +31,8 @@ import '../bundle.dart';
|
||||
import '../cache.dart';
|
||||
import '../dart/package_map.dart';
|
||||
import '../globals.dart';
|
||||
import '../platform_plugins.dart';
|
||||
import '../plugins.dart';
|
||||
import '../project.dart';
|
||||
import '../web/chrome.dart';
|
||||
|
||||
@ -38,7 +40,7 @@ import '../web/chrome.dart';
|
||||
const String kBuildTargetName = 'web';
|
||||
|
||||
/// A factory for creating a [Dwds] instance.
|
||||
DwdsFactory get dwdsFactpory => context.get<DwdsFactory>() ?? Dwds.start;
|
||||
DwdsFactory get dwdsFactory => context.get<DwdsFactory>() ?? Dwds.start;
|
||||
|
||||
/// The [BuildDaemonCreator] instance.
|
||||
BuildDaemonCreator get buildDaemonCreator => context.get<BuildDaemonCreator>() ?? const BuildDaemonCreator();
|
||||
@ -49,10 +51,10 @@ WebFsFactory get webFsFactory => context.get<WebFsFactory>() ?? WebFs.start;
|
||||
/// A factory for creating an [HttpMultiServer] instance.
|
||||
HttpMultiServerFactory get httpMultiServerFactory => context.get<HttpMultiServerFactory>() ?? HttpMultiServer.bind;
|
||||
|
||||
/// A function with the same signature as [HttpMultiServier.bind].
|
||||
/// A function with the same signature as [HttpMultiServer.bind].
|
||||
typedef HttpMultiServerFactory = Future<HttpServer> Function(dynamic address, int port);
|
||||
|
||||
/// A function with the same signatire as [Dwds.start].
|
||||
/// A function with the same signature as [Dwds.start].
|
||||
typedef DwdsFactory = Future<Dwds> Function({
|
||||
@required int applicationPort,
|
||||
@required int assetServerPort,
|
||||
@ -144,9 +146,11 @@ class WebFs {
|
||||
if (!flutterProject.dartTool.existsSync()) {
|
||||
flutterProject.dartTool.createSync(recursive: true);
|
||||
}
|
||||
|
||||
final bool hasWebPlugins = findPlugins(flutterProject).any((Plugin p) => p.platforms.containsKey(WebPlugin.kConfigKey));
|
||||
// Start the build daemon and run an initial build.
|
||||
final BuildDaemonClient client = await buildDaemonCreator
|
||||
.startBuildDaemon(fs.currentDirectory.path, release: buildInfo.isRelease, profile: buildInfo.isProfile);
|
||||
.startBuildDaemon(fs.currentDirectory.path, release: buildInfo.isRelease, profile: buildInfo.isProfile, hasPlugins: hasWebPlugins);
|
||||
client.startBuild();
|
||||
// Only provide relevant build results
|
||||
final Stream<BuildResult> filteredBuildResults = client.buildResults
|
||||
@ -163,7 +167,7 @@ class WebFs {
|
||||
|
||||
// Initialize the dwds server.
|
||||
final int port = await os.findFreePort();
|
||||
final Dwds dwds = await dwdsFactpory(
|
||||
final Dwds dwds = await dwdsFactory(
|
||||
hostname: _kHostName,
|
||||
applicationPort: port,
|
||||
applicationTarget: kBuildTargetName,
|
||||
@ -307,12 +311,13 @@ class BuildDaemonCreator {
|
||||
static const String _ignoredLine3 = 'have your dependencies specified fully in your pubspec.yaml';
|
||||
|
||||
/// Start a build daemon and register the web targets.
|
||||
Future<BuildDaemonClient> startBuildDaemon(String workingDirectory, {bool release = false, bool profile = false }) async {
|
||||
Future<BuildDaemonClient> startBuildDaemon(String workingDirectory, {bool release = false, bool profile = false, bool hasPlugins = false}) async {
|
||||
try {
|
||||
final BuildDaemonClient client = await _connectClient(
|
||||
workingDirectory,
|
||||
release: release,
|
||||
profile: profile,
|
||||
hasPlugins: hasPlugins,
|
||||
);
|
||||
_registerBuildTargets(client);
|
||||
return client;
|
||||
@ -339,7 +344,7 @@ class BuildDaemonCreator {
|
||||
|
||||
Future<BuildDaemonClient> _connectClient(
|
||||
String workingDirectory,
|
||||
{ bool release, bool profile }
|
||||
{ bool release, bool profile, bool hasPlugins }
|
||||
) {
|
||||
final String flutterToolsPackages = fs.path.join(Cache.flutterRoot, 'packages', 'flutter_tools', '.packages');
|
||||
final String buildScript = fs.path.join(Cache.flutterRoot, 'packages', 'flutter_tools', 'lib', 'src', 'build_runner', 'build_script.dart');
|
||||
@ -360,6 +365,7 @@ class BuildDaemonCreator {
|
||||
'--define', 'flutter_tools:entrypoint=release=$release',
|
||||
'--define', 'flutter_tools:entrypoint=profile=$profile',
|
||||
'--define', 'flutter_tools:shell=flutterWebSdk=$flutterWebSdk',
|
||||
'--define', 'flutter_tools:shell=hasPlugins=$hasPlugins',
|
||||
],
|
||||
logHandler: (ServerLog serverLog) {
|
||||
switch (serverLog.level) {
|
||||
@ -392,4 +398,4 @@ class BuildDaemonCreator {
|
||||
final String portFilePath = fs.path.join(daemonWorkspace(workingDirectory.path), '.asset_server_port');
|
||||
return int.tryParse(fs.file(portFilePath).readAsStringSync());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -139,3 +139,54 @@ class MacOSPlugin extends PluginPlatform {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
/// Contains the parameters to template a web plugin.
|
||||
///
|
||||
/// The required fields include: [name] of the plugin, the [pluginClass] that will
|
||||
/// be the entry point to the plugin's implementation, and the [fileName]
|
||||
/// containing the code.
|
||||
class WebPlugin extends PluginPlatform {
|
||||
const WebPlugin({
|
||||
@required this.name,
|
||||
@required this.pluginClass,
|
||||
@required this.fileName,
|
||||
});
|
||||
|
||||
factory WebPlugin.fromYaml(String name, YamlMap yaml) {
|
||||
assert(validate(yaml));
|
||||
return WebPlugin(
|
||||
name: name,
|
||||
pluginClass: yaml['pluginClass'],
|
||||
fileName: yaml['fileName'],
|
||||
);
|
||||
}
|
||||
|
||||
static bool validate(YamlMap yaml) {
|
||||
if (yaml == null) {
|
||||
return false;
|
||||
}
|
||||
return yaml['pluginClass'] is String && yaml['fileName'] is String;
|
||||
}
|
||||
|
||||
static const String kConfigKey = 'web';
|
||||
|
||||
/// The name of the plugin.
|
||||
final String name;
|
||||
|
||||
/// The class containing the plugin implementation details.
|
||||
///
|
||||
/// This class should have a static `registerWith` method defined.
|
||||
final String pluginClass;
|
||||
|
||||
/// The name of the file containing the class implementation above.
|
||||
final String fileName;
|
||||
|
||||
@override
|
||||
Map<String, dynamic> toMap() {
|
||||
return <String, dynamic>{
|
||||
'name': name,
|
||||
'class': pluginClass,
|
||||
'file': fileName,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -89,6 +89,11 @@ class Plugin {
|
||||
MacOSPlugin.fromYaml(name, platformsYaml[MacOSPlugin.kConfigKey]);
|
||||
}
|
||||
|
||||
if (platformsYaml[WebPlugin.kConfigKey] != null) {
|
||||
platforms[WebPlugin.kConfigKey] =
|
||||
WebPlugin.fromYaml(name, platformsYaml[WebPlugin.kConfigKey]);
|
||||
}
|
||||
|
||||
return Plugin(
|
||||
name: name,
|
||||
path: path,
|
||||
@ -384,6 +389,25 @@ Depends on all your plugins, and provides a function to register them.
|
||||
end
|
||||
''';
|
||||
|
||||
const String _dartPluginRegistryTemplate = '''//
|
||||
// Generated file. Do not edit.
|
||||
//
|
||||
import 'dart:ui';
|
||||
|
||||
{{#plugins}}
|
||||
import 'package:{{name}}/{{file}}';
|
||||
{{/plugins}}
|
||||
|
||||
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
|
||||
|
||||
void registerPlugins(PluginRegistry registry) {
|
||||
{{#plugins}}
|
||||
{{class}}.registerWith(registry.registrarFor({{class}}));
|
||||
{{/plugins}}
|
||||
registry.registerMessageHandler();
|
||||
}
|
||||
''';
|
||||
|
||||
Future<void> _writeIOSPluginRegistrant(FlutterProject project, List<Plugin> plugins) async {
|
||||
final List<Map<String, dynamic>> iosPlugins = _extractPlatformMaps(plugins, IOSPlugin.kConfigKey);
|
||||
final Map<String, dynamic> context = <String, dynamic>{
|
||||
@ -439,6 +463,29 @@ Future<void> _writeMacOSPluginRegistrant(FlutterProject project, List<Plugin> pl
|
||||
);
|
||||
}
|
||||
|
||||
Future<void> _writeWebPluginRegistrant(FlutterProject project, List<Plugin> plugins) async {
|
||||
final List<Map<String, dynamic>> webPlugins = _extractPlatformMaps(plugins, WebPlugin.kConfigKey);
|
||||
final Map<String, dynamic> context = <String, dynamic>{
|
||||
'plugins': webPlugins,
|
||||
};
|
||||
final String registryDirectory = project.web.libDirectory.path;
|
||||
final String filePath = fs.path.join(registryDirectory, 'generated_plugin_registrant.dart');
|
||||
if (webPlugins.isEmpty) {
|
||||
final File file = fs.file(filePath);
|
||||
file.createSync(recursive: true);
|
||||
file.writeAsStringSync('''
|
||||
// Generated file. Intentionally left empty due to no web plugins registered.
|
||||
void registerPlugins(ignored) {}
|
||||
''');
|
||||
} else {
|
||||
_renderTemplateToFile(
|
||||
_dartPluginRegistryTemplate,
|
||||
context,
|
||||
filePath,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/// Rewrites the `.flutter-plugins` file of [project] based on the plugin
|
||||
/// dependencies declared in `pubspec.yaml`.
|
||||
///
|
||||
@ -490,6 +537,9 @@ Future<void> injectPlugins(FlutterProject project, {bool checkProjects = false})
|
||||
}
|
||||
}
|
||||
}
|
||||
if (featureFlags.isWebEnabled && project.web.existsSync()) {
|
||||
await _writeWebPluginRegistrant(project, plugins);
|
||||
}
|
||||
}
|
||||
|
||||
/// Returns whether the specified Flutter [project] has any plugin dependencies.
|
||||
|
@ -623,6 +623,9 @@ class WebProject {
|
||||
&& indexFile.existsSync();
|
||||
}
|
||||
|
||||
/// The 'lib' directory for the application.
|
||||
Directory get libDirectory => parent.directory.childDirectory('lib');
|
||||
|
||||
/// The html file used to host the flutter web application.
|
||||
File get indexFile => parent.directory
|
||||
.childDirectory('web')
|
||||
|
@ -140,7 +140,6 @@ class ChromeLauncher {
|
||||
await chrome.chromeConnection.getTabs();
|
||||
} catch (e) {
|
||||
await chrome.close();
|
||||
print('here');
|
||||
throwToolExit(
|
||||
'Unable to connect to Chrome debug port: ${chrome.debugPort}\n $e');
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ dependencies:
|
||||
completion: 0.2.1+1
|
||||
coverage: 0.13.2
|
||||
crypto: 2.1.2
|
||||
file: 5.0.8+1
|
||||
file: 5.0.10
|
||||
http: 0.12.0+2
|
||||
intl: 0.15.8
|
||||
json_rpc_2: 2.1.0
|
||||
@ -134,4 +134,4 @@ dartdoc:
|
||||
# Exclude this package from the hosted API docs.
|
||||
nodoc: true
|
||||
|
||||
# PUBSPEC CHECKSUM: fb35
|
||||
# PUBSPEC CHECKSUM: 0702
|
||||
|
@ -42,7 +42,10 @@ void main() {
|
||||
' package: com.flutter.dev\n'
|
||||
' pluginClass: ASamplePlugin\n'
|
||||
' ios:\n'
|
||||
' pluginClass: ISamplePlugin\n';
|
||||
' pluginClass: ISamplePlugin\n'
|
||||
' web:\n'
|
||||
' pluginClass: WSamplePlugin\n'
|
||||
' fileName: web_plugin.dart\n';
|
||||
|
||||
final dynamic pluginYaml = loadYaml(pluginYamlRaw);
|
||||
final Plugin plugin =
|
||||
@ -53,6 +56,7 @@ void main() {
|
||||
final MacOSPlugin macOSPlugin =
|
||||
plugin.platforms[MacOSPlugin.kConfigKey];
|
||||
final IOSPlugin iosPlugin = plugin.platforms[IOSPlugin.kConfigKey];
|
||||
final WebPlugin webPlugin = plugin.platforms[WebPlugin.kConfigKey];
|
||||
final String androidPluginClass = androidPlugin.pluginClass;
|
||||
final String iosPluginClass = iosPlugin.pluginClass;
|
||||
|
||||
@ -61,6 +65,8 @@ void main() {
|
||||
expect(iosPlugin.classPrefix, '');
|
||||
expect(androidPlugin.package, 'com.flutter.dev');
|
||||
expect(macOSPlugin.pluginClass, 'MSamplePlugin');
|
||||
expect(webPlugin.pluginClass, 'WSamplePlugin');
|
||||
expect(webPlugin.fileName, 'web_plugin.dart');
|
||||
});
|
||||
});
|
||||
}
|
||||
|
@ -46,6 +46,11 @@ void main() {
|
||||
});
|
||||
when(mockBuildDaemonCreator.assetServerPort(any)).thenReturn(4321);
|
||||
testbed = Testbed(
|
||||
setup: () {
|
||||
// Create an empty .packages file so we can read it when we check for
|
||||
// plugins on WebFs.start()
|
||||
fs.file('.packages').createSync();
|
||||
},
|
||||
overrides: <Type, Generator>{
|
||||
OperatingSystemUtils: () => mockOperatingSystemUtils,
|
||||
BuildDaemonCreator: () => mockBuildDaemonCreator,
|
||||
|
18
packages/flutter_web_plugins/BUILD.gn
Normal file
18
packages/flutter_web_plugins/BUILD.gn
Normal file
@ -0,0 +1,18 @@
|
||||
# Copyright 2019 The Chromium 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("//build/dart/dart_library.gni")
|
||||
|
||||
dart_library("flutter_web_plugins") {
|
||||
package_name = "flutter_web_plugins"
|
||||
|
||||
# Can be left empty as analysis is disabled.
|
||||
sources = []
|
||||
|
||||
disable_analysis = true
|
||||
|
||||
deps = [
|
||||
"../flutter",
|
||||
]
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
// Copyright 2019 The Chromium 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 'src/plugin_registry.dart';
|
121
packages/flutter_web_plugins/lib/src/plugin_registry.dart
Normal file
121
packages/flutter_web_plugins/lib/src/plugin_registry.dart
Normal file
@ -0,0 +1,121 @@
|
||||
// Copyright 2019 The Chromium 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:async';
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
typedef _MessageHandler = Future<ByteData> Function(ByteData);
|
||||
|
||||
/// This class registers web platform plugins.
|
||||
class PluginRegistry {
|
||||
/// Creates a plugin registry.
|
||||
PluginRegistry(this._binaryMessenger);
|
||||
|
||||
final BinaryMessenger _binaryMessenger;
|
||||
|
||||
/// Creates a registrar for the given plugin implementation class.
|
||||
Registrar registrarFor(Type key) => Registrar(_binaryMessenger);
|
||||
|
||||
/// Registers this plugin handler with the engine, so that unrecognized
|
||||
/// platform messages are forwarded to the registry, where they can be
|
||||
/// correctly dispatched to one of the registered plugins.
|
||||
void registerMessageHandler() {
|
||||
// The function below is only defined in the Web dart:ui.
|
||||
// ignore: undefined_function
|
||||
ui.webOnlySetPluginHandler(_binaryMessenger.handlePlatformMessage);
|
||||
}
|
||||
}
|
||||
|
||||
/// A registrar for a particular plugin.
|
||||
///
|
||||
/// Gives access to a [BinaryMessenger] which has been configured to receive
|
||||
/// platform messages from the framework side.
|
||||
class Registrar {
|
||||
/// Creates a registrar with the given [BinaryMessenger].
|
||||
Registrar(this.messenger);
|
||||
|
||||
/// A [BinaryMessenger] configured to receive platform messages from the
|
||||
/// framework side.
|
||||
///
|
||||
/// Use this [BinaryMessenger] when creating platform channels in order for
|
||||
/// them to receive messages from the platform side. For example:
|
||||
///
|
||||
///
|
||||
/// class MyPlugin {
|
||||
/// static void registerWith(Registrar registrar) {
|
||||
/// final MethodChannel channel = MethodChannel(
|
||||
/// 'com.my_plugin/my_plugin',
|
||||
/// const StandardMethodCodec(),
|
||||
/// registrar.messenger);
|
||||
/// final MyPlugin instance = MyPlugin();
|
||||
/// channel.setMethodCallHandler(instance.handleMethodCall);
|
||||
/// }
|
||||
/// ...
|
||||
/// }
|
||||
final BinaryMessenger messenger;
|
||||
}
|
||||
|
||||
/// The default plugin registry for the web.
|
||||
final PluginRegistry webPluginRegistry = PluginRegistry(pluginBinaryMessenger);
|
||||
|
||||
/// A [BinaryMessenger] which does the inverse of the default framework
|
||||
/// messenger.
|
||||
///
|
||||
/// Instead of sending messages from the framework to the engine, this
|
||||
/// receives messages from the framework and dispatches them to registered
|
||||
/// plugins.
|
||||
class _PlatformBinaryMessenger extends BinaryMessenger {
|
||||
final Map<String, _MessageHandler> _handlers = <String, _MessageHandler>{};
|
||||
|
||||
/// Receives a platform message from the framework.
|
||||
@override
|
||||
Future<void> handlePlatformMessage(String channel, ByteData data,
|
||||
ui.PlatformMessageResponseCallback callback) async {
|
||||
ByteData response;
|
||||
try {
|
||||
final MessageHandler handler = _handlers[channel];
|
||||
if (handler != null) {
|
||||
response = await handler(data);
|
||||
}
|
||||
} catch (exception, stack) {
|
||||
FlutterError.reportError(FlutterErrorDetails(
|
||||
exception: exception,
|
||||
stack: stack,
|
||||
library: 'flutter web shell',
|
||||
context: ErrorDescription('during a plugin platform message call'),
|
||||
));
|
||||
} finally {
|
||||
callback(response);
|
||||
}
|
||||
}
|
||||
|
||||
/// Sends a platform message from the platform side back to the framework.
|
||||
@override
|
||||
Future<ByteData> send(String channel, ByteData message) {
|
||||
throw FlutterError(
|
||||
'Cannot send messages from the platform side to the framework.');
|
||||
}
|
||||
|
||||
@override
|
||||
void setMessageHandler(
|
||||
String channel, Future<ByteData> Function(ByteData message) handler) {
|
||||
if (handler == null)
|
||||
_handlers.remove(channel);
|
||||
else
|
||||
_handlers[channel] = handler;
|
||||
}
|
||||
|
||||
@override
|
||||
void setMockMessageHandler(
|
||||
String channel, Future<ByteData> Function(ByteData message) handler) {
|
||||
throw FlutterError(
|
||||
'Setting mock handlers is not supported on the platform side.');
|
||||
}
|
||||
}
|
||||
|
||||
/// The default [BinaryMessenger] for Flutter Web plugins.
|
||||
final BinaryMessenger pluginBinaryMessenger = _PlatformBinaryMessenger();
|
43
packages/flutter_web_plugins/pubspec.yaml
Normal file
43
packages/flutter_web_plugins/pubspec.yaml
Normal file
@ -0,0 +1,43 @@
|
||||
name: flutter_web_plugins
|
||||
description: Library to register Flutter Web plugins
|
||||
author: Flutter Authors <flutter-dev@googlegroups.com>
|
||||
homepage: http://flutter.dev
|
||||
|
||||
environment:
|
||||
sdk: ">=2.0.0-dev.28.0 <3.0.0"
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
|
||||
collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
meta: 1.1.7 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
typed_data: 1.1.6 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
vector_math: 2.0.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
|
||||
archive: 2.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
args: 1.5.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
async: 2.3.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
boolean_selector: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
charcode: 1.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
image: 2.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
matcher: 0.12.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
path: 1.6.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
pedantic: 1.8.0+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
petitparser: 2.4.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
quiver: 2.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
source_span: 1.5.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stack_trace: 1.9.3 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
stream_channel: 2.0.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
string_scanner: 1.0.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
term_glyph: 1.1.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
test_api: 0.2.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
xml: 3.5.0 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
|
||||
# PUBSPEC CHECKSUM: 5c57
|
61
packages/flutter_web_plugins/test/plugin_registry_test.dart
Normal file
61
packages/flutter_web_plugins/test/plugin_registry_test.dart
Normal file
@ -0,0 +1,61 @@
|
||||
// Copyright 2019 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
@TestOn('chrome') // Uses web-only Flutter SDK
|
||||
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
|
||||
|
||||
class TestPlugin {
|
||||
static void registerWith(Registrar registrar) {
|
||||
final MethodChannel channel = MethodChannel(
|
||||
'test_plugin',
|
||||
const StandardMethodCodec(),
|
||||
registrar.messenger,
|
||||
);
|
||||
final TestPlugin testPlugin = TestPlugin();
|
||||
channel.setMethodCallHandler(testPlugin.handleMethodCall);
|
||||
}
|
||||
|
||||
static final List<String> calledMethods = <String>[];
|
||||
|
||||
Future<void> handleMethodCall(MethodCall call) async {
|
||||
calledMethods.add(call.method);
|
||||
}
|
||||
}
|
||||
|
||||
void main() {
|
||||
group('Plugin Registry', () {
|
||||
setUp(() {
|
||||
TestWidgetsFlutterBinding.ensureInitialized();
|
||||
webPluginRegistry.registerMessageHandler();
|
||||
});
|
||||
|
||||
test('Can register a plugin', () {
|
||||
TestPlugin.calledMethods.clear();
|
||||
|
||||
final Registrar registrar = webPluginRegistry.registrarFor(TestPlugin);
|
||||
TestPlugin.registerWith(registrar);
|
||||
|
||||
const MethodChannel frameworkChannel =
|
||||
MethodChannel('test_plugin', StandardMethodCodec());
|
||||
frameworkChannel.invokeMethod<void>('test1');
|
||||
|
||||
expect(TestPlugin.calledMethods, <String>['test1']);
|
||||
});
|
||||
|
||||
test('Throws when trying to send a platform message to the framework', () {
|
||||
expect(() => pluginBinaryMessenger.send('test', ByteData(0)),
|
||||
throwsFlutterError);
|
||||
});
|
||||
|
||||
test('Throws when trying to set a mock handler', () {
|
||||
expect(
|
||||
() => pluginBinaryMessenger.setMockMessageHandler(
|
||||
'test', (ByteData data) async => ByteData(0)),
|
||||
throwsFlutterError);
|
||||
});
|
||||
});
|
||||
}
|
@ -24,7 +24,7 @@ dependencies:
|
||||
collection: 1.14.11 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
convert: 2.1.1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
crypto: 2.1.2 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.8+1 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
file: 5.0.10 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
image: 2.1.4 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
intl: 0.15.8 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
matcher: 0.12.5 # THIS LINE IS AUTOGENERATED - TO UPDATE USE "flutter update-packages --force-upgrade"
|
||||
@ -49,4 +49,4 @@ dependencies:
|
||||
dev_dependencies:
|
||||
mockito: 4.1.0
|
||||
|
||||
# PUBSPEC CHECKSUM: 70d0
|
||||
# PUBSPEC CHECKSUM: 8a9d
|
||||
|
Loading…
Reference in New Issue
Block a user