Migrate platform_plugins to null safety (#78943)
diff --git a/packages/flutter_tools/lib/src/platform_plugins.dart b/packages/flutter_tools/lib/src/platform_plugins.dart
index d41fa74..c3fb431 100644
--- a/packages/flutter_tools/lib/src/platform_plugins.dart
+++ b/packages/flutter_tools/lib/src/platform_plugins.dart
@@ -2,9 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// @dart = 2.8
-
-import 'package:meta/meta.dart';
import 'package:yaml/yaml.dart';
import 'base/common.dart';
@@ -35,11 +32,11 @@
/// the [pluginClass] that will be the entry point to the plugin's native code.
class AndroidPlugin extends PluginPlatform {
AndroidPlugin({
- @required this.name,
- @required this.package,
- @required this.pluginClass,
- @required this.pluginPath,
- @required FileSystem fileSystem,
+ required this.name,
+ required this.package,
+ required this.pluginClass,
+ required this.pluginPath,
+ required FileSystem fileSystem,
}) : _fileSystem = fileSystem;
factory AndroidPlugin.fromYaml(String name, YamlMap yaml, String pluginPath, FileSystem fileSystem) {
@@ -88,7 +85,7 @@
};
}
- Set<String> _cachedEmbeddingVersion;
+ Set<String>? _cachedEmbeddingVersion;
/// Returns the version of the Android embedding.
Set<String> get _supportedEmbedings => _cachedEmbeddingVersion ??= _getSupportedEmbeddings();
@@ -118,7 +115,7 @@
)
];
- File mainPluginClass;
+ File? mainPluginClass;
bool mainClassFound = false;
for (final String mainClassCandidate in mainClassCandidates) {
mainPluginClass = _fileSystem.file(mainClassCandidate);
@@ -127,7 +124,7 @@
break;
}
}
- if (!mainClassFound) {
+ if (mainPluginClass == null || !mainClassFound) {
assert(mainClassCandidates.length <= 2);
throwToolExit(
"The plugin `$name` doesn't have a main class defined in ${mainClassCandidates.join(' or ')}. "
@@ -158,9 +155,9 @@
/// will be the entry point to the plugin's native code.
class IOSPlugin extends PluginPlatform {
const IOSPlugin({
- @required this.name,
- this.classPrefix,
- @required this.pluginClass,
+ required this.name,
+ required this.classPrefix,
+ required this.pluginClass,
});
factory IOSPlugin.fromYaml(String name, YamlMap yaml) {
@@ -204,7 +201,7 @@
/// [pluginClass] will be the entry point to the plugin's native code.
class MacOSPlugin extends PluginPlatform implements NativeOrDartPlugin {
const MacOSPlugin({
- @required this.name,
+ required this.name,
this.pluginClass,
this.dartPluginClass,
});
@@ -212,7 +209,7 @@
factory MacOSPlugin.fromYaml(String name, YamlMap yaml) {
assert(validate(yaml));
// Treat 'none' as not present. See https://github.com/flutter/flutter/issues/57497.
- String pluginClass = yaml[kPluginClass] as String;
+ String? pluginClass = yaml[kPluginClass] as String;
if (pluginClass == 'none') {
pluginClass = null;
}
@@ -233,8 +230,8 @@
static const String kConfigKey = 'macos';
final String name;
- final String pluginClass;
- final String dartPluginClass;
+ final String? pluginClass;
+ final String? dartPluginClass;
@override
bool isNative() => pluginClass != null;
@@ -255,7 +252,7 @@
/// [pluginClass] will be the entry point to the plugin's native code.
class WindowsPlugin extends PluginPlatform implements NativeOrDartPlugin{
const WindowsPlugin({
- @required this.name,
+ required this.name,
this.pluginClass,
this.dartPluginClass,
}) : assert(pluginClass != null || dartPluginClass != null);
@@ -263,7 +260,7 @@
factory WindowsPlugin.fromYaml(String name, YamlMap yaml) {
assert(validate(yaml));
// Treat 'none' as not present. See https://github.com/flutter/flutter/issues/57497.
- String pluginClass = yaml[kPluginClass] as String;
+ String? pluginClass = yaml[kPluginClass] as String;
if (pluginClass == 'none') {
pluginClass = null;
}
@@ -284,8 +281,8 @@
static const String kConfigKey = 'windows';
final String name;
- final String pluginClass;
- final String dartPluginClass;
+ final String? pluginClass;
+ final String? dartPluginClass;
@override
bool isNative() => pluginClass != null;
@@ -295,7 +292,7 @@
return <String, dynamic>{
'name': name,
if (pluginClass != null) 'class': pluginClass,
- if (pluginClass != null) 'filename': _filenameForCppClass(pluginClass),
+ if (pluginClass != null) 'filename': _filenameForCppClass(pluginClass!),
if (dartPluginClass != null) 'dartPluginClass': dartPluginClass,
};
}
@@ -307,7 +304,7 @@
/// [pluginClass] will be the entry point to the plugin's native code.
class LinuxPlugin extends PluginPlatform implements NativeOrDartPlugin {
const LinuxPlugin({
- @required this.name,
+ required this.name,
this.pluginClass,
this.dartPluginClass,
}) : assert(pluginClass != null || dartPluginClass != null);
@@ -315,7 +312,7 @@
factory LinuxPlugin.fromYaml(String name, YamlMap yaml) {
assert(validate(yaml));
// Treat 'none' as not present. See https://github.com/flutter/flutter/issues/57497.
- String pluginClass = yaml[kPluginClass] as String;
+ String? pluginClass = yaml[kPluginClass] as String;
if (pluginClass == 'none') {
pluginClass = null;
}
@@ -336,8 +333,8 @@
static const String kConfigKey = 'linux';
final String name;
- final String pluginClass;
- final String dartPluginClass;
+ final String? pluginClass;
+ final String? dartPluginClass;
@override
bool isNative() => pluginClass != null;
@@ -347,7 +344,7 @@
return <String, dynamic>{
'name': name,
if (pluginClass != null) 'class': pluginClass,
- if (pluginClass != null) 'filename': _filenameForCppClass(pluginClass),
+ if (pluginClass != null) 'filename': _filenameForCppClass(pluginClass!),
if (dartPluginClass != null) 'dartPluginClass': dartPluginClass,
};
}
@@ -360,9 +357,9 @@
/// containing the code.
class WebPlugin extends PluginPlatform {
const WebPlugin({
- @required this.name,
- @required this.pluginClass,
- @required this.fileName,
+ required this.name,
+ required this.pluginClass,
+ required this.fileName,
});
factory WebPlugin.fromYaml(String name, YamlMap yaml) {