[LINUX] Informationen zur SystemChannels-API, um die plattformspezifischen Funktionen von Flutter zu nutzen

Einführung

In diesem Abschnitt wird die API System Channels für die Verwendung plattformspezifischer Funktionen von Flutter beschrieben.

Was sind Systemkanäle?

Zunächst einmal empfehle ich grundsätzlich nicht, diese API </ font> zu verwenden. Diese API wird häufig im Flutter Framework verwendet. Da es sich jedoch um eine Zwischenschicht-API handelt, wie unten gezeigt, ist es sehr wahrscheinlich, dass sie sich in zukünftigen Versions-Upgrades ändert.

Beim Betrachten des [Quellcodes] von SystemChannels (https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/services/system_channels.dart) verwenden die Inhalte MethodChannel, EventChannel usw. Sie können sehen, dass. Informationen zu Methodenkanal und Ereigniskanal finden Sie unter hier.

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

Arten von Systemkanälen

Für jede Anwendung stehen mehrere Typen zur Verfügung. Die Liste wird unten angezeigt.

Art Funktion Höherer Flatter-Service
lifecycle Lebenszyklus widget
navigation Navigation widget, system_chrome
system Unbekannt….HierVerwendet in, aber praktisch nichts widget
accessibility Barrierefreiheit(Text lesen etc.) PlatformViews, Semantics
platform Systemeinstellung(Bildschirm Rotation,Ende etc.) SemanticsService,RouteNotificationMessages etc.
platform_views Plattformspezifische Ansichtsvorgänge AndroidView, UiKitView
skia Grafik -
keyEvent Tasteneingabe RawKeyEvent
textInput Text Eingabe TextInput, AndroidView, UiKitView

Beispielcode

lifecycle

Lebenszyklus-Hörer


SystemChannels.lifecycle.setMessageHandler((message){
  print('<SystemChannels.lifecycle> $message');
  /*
  AppLifecycleState.paused
  AppLifecycleState.inactive
  AppLifecycleState.resumed
  AppLifecycleState.suspending
  AppLifecycleState.detached
   */
  return Future<String>.value();
});

navigation

Listener für Navigationsvorgänge


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

system Es kann für nichts verwendet werden, es wird nicht verwendet und Sie können es ignorieren.

Stellen Sie vorerst nur den Rückruf ein


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

accessibility

Text-zu-Sprache-Beispiel


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

Die interne Implementierung von Flutter Framework von ist unten.

Referenz

Dart


final AnnounceSemanticsEvent event = AnnounceSemanticsEvent('Hello world', TextDirection.ltr);
SystemChannels.accessibility.send(event.toMap());

platform

Beenden Sie die App


SystemNavigator.pop()

Die interne Implementierung von Flutter Framework von ist unten.

Beenden Sie die App


SystemChannels.platform.invokeMethod('SystemNavigator.pop');

platform_views

Bitte beziehen Sie sich darauf, wie es in [flutter_web] verwendet wird (https://github.com/flutter/flutter_web/blob/master/packages/flutter_web/lib/src/widgets/platform_view.dart).

Erstellen Sie eine Ansicht wie diese


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

skia

Einstellung der Skia-Cache-Größe. Es gibt keine andere Funktion, und jetzt kann ich das nur noch tun ...


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

keyEvent

Key Input Listener


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

textInput

Tastaturanzeige EIN/OFF


SystemChannels.textInput.invokeMethod('TextInput.show');
SystemChannels.textInput.invokeMethod('TextInput.hide');

Recommended Posts

Informationen zur SystemChannels-API, um die plattformspezifischen Funktionen von Flutter zu nutzen
Über die Funktionen von Python
Informationen zum Kamerawechselereignis der Google Maps Android API
Ich möchte die Natur von Python und Pip kennenlernen
Versuchen Sie, Merkmale von Sensordaten mit CNN zu extrahieren
Über die Komponenten von Luigi
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen
Python-Anfänger nutzen die inoffizielle API von Google Play Music, um Musik abzuspielen
Über den Rückgabewert von pthread_mutex_init ()
Über den Rückgabewert des Histogramms.
Über den Grundtyp von Go
Über die Obergrenze von Threads-max
Beherrschen Sie die umfangreichen Funktionen von IPython
Beherrschung der umfangreichen Funktionen von IPython (2)
Über das Verhalten von Yield_per von SqlAlchemy
Über die Größe der Punkte in Matplotlib
Informationen zur Grundlagenliste der Python-Grundlagen
Ergänzung zur Erklärung von vscode
Von der Einführung der GoogleCloudPlatform Natural Language API bis zur Verwendung
Ich wollte vorsichtig mit dem Verhalten der Standardargumente von Python sein
Klicken Sie auf die Rakuten-Ranking-API, um das Ranking einer beliebigen Kategorie in CSV zu speichern
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen