[LINUX] About the SystemChannels API to take advantage of Flutter platform-specific features


Describes the API System Channels for using platform-specific functions from Flutter.

What is System Channels

First of all, basically I don't recommend using this API </ font>. This API is used a lot inside the Flutter Framework, but since it is an intermediate layer API as shown below, it is highly likely that it will change in future version upgrades.

If you look at the [Source Code] of SystemChannels (https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/system_channels.dart), the contents use MethodChannel, EventChannel, etc. You can see that. Please refer to here for Method Channel and Event Channel.

スクリーンショット 2020-02-11 13.16.33.png

Types of System Channels

Several types are available for each application. The list is shown below.

type function Higher Flutter Service
lifecycle life cycle widget
navigation navigation widget, system_chrome
system unknown….hereUsed in, but virtually nothing widget
accessibility Accessibility(Text reading etc.) PlatformViews, Semantics
platform System setting(Screen rotation,End etc.) SemanticsService,RouteNotificationMessages etc.
platform_views Platform-specific view operations AndroidView, UiKitView
skia Graphics -
keyEvent Key input RawKeyEvent
textInput Text input TextInput, AndroidView, UiKitView

Sample code


Life cycle listener

  print('<SystemChannels.lifecycle> $message');
  return Future<String>.value();


Navigation operation listener

SystemChannels.navigation.setMethodCallHandler((call) {
  print('<SystemChannels.navigation> ${call.method} (${call.arguments})');
  return Future<dynamic>.value();

system It can't be used for anything, it's not used, and you can ignore it.

For the time being, set only the callback

SystemChannels.system.setMessageHandler((message) {
  print('<SystemChannels.system> $message');
  return Future<dynamic>.value();


Text-to-speech sample

SemanticsService.announce('Hello world', TextDirection.ltr)

The Flutter Framework internal implementation of is below.



final AnnounceSemanticsEvent event = AnnounceSemanticsEvent('Hello world', TextDirection.ltr);


Exit the app


The Flutter Framework internal implementation of is below.

Exit the app



It is used in flutter_web, so please refer to it.

Create a view like this

final Map<String, dynamic> args = <String, dynamic>{
  'id': 1,
  'viewType': 'Create WebView',
SystemChannels.platform_views.invokeMethod('create', args);


Skia cache size setting. There is no other function, and now I can only do this ...

const maxBytes = 4 * 1024 * 1024;
SystemChannels.skia.invokeMethod('setResourceCacheMaxBytes', maxBytes);


Key input listener

SystemChannels.keyEvent.setMessageHandler((message) {
  print('<SystemChannels.keyEvent> $message');
  return Future<dynamic>.value();


Keyboard display ON/OFF


Recommended Posts

About the SystemChannels API to take advantage of Flutter platform-specific features
About the features of Python
I tried to touch the API of ebay
About the camera change event of Google Maps Android API
I want to know the features of Python and pip
Try to extract the features of the sensor data with CNN
About the ease of Python
About the components of Luigi
First python ② Try to write code while examining the features of python
Python beginners hit the unofficial API of Google Play Music to play music
About the return value of pthread_mutex_init ()
About the return value of the histogram.
About the basic type of Go
About the upper limit of threads-max
Master the rich features of IPython
Mastering the rich features of IPython (2)
About the behavior of yield_per of SqlAlchemy
About the size of matplotlib points
About the basics list of Python basics
Supplement to the explanation of vscode
From the introduction of GoogleCloudPlatform Natural Language API to how to use it
I wanted to be careful about the behavior of Python's default arguments
Hit the Rakuten Ranking API to save the ranking of any category in CSV
I tried to get the authentication code of Qiita API with Python.
I tried to get the movie information of TMDb API with Python