Browse Source

[infra_ui] Refactor platform interface to infra_ui scope and remove keyboard interface

Jaylen Bian 3 years ago
parent
commit
5e6c014226
31 changed files with 164 additions and 94 deletions
  1. 1 1
      app_flowy/packages/flowy_infra_ui/example/macos/Flutter/GeneratedPluginRegistrant.swift
  2. 21 0
      app_flowy/packages/flowy_infra_ui/example/pubspec.lock
  3. 3 3
      app_flowy/packages/flowy_infra_ui/example/windows/flutter/generated_plugin_registrant.cc
  4. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/.gitignore
  5. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/.metadata
  6. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/CHANGELOG.md
  7. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/LICENSE
  8. 1 1
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/README.md
  9. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/analysis_options.yaml
  10. 27 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/lib/flowy_infra_ui_platform_interface.dart
  11. 26 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/lib/src/method_channel_flowy_infra_ui.dart
  12. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/pubspec.lock
  13. 3 3
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/pubspec.yaml
  14. 5 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/test/flowy_infra_ui_platform_interface_test.dart
  15. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/.gitignore
  16. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/.metadata
  17. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/CHANGELOG.md
  18. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/LICENSE
  19. 1 1
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/README.md
  20. 0 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/analysis_options.yaml
  21. 23 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/lib/flowy_infra_ui_web.dart
  22. 7 7
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/pubspec.lock
  23. 6 5
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/pubspec.yaml
  24. 5 0
      app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/test/flowy_infra_ui_web_test.dart
  25. 0 23
      app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/keyboard_platform_interface.dart
  26. 0 17
      app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/src/method_channel_keyboard.dart
  27. 0 5
      app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/test/keyboard_platform_interface_test.dart
  28. 0 7
      app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/lib/keyboard_web.dart
  29. 0 12
      app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/test/keyboard_web_test.dart
  30. 22 1
      app_flowy/packages/flowy_infra_ui/pubspec.lock
  31. 13 8
      app_flowy/packages/flowy_infra_ui/pubspec.yaml

+ 1 - 1
app_flowy/packages/flowy_infra_ui/example/macos/Flutter/GeneratedPluginRegistrant.swift

@@ -8,5 +8,5 @@ import Foundation
 import flowy_infra_ui
 
 func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
-  FlowyInfraUiPlugin.register(with: registry.registrar(forPlugin: "FlowyInfraUiPlugin"))
+  FlowyInfraUIPlugin.register(with: registry.registrar(forPlugin: "FlowyInfraUIPlugin"))
 }

+ 21 - 0
app_flowy/packages/flowy_infra_ui/example/pubspec.lock

@@ -99,6 +99,20 @@ packages:
       relative: true
     source: path
     version: "0.0.1"
+  flowy_infra_ui_platform_interface:
+    dependency: transitive
+    description:
+      path: "../flowy_infra_ui_platform_interface"
+      relative: true
+    source: path
+    version: "0.0.1"
+  flowy_infra_ui_web:
+    dependency: transitive
+    description:
+      path: "../flowy_infra_ui_web"
+      relative: true
+    source: path
+    version: "0.0.1"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -177,6 +191,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.0"
+  plugin_platform_interface:
+    dependency: transitive
+    description:
+      name: plugin_platform_interface
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.1"
   provider:
     dependency: "direct main"
     description:

+ 3 - 3
app_flowy/packages/flowy_infra_ui/example/windows/flutter/generated_plugin_registrant.cc

@@ -4,9 +4,9 @@
 
 #include "generated_plugin_registrant.h"
 
-#include <flowy_infra_ui/flowy_infra_ui_plugin.h>
+#include <flowy_infra_ui/flowy_infra_u_i_plugin.h>
 
 void RegisterPlugins(flutter::PluginRegistry* registry) {
-  FlowyInfraUiPluginRegisterWithRegistrar(
-      registry->GetRegistrarForPlugin("FlowyInfraUiPlugin"));
+  FlowyInfraUIPluginRegisterWithRegistrar(
+      registry->GetRegistrarForPlugin("FlowyInfraUIPlugin"));
 }

+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.gitignore → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/.gitignore


+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.metadata → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/.metadata


+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/CHANGELOG.md → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/CHANGELOG.md


+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/LICENSE → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/LICENSE


