diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.gitignore b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.gitignore new file mode 100644 index 0000000000..a247422ef7 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.gitignore @@ -0,0 +1,75 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.buildlog/ +.history +.svn/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.packages +.pub-cache/ +.pub/ +build/ + +# Android related +**/android/**/gradle-wrapper.jar +**/android/.gradle +**/android/captures/ +**/android/gradlew +**/android/gradlew.bat +**/android/local.properties +**/android/**/GeneratedPluginRegistrant.java + +# iOS/XCode related +**/ios/**/*.mode1v3 +**/ios/**/*.mode2v3 +**/ios/**/*.moved-aside +**/ios/**/*.pbxuser +**/ios/**/*.perspectivev3 +**/ios/**/*sync/ +**/ios/**/.sconsign.dblite +**/ios/**/.tags* +**/ios/**/.vagrant/ +**/ios/**/DerivedData/ +**/ios/**/Icon? +**/ios/**/Pods/ +**/ios/**/.symlinks/ +**/ios/**/profile +**/ios/**/xcuserdata +**/ios/.generated/ +**/ios/Flutter/App.framework +**/ios/Flutter/Flutter.framework +**/ios/Flutter/Flutter.podspec +**/ios/Flutter/Generated.xcconfig +**/ios/Flutter/ephemeral +**/ios/Flutter/app.flx +**/ios/Flutter/app.zip +**/ios/Flutter/flutter_assets/ +**/ios/Flutter/flutter_export_environment.sh +**/ios/ServiceDefinitions.json +**/ios/Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!**/ios/**/default.mode1v3 +!**/ios/**/default.mode2v3 +!**/ios/**/default.pbxuser +!**/ios/**/default.perspectivev3 diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.metadata b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.metadata new file mode 100644 index 0000000000..f46c92994f --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/.metadata @@ -0,0 +1,10 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: fa5883b78e566877613ad1ccb48dd92075cb5c23 + channel: dev + +project_type: package diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/CHANGELOG.md b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/CHANGELOG.md new file mode 100644 index 0000000000..41cc7d8192 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/CHANGELOG.md @@ -0,0 +1,3 @@ +## 0.0.1 + +* TODO: Describe initial release. diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/LICENSE b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/LICENSE new file mode 100644 index 0000000000..ba75c69f7f --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/LICENSE @@ -0,0 +1 @@ +TODO: Add your license here. diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/README.md b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/README.md new file mode 100644 index 0000000000..19f51139a6 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/README.md @@ -0,0 +1,14 @@ +# keyboard_platform_interface + +A new Flutter package project. + +## Getting Started + +This project is a starting point for a Dart +[package](https://flutter.dev/developing-packages/), +a library module containing code that can be shared easily across +multiple Flutter or Dart projects. + +For help getting started with Flutter, view our +[online documentation](https://flutter.dev/docs), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/analysis_options.yaml b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/analysis_options.yaml new file mode 100644 index 0000000000..a5744c1cfb --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/analysis_options.yaml @@ -0,0 +1,4 @@ +include: package:flutter_lints/flutter.yaml + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/keyboard_platform_interface.dart b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/keyboard_platform_interface.dart new file mode 100644 index 0000000000..2fd5a82661 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/keyboard_platform_interface.dart @@ -0,0 +1,23 @@ +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 get onKeyboardChange { + throw UnimplementedError('`onKeyboardChange` should be overrided by subclass.'); + } +} diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/src/method_channel_keyboard.dart b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/src/method_channel_keyboard.dart new file mode 100644 index 0000000000..f543df69fd --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/lib/src/method_channel_keyboard.dart @@ -0,0 +1,17 @@ +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 _onKeyboardChange = _keyboardChannel.receiveBroadcastStream().map((event) => event as bool); + + @override + Stream get onKeyboardChange => _onKeyboardChange; +} diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.lock b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.lock new file mode 100644 index 0000000000..a2ed8a8fe8 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.lock @@ -0,0 +1,168 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.6.1" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.15.0" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.10" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + plugin_platform_interface: + dependency: "direct main" + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.0" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" +sdks: + dart: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.yaml b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.yaml new file mode 100644 index 0000000000..800a97c674 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/pubspec.yaml @@ -0,0 +1,21 @@ +name: keyboard_platform_interface +description: A new Flutter package project. +version: 0.0.1 +homepage: + +environment: + sdk: ">=2.12.0 <3.0.0" + flutter: ">=1.17.0" + +dependencies: + flutter: + sdk: flutter + + plugin_platform_interface: ^2.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^1.0.0 + +flutter: diff --git a/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/test/keyboard_platform_interface_test.dart b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/test/keyboard_platform_interface_test.dart new file mode 100644 index 0000000000..815becdd47 --- /dev/null +++ b/app_flowy/packages/flowy_infra_ui/platform_interface/keyboard_platform_interface/test/keyboard_platform_interface_test.dart @@ -0,0 +1,5 @@ +import 'package:flutter_test/flutter_test.dart'; + +import 'package:keyboard_platform_interface/keyboard_platform_interface.dart'; + +void main() {}