registerSignalServiceExtension method
- @protected
Registers a service extension method with the given name (full name "ext.flutter.name"), which takes no arguments and returns no value.
Calls the callback
callback when the service extension is called.
A registered service extension can only be activated if the vm-service is included in the build, which only happens in debug and profile mode. Although a service extension cannot be used in release mode its code may still be included in the Dart snapshot and blow up binary size if it is not wrapped in a guard that allows the tree shaker to remove it (see sample code below).
Sample Code
The following code registers a service extension that is only included in debug builds:
assert(() {
// Register your service extension here.
return true;
}());
A service extension registered with the following code snippet is available in debug and profile mode:
if (!const bool.fromEnvironment('dart.vm.product')) {
Both guards ensure that Dart's tree shaker can remove the code for the service extension in release builds.
Implementation
@protected
void registerSignalServiceExtension({
@required String name,
@required AsyncCallback callback
}) {
assert(name != null);
assert(callback != null);
registerServiceExtension(
name: name,
callback: (Map<String, String> parameters) async {
await callback();
return <String, dynamic>{};
}
);
}