+ 1 - 1
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/README.md → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/README.md

@@ -1,4 +1,4 @@
-# keyboard_platform_interface
+# flowy_infra_ui_platform_interface
 
 A new Flutter package project.
 

+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/analysis_options.yaml → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/analysis_options.yaml


+ 27 - 0
app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/lib/flowy_infra_ui_platform_interface.dart

@@ -0,0 +1,27 @@
+library flowy_infra_ui_platform_interface;
+
+import 'package:plugin_platform_interface/plugin_platform_interface.dart';
+import 'src/method_channel_flowy_infra_ui.dart';
+
+abstract class FlowyInfraUIPlatform extends PlatformInterface {
+  FlowyInfraUIPlatform() : super(token: _token);
+
+  static final Object _token = Object();
+
+  static FlowyInfraUIPlatform _instance = MethodChannelFlowyInfraUI();
+
+  static FlowyInfraUIPlatform get instance => _instance;
+
+  static set instance(FlowyInfraUIPlatform instance) {
+    PlatformInterface.verifyToken(instance, _token);
+    _instance = instance;
+  }
+
+  Stream<bool> get onKeyboardVisibilityChange {
+    throw UnimplementedError('`onKeyboardChange` should be overrided by subclass.');
+  }
+
+  Future<String?> getPlatformVersion() {
+    throw UnimplementedError('`getPlatformVersion` should be overrided by subclass.');
+  }
+}

+ 26 - 0
app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/lib/src/method_channel_flowy_infra_ui.dart

@@ -0,0 +1,26 @@
+import 'package:flowy_infra_ui_platform_interface/flowy_infra_ui_platform_interface.dart';
+import 'package:flutter/services.dart';
+
+import '../flowy_infra_ui_platform_interface.dart';
+
+// ignore: constant_identifier_names
+const INFRA_UI_METHOD_CHANNEL_NAME = 'flowy_infra_ui_method';
+const INFRA_UI_KEYBOARD_EVENT_CHANNEL_NAME = 'flowy_infra_ui_event/keyboard';
+const INFRA_UI_METHOD_GET_PLATFORM_VERSION = 'getPlatformVersion';
+
+class MethodChannelFlowyInfraUI extends FlowyInfraUIPlatform {
+  final MethodChannel _methodChannel = const MethodChannel(INFRA_UI_METHOD_CHANNEL_NAME);
+  final EventChannel _keyboardChannel = const EventChannel(INFRA_UI_KEYBOARD_EVENT_CHANNEL_NAME);
+
+  late final Stream<bool> _onKeyboardVisibilityChange =
+      _keyboardChannel.receiveBroadcastStream().map((event) => event as bool);
+
+  @override
+  Stream<bool> get onKeyboardVisibilityChange => _onKeyboardVisibilityChange;
+
+  @override
+  Future<String> getPlatformVersion() async {
+    String? version = await _methodChannel.invokeMethod<String>(INFRA_UI_METHOD_GET_PLATFORM_VERSION);
+    return version ?? 'unknow';
+  }
+}

+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.lock → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/pubspec.lock


+ 3 - 3
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.yaml → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/pubspec.yaml

@@ -1,4 +1,4 @@
-name: keyboard_platform_interface
+name: flowy_infra_ui_platform_interface
 description: A new Flutter package project.
 version: 0.0.1
 homepage:
@@ -10,7 +10,7 @@ environment:
 dependencies:
   flutter:
     sdk: flutter
-    
+
   plugin_platform_interface: ^2.0.0
 
 dev_dependencies:
@@ -18,4 +18,4 @@ dev_dependencies:
     sdk: flutter
   flutter_lints: ^1.0.0
 
-flutter:
+flutter:

+ 5 - 0
app_flowy/packages/flowy_infra_ui/flowy_infra_ui_platform_interface/test/flowy_infra_ui_platform_interface_test.dart

@@ -0,0 +1,5 @@
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:flowy_infra_ui_platform_interface/flowy_infra_ui_platform_interface.dart';
+
+void main() {}

+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/.gitignore → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/.gitignore


+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/.metadata → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/.metadata


+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/CHANGELOG.md → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/CHANGELOG.md


+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/LICENSE → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/LICENSE


+ 1 - 1
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/README.md → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/README.md

@@ -1,4 +1,4 @@
-# keyboard_web
+# flowy_infra_ui_web
 
 A new Flutter package project.
 

+ 0 - 0
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/analysis_options.yaml → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/analysis_options.yaml


+ 23 - 0
app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/lib/flowy_infra_ui_web.dart

@@ -0,0 +1,23 @@
+library flowy_infra_ui_web;
+
+import 'package:flowy_infra_ui_platform_interface/flowy_infra_ui_platform_interface.dart';
+import 'package:flutter_web_plugins/flutter_web_plugins.dart';
+
+class FlowyInfraUIPlugin extends FlowyInfraUIPlatform {
+  static void registerWith(Registrar registrar) {
+    FlowyInfraUIPlatform.instance = FlowyInfraUIPlugin();
+  }
+
+  // MARK: - Keyboard
+
+  @override
+  Stream<bool> get onKeyboardVisibilityChange async* {
+    // suppose that keyboard won't show in web side
+    yield false;
+  }
+
+  @override
+  Future<String?> getPlatformVersion() async {
+    return 'Web: unknow version';
+  }
+}

+ 7 - 7
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/pubspec.lock → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/pubspec.lock

@@ -50,6 +50,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.2.0"
+  flowy_infra_ui_platform_interface:
+    dependency: "direct main"
+    description:
+      path: "../flowy_infra_ui_platform_interface"
+      relative: true
+    source: path
+    version: "0.0.1"
   flutter:
     dependency: transitive
     description: flutter
@@ -79,13 +86,6 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "0.6.3"
-  keyboard_platform_interface:
-    dependency: "direct main"
-    description:
-      path: "../keyboard_platform_interface"
-      relative: true
-    source: path
-    version: "0.0.1"
   lints:
     dependency: transitive
     description:

+ 6 - 5
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/pubspec.yaml → app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/pubspec.yaml

@@ -1,7 +1,8 @@
-name: keyboard_web
+name: flowy_infra_ui_web
 description: A new Flutter package project.
 version: 0.0.1
 homepage:
+publish_to: none
 
 environment:
   sdk: ">=2.12.0 <3.0.0"
@@ -11,8 +12,8 @@ dependencies:
   flutter_web_plugins:
     sdk: flutter
 
-  keyboard_platform_interface:
-    path: ../keyboard_platform_interface
+  flowy_infra_ui_platform_interface:
+    path: ../flowy_infra_ui_platform_interface
 
 dev_dependencies:
   flutter_test:
@@ -23,5 +24,5 @@ flutter:
   plugin:
     platforms:
       web:
-        pluginClass: KeyboardPlugin
-        fileName: keyboard_web
+        pluginClass: FlowyInfraUIPlugin
+        fileName: flowy_infra_ui_web.dart

+ 5 - 0
app_flowy/packages/flowy_infra_ui/flowy_infra_ui_web/test/flowy_infra_ui_web_test.dart

@@ -0,0 +1,5 @@
+import 'package:flutter_test/flutter_test.dart';
+
+import 'package:flowy_infra_ui_web/flowy_infra_ui_web.dart';
+
+void main() {}

+ 0 - 23
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/keyboard_platform_interface.dart

@@ -1,23 +0,0 @@
-library keyboard_platform_interface;
-
-import 'package:plugin_platform_interface/plugin_platform_interface.dart';
-import 'src/method_channel_keyboard.dart';
-
-abstract class KeyboardPlatform extends PlatformInterface {
-  KeyboardPlatform() : super(token: _token);
-
-  static final Object _token = Object();
-
-  static KeyboardPlatform _instance = MethodChannelKeyboard();
-
-  static KeyboardPlatform get instance => _instance;
-
-  static set instance(KeyboardPlatform instance) {
-    PlatformInterface.verifyToken(instance, _token);
-    _instance = instance;
-  }
-
-  Stream<bool> get onKeyboardChange {
-    throw UnimplementedError('`onKeyboardChange` should be overrided by subclass.');
-  }
-}

+ 0 - 17
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/src/method_channel_keyboard.dart

@@ -1,17 +0,0 @@
-import 'dart:html';
-
-import 'package:flutter/services.dart';
-
-import '../keyboard_platform_interface.dart';
-
-// ignore: constant_identifier_names
-const INFRA_UI_KEYBOARD_EVENT_CHANNEL_NAME = "flowy_infra_ui_event/keyboard";
-
-class MethodChannelKeyboard extends KeyboardPlatform {
-  final EventChannel _keyboardChannel = const EventChannel(INFRA_UI_KEYBOARD_EVENT_CHANNEL_NAME);
-
-  late final Stream<bool> _onKeyboardChange = _keyboardChannel.receiveBroadcastStream().map((event) => event as bool);
-
-  @override
-  Stream<bool> get onKeyboardChange => _onKeyboardChange;
-}

+ 0 - 5
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/test/keyboard_platform_interface_test.dart

@@ -1,5 +0,0 @@
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:keyboard_platform_interface/keyboard_platform_interface.dart';
-
-void main() {}

+ 0 - 7
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/lib/keyboard_web.dart

@@ -1,7 +0,0 @@
-library keyboard_web;
-
-/// A Calculator.
-class Calculator {
-  /// Returns [value] plus 1.
-  int addOne(int value) => value + 1;
-}

+ 0 - 12
app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_web/test/keyboard_web_test.dart

@@ -1,12 +0,0 @@
-import 'package:flutter_test/flutter_test.dart';
-
-import 'package:keyboard_web/keyboard_web.dart';
-
-void main() {
-  test('adds one to input values', () {
-    final calculator = Calculator();
-    expect(calculator.addOne(2), 3);
-    expect(calculator.addOne(-7), -6);
-    expect(calculator.addOne(0), 1);
-  });
-}

+ 22 - 1
app_flowy/packages/flowy_infra_ui/pubspec.lock

@@ -85,6 +85,20 @@ packages:
       relative: true
     source: path
     version: "0.0.1"
+  flowy_infra_ui_platform_interface:
+    dependency: "direct main"
+    description:
+      path: flowy_infra_ui_platform_interface
+      relative: true
+    source: path
+    version: "0.0.1"
+  flowy_infra_ui_web:
+    dependency: "direct main"
+    description:
+      path: flowy_infra_ui_web
+      relative: true
+    source: path
+    version: "0.0.1"
   flutter:
     dependency: "direct main"
     description: flutter
@@ -103,7 +117,7 @@ packages:
     source: sdk
     version: "0.0.0"
   flutter_web_plugins:
-    dependency: "direct main"
+    dependency: transitive
     description: flutter
     source: sdk
     version: "0.0.0"
@@ -163,6 +177,13 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.8.0"
+  plugin_platform_interface:
+    dependency: transitive
+    description:
+      name: plugin_platform_interface
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.1"
   provider:
     dependency: "direct main"
     description:

+ 13 - 8
app_flowy/packages/flowy_infra_ui/pubspec.yaml

@@ -11,8 +11,7 @@ environment:
 dependencies:
   flutter:
     sdk: flutter
-  flutter_web_plugins:
-    sdk: flutter
+
   # Thirdparty packages
   textstyle_extensions: '2.0.0-nullsafety'
   dartz: '0.10.0-nullsafety.2'
@@ -20,6 +19,13 @@ dependencies:
   styled_widget: '>=0.3.1'
   equatable: '>=2.0.2'
   animations: ^2.0.0
+
+  # Federated Platform Interface
+  flowy_infra_ui_platform_interface:
+    path: flowy_infra_ui_platform_interface
+  flowy_infra_ui_web:
+    path: flowy_infra_ui_web
+
   # Flowy packages
   flowy_infra:
     path: ../flowy_infra
@@ -34,13 +40,12 @@ flutter:
     platforms:
       android:
         package: com.example.flowy_infra_ui
-        pluginClass: FlowyInfraUiPlugin
+        pluginClass: FlowyInfraUIPlugin
       ios:
-        pluginClass: FlowyInfraUiPlugin
+        pluginClass: FlowyInfraUIPlugin
       macos:
-        pluginClass: FlowyInfraUiPlugin
+        pluginClass: FlowyInfraUIPlugin
       windows:
-        pluginClass: FlowyInfraUiPlugin
+        pluginClass: FlowyInfraUIPlugin
       web:
-        pluginClass: FlowyInfraUiWeb
-        fileName: flowy_infra_ui_web.dart
+        default_package: flowy_infra_ui_web