24 changed files with 711 additions and 19 deletions
			
			
		@ -0,0 +1,53 @@
					 | 
				
			||||
/* | 
				
			||||
 * Copyright (c) 2023. Open Mobile Platform LLC. | 
				
			||||
 * License: Proprietary. | 
				
			||||
 */ | 
				
			||||
import 'package:flutter/widgets.dart'; | 
				
			||||
import 'package:flutter_keyboard_visibility/flutter_keyboard_visibility.dart'; | 
				
			||||
import 'package:flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora.dart'; | 
				
			||||
import 'package:scoped_model/scoped_model.dart'; | 
				
			||||
 | 
				
			||||
/// Model for [FlutterKeyboardVisibilityPage] | 
				
			||||
class FlutterKeyboardVisibilityModel extends Model { | 
				
			||||
  /// Get [ScopedModel] | 
				
			||||
  static FlutterKeyboardVisibilityModel of(BuildContext context) => | 
				
			||||
      ScopedModel.of<FlutterKeyboardVisibilityModel>(context); | 
				
			||||
 | 
				
			||||
  final _controller = KeyboardVisibilityController(); | 
				
			||||
  final _controllerAurora = FlutterKeyboardVisibilityAurora(); | 
				
			||||
 | 
				
			||||
  /// Error | 
				
			||||
  String? _error; | 
				
			||||
 | 
				
			||||
  /// Public error | 
				
			||||
  String? get error => _error; | 
				
			||||
 | 
				
			||||
  /// Public is error | 
				
			||||
  bool get isError => _error != null; | 
				
			||||
 | 
				
			||||
  /// Stream change visibility | 
				
			||||
  Stream<bool> onChangeKeyboard() async* { | 
				
			||||
    try { | 
				
			||||
      yield _controller.isVisible; | 
				
			||||
      await for (final state in _controller.onChange) { | 
				
			||||
        yield state; | 
				
			||||
      } | 
				
			||||
    } catch (e) { | 
				
			||||
      _error = e.toString(); | 
				
			||||
      notifyListeners(); | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  /// Stream change height | 
				
			||||
  Stream<double> onChangeKeyboardHeight() async* { | 
				
			||||
    try { | 
				
			||||
      yield await _controllerAurora.height; | 
				
			||||
      await for (final state in _controllerAurora.onChangeHeight) { | 
				
			||||
        yield state; | 
				
			||||
      } | 
				
			||||
    } catch (e) { | 
				
			||||
      _error = e.toString(); | 
				
			||||
      notifyListeners(); | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,27 @@
					 | 
				
			||||
/* | 
				
			||||
 * Copyright (c) 2023. Open Mobile Platform LLC. | 
				
			||||
 * License: Proprietary. | 
				
			||||
 */ | 
				
			||||
import 'package:flutter_example_packages/base/package/package_page.dart'; | 
				
			||||
import 'package:get_it/get_it.dart'; | 
				
			||||
 | 
				
			||||
import 'page.dart'; | 
				
			||||
import 'model.dart'; | 
				
			||||
 | 
				
			||||
/// Package values | 
				
			||||
final packageFlutterKeyboardVisibility = PackagePage( | 
				
			||||
  key: 'flutter_keyboard_visibility', | 
				
			||||
  descEN: ''' | 
				
			||||
    React to keyboard visibility changes. | 
				
			||||
    ''', | 
				
			||||
  descRU: ''' | 
				
			||||
    Реагировать на изменения видимости клавиатуры. | 
				
			||||
    ''', | 
				
			||||
  version: '5.4.1', | 
				
			||||
  isPlatformDependent: true, | 
				
			||||
  page: () => FlutterKeyboardVisibilityPage(), | 
				
			||||
  init: () { | 
				
			||||
    GetIt.instance.registerFactory<FlutterKeyboardVisibilityModel>( | 
				
			||||
        () => FlutterKeyboardVisibilityModel()); | 
				
			||||
  }, | 
				
			||||
); | 
				
			||||
@ -0,0 +1,108 @@
					 | 
				
			||||
/* | 
				
			||||
 * Copyright (c) 2023. Open Mobile Platform LLC. | 
				
			||||
 * License: Proprietary. | 
				
			||||
 */ | 
				
			||||
import 'package:flutter/material.dart'; | 
				
			||||
import 'package:flutter_example_packages/base/di/app_di.dart'; | 
				
			||||
import 'package:flutter_example_packages/base/package/package.dart'; | 
				
			||||
import 'package:flutter_example_packages/packages/flutter_keyboard_visibility/model.dart'; | 
				
			||||
import 'package:flutter_example_packages/widgets/base/export.dart'; | 
				
			||||
import 'package:flutter_example_packages/widgets/blocks/block_alert.dart'; | 
				
			||||
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart'; | 
				
			||||
import 'package:flutter_example_packages/widgets/blocks/block_item.dart'; | 
				
			||||
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; | 
				
			||||
import 'package:flutter_example_packages/widgets/texts/export.dart'; | 
				
			||||
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; | 
				
			||||
 | 
				
			||||
import 'package.dart'; | 
				
			||||
 | 
				
			||||
class FlutterKeyboardVisibilityPage extends AppStatefulWidget { | 
				
			||||
  FlutterKeyboardVisibilityPage({ | 
				
			||||
    super.key, | 
				
			||||
  }); | 
				
			||||
 | 
				
			||||
  final Package package = packageFlutterKeyboardVisibility; | 
				
			||||
 | 
				
			||||
  @override | 
				
			||||
  State<FlutterKeyboardVisibilityPage> createState() => | 
				
			||||
      _FlutterKeyboardVisibilityPageState(); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
class _FlutterKeyboardVisibilityPageState | 
				
			||||
    extends AppState<FlutterKeyboardVisibilityPage> { | 
				
			||||
  double _keyboardHeight = 0; | 
				
			||||
  final model = getIt<FlutterKeyboardVisibilityModel>(); | 
				
			||||
 | 
				
			||||
  @override | 
				
			||||
  void initState() { | 
				
			||||
    super.initState(); | 
				
			||||
    model.onChangeKeyboardHeight().listen((height) { | 
				
			||||
      setState(() { | 
				
			||||
        _keyboardHeight = height; | 
				
			||||
      }); | 
				
			||||
    }); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  @override | 
				
			||||
  Widget buildWide( | 
				
			||||
    BuildContext context, | 
				
			||||
    MediaQueryData media, | 
				
			||||
    AppLocalizations l10n, | 
				
			||||
  ) { | 
				
			||||
    return BlockLayout<FlutterKeyboardVisibilityModel>( | 
				
			||||
      model: model, | 
				
			||||
      title: widget.package.key, | 
				
			||||
      builder: (context, child, model) { | 
				
			||||
        return SingleChildScrollView( | 
				
			||||
          padding: EdgeInsets.only(bottom: _keyboardHeight), | 
				
			||||
          child: Padding( | 
				
			||||
            padding: const EdgeInsets.all(20), | 
				
			||||
            child: Column( | 
				
			||||
              crossAxisAlignment: CrossAxisAlignment.start, | 
				
			||||
              children: [ | 
				
			||||
                BlockInfoPackage(widget.package), | 
				
			||||
                BlockAlert(model.error), | 
				
			||||
                if (!model.isError) | 
				
			||||
                  Column( | 
				
			||||
                    crossAxisAlignment: CrossAxisAlignment.start, | 
				
			||||
                    children: [ | 
				
			||||
                      TextField( | 
				
			||||
                        decoration: InputDecoration( | 
				
			||||
                          hintText: l10n.flutterKeyboardVisibilityField, | 
				
			||||
                        ), | 
				
			||||
                      ), | 
				
			||||
                      const SizedBox(height: 20), | 
				
			||||
                      SizedBox( | 
				
			||||
                        width: 140, | 
				
			||||
                        child: ElevatedButton( | 
				
			||||
                          onPressed: () => FocusScope.of(context).unfocus(), | 
				
			||||
                          child: TextBodyLarge( | 
				
			||||
                            l10n.flutterKeyboardVisibilityButton, | 
				
			||||
                            color: Colors.white, | 
				
			||||
                          ), | 
				
			||||
                        ), | 
				
			||||
                      ), | 
				
			||||
                      const SizedBox(height: 20), | 
				
			||||
                      BlockItem( | 
				
			||||
                        title: l10n.flutterKeyboardVisibilityTitleHeight, | 
				
			||||
                        desc: l10n.flutterKeyboardVisibilityDescHeight, | 
				
			||||
                        value: _keyboardHeight, | 
				
			||||
                        builder: (value) => value.toInt().toString(), | 
				
			||||
                      ), | 
				
			||||
                      const SizedBox(height: 20), | 
				
			||||
                      BlockItem( | 
				
			||||
                        title: l10n.flutterKeyboardVisibilityTitle, | 
				
			||||
                        desc: l10n.flutterKeyboardVisibilityDesc, | 
				
			||||
                        stream: model.onChangeKeyboard(), | 
				
			||||
                        builder: (value) => value.toString().toUpperCase(), | 
				
			||||
                      ), | 
				
			||||
                    ], | 
				
			||||
                  ), | 
				
			||||
              ], | 
				
			||||
            ), | 
				
			||||
          ), | 
				
			||||
        ); | 
				
			||||
      }, | 
				
			||||
    ); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,30 @@
					 | 
				
			||||
# Miscellaneous | 
				
			||||
*.class | 
				
			||||
*.log | 
				
			||||
*.pyc | 
				
			||||
*.swp | 
				
			||||
.DS_Store | 
				
			||||
.atom/ | 
				
			||||
.buildlog/ | 
				
			||||
.history | 
				
			||||
.svn/ | 
				
			||||
migrate_working_dir/ | 
				
			||||
 | 
				
			||||
# 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 | 
				
			||||
# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. | 
				
			||||
/pubspec.lock | 
				
			||||
**/doc/api/ | 
				
			||||
.dart_tool/ | 
				
			||||
.packages | 
				
			||||
build/ | 
				
			||||
@ -0,0 +1,30 @@
					 | 
				
			||||
# 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. | 
				
			||||
 | 
				
			||||
version: | 
				
			||||
  revision: 135454af32477f815a7525073027a3ff9eff1bfd | 
				
			||||
  channel: aurora | 
				
			||||
 | 
				
			||||
project_type: plugin | 
				
			||||
 | 
				
			||||
# Tracks metadata for the flutter migrate command | 
				
			||||
migration: | 
				
			||||
  platforms: | 
				
			||||
    - platform: root | 
				
			||||
      create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | 
				
			||||
      base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | 
				
			||||
    - platform: aurora | 
				
			||||
      create_revision: 135454af32477f815a7525073027a3ff9eff1bfd | 
				
			||||
      base_revision: 135454af32477f815a7525073027a3ff9eff1bfd | 
				
			||||
 | 
				
			||||
  # User provided section | 
				
			||||
 | 
				
			||||
  # List of Local paths (relative to this file) that should be | 
				
			||||
  # ignored by the migrate tool. | 
				
			||||
  # | 
				
			||||
  # Files that are not part of the templates will be ignored by default. | 
				
			||||
  unmanaged_files: | 
				
			||||
    - 'lib/main.dart' | 
				
			||||
    - 'ios/Runner.xcodeproj/project.pbxproj' | 
				
			||||
@ -0,0 +1,22 @@
					 | 
				
			||||
{ | 
				
			||||
    "configurations": [ | 
				
			||||
        { | 
				
			||||
            "name": "Linux", | 
				
			||||
            "includePath": [ | 
				
			||||
                "${workspaceFolder}/**", | 
				
			||||
                "/home/keygenqt/AuroraPlatformSDK/targets/AuroraOS-4.0.2-armv7hl.default/usr/lib", | 
				
			||||
                "/home/keygenqt/AuroraPlatformSDK/targets/AuroraOS-4.0.2-armv7hl.default/usr/include", | 
				
			||||
                "/home/keygenqt/AuroraPlatformSDK/targets/AuroraOS-4.0.2-armv7hl.default/usr/include/flutter-embedder", | 
				
			||||
                "/home/keygenqt/AuroraPlatformSDK/targets/AuroraOS-4.0.2-armv7hl.default/usr/include/flutter-embedder/flutter" | 
				
			||||
            ], | 
				
			||||
            "defines": [ | 
				
			||||
                "__ARM_PCS_VFP" | 
				
			||||
            ], | 
				
			||||
            "compilerPath": "/usr/bin/g++", | 
				
			||||
            "cStandard": "c17", | 
				
			||||
            "cppStandard": "c++17", | 
				
			||||
            "intelliSenseMode": "clang-x64" | 
				
			||||
        } | 
				
			||||
    ], | 
				
			||||
    "version": 4 | 
				
			||||
} | 
				
			||||
@ -0,0 +1,60 @@
					 | 
				
			||||
{ | 
				
			||||
    "files.associations": { | 
				
			||||
        "variant": "cpp", | 
				
			||||
        "array": "cpp", | 
				
			||||
        "atomic": "cpp", | 
				
			||||
        "bit": "cpp", | 
				
			||||
        "*.tcc": "cpp", | 
				
			||||
        "cctype": "cpp", | 
				
			||||
        "clocale": "cpp", | 
				
			||||
        "cmath": "cpp", | 
				
			||||
        "compare": "cpp", | 
				
			||||
        "concepts": "cpp", | 
				
			||||
        "cstdarg": "cpp", | 
				
			||||
        "cstddef": "cpp", | 
				
			||||
        "cstdint": "cpp", | 
				
			||||
        "cstdio": "cpp", | 
				
			||||
        "cstdlib": "cpp", | 
				
			||||
        "cwchar": "cpp", | 
				
			||||
        "cwctype": "cpp", | 
				
			||||
        "deque": "cpp", | 
				
			||||
        "list": "cpp", | 
				
			||||
        "map": "cpp", | 
				
			||||
        "string": "cpp", | 
				
			||||
        "unordered_map": "cpp", | 
				
			||||
        "vector": "cpp", | 
				
			||||
        "exception": "cpp", | 
				
			||||
        "algorithm": "cpp", | 
				
			||||
        "functional": "cpp", | 
				
			||||
        "iterator": "cpp", | 
				
			||||
        "memory": "cpp", | 
				
			||||
        "memory_resource": "cpp", | 
				
			||||
        "numeric": "cpp", | 
				
			||||
        "random": "cpp", | 
				
			||||
        "string_view": "cpp", | 
				
			||||
        "system_error": "cpp", | 
				
			||||
        "tuple": "cpp", | 
				
			||||
        "type_traits": "cpp", | 
				
			||||
        "utility": "cpp", | 
				
			||||
        "initializer_list": "cpp", | 
				
			||||
        "iosfwd": "cpp", | 
				
			||||
        "iostream": "cpp", | 
				
			||||
        "istream": "cpp", | 
				
			||||
        "limits": "cpp", | 
				
			||||
        "new": "cpp", | 
				
			||||
        "numbers": "cpp", | 
				
			||||
        "ostream": "cpp", | 
				
			||||
        "stdexcept": "cpp", | 
				
			||||
        "streambuf": "cpp", | 
				
			||||
        "typeinfo": "cpp", | 
				
			||||
        "chrono": "cpp", | 
				
			||||
        "codecvt": "cpp", | 
				
			||||
        "ctime": "cpp", | 
				
			||||
        "ratio": "cpp", | 
				
			||||
        "iomanip": "cpp", | 
				
			||||
        "semaphore": "cpp", | 
				
			||||
        "sstream": "cpp", | 
				
			||||
        "stop_token": "cpp", | 
				
			||||
        "thread": "cpp" | 
				
			||||
    } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,45 @@
					 | 
				
			||||
# flutter_keyboard_visibility_aurora | 
				
			||||
 | 
				
			||||
The Aurora implementation of [flutter_keyboard_visibility](https://pub.dev/packages/flutter_keyboard_visibility). | 
				
			||||
 | 
				
			||||
## Usage | 
				
			||||
This package is not an _endorsed_ implementation of `flutter_keyboard_visibility`. | 
				
			||||
Therefore, you have to include `flutter_local_notifications_aurora` alongside `flutter_keyboard_visibility` as dependencies in your `pubspec.yaml` file. | 
				
			||||
 | 
				
			||||
**pubspec.yaml** | 
				
			||||
 | 
				
			||||
```yaml | 
				
			||||
dependencies: | 
				
			||||
  flutter_keyboard_visibility: 5.4.1 | 
				
			||||
  flutter_keyboard_visibility_aurora: | 
				
			||||
    path: # path to folder with plugin | 
				
			||||
``` | 
				
			||||
 | 
				
			||||
***.dart** | 
				
			||||
 | 
				
			||||
```dart | 
				
			||||
/// Default plugin component | 
				
			||||
final _controller = KeyboardVisibilityController(); | 
				
			||||
 | 
				
			||||
/// Custom platform component with keyboard height | 
				
			||||
final _controllerAurora = FlutterKeyboardVisibilityAurora(); | 
				
			||||
 | 
				
			||||
/// Stream change visibility | 
				
			||||
Stream<bool> onChangeKeyboard() async* { | 
				
			||||
  yield _controller.isVisible; | 
				
			||||
   | 
				
			||||
  await for (final state in _controller.onChange) { | 
				
			||||
    yield state; | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
 | 
				
			||||
/// Stream change height | 
				
			||||
Stream<int> onChangeKeyboardHeight() async* { | 
				
			||||
  yield await _controllerAurora.height; | 
				
			||||
   | 
				
			||||
  await for (final state in _controllerAurora.onChangeHeight) { | 
				
			||||
    yield state; | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
``` | 
				
			||||
 | 
				
			||||
@ -0,0 +1 @@
					 | 
				
			||||
include: package:flutter_lints/flutter.yaml | 
				
			||||
@ -0,0 +1,23 @@
					 | 
				
			||||
cmake_minimum_required(VERSION 3.10) | 
				
			||||
 | 
				
			||||
set(PROJECT_NAME flutter_keyboard_visibility_aurora) | 
				
			||||
set(PLUGIN_NAME  flutter_keyboard_visibility_aurora_platform_plugin) | 
				
			||||
 | 
				
			||||
project(${PROJECT_NAME} LANGUAGES CXX) | 
				
			||||
 | 
				
			||||
set(CMAKE_CXX_STANDARD 17) | 
				
			||||
set(CMAKE_CXX_STANDARD_REQUIRED ON) | 
				
			||||
 | 
				
			||||
set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-psabi") | 
				
			||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3") | 
				
			||||
 | 
				
			||||
find_package(PkgConfig REQUIRED) | 
				
			||||
pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) | 
				
			||||
 | 
				
			||||
add_library(${PLUGIN_NAME} SHARED flutter_keyboard_visibility_aurora_plugin.cpp) | 
				
			||||
 | 
				
			||||
set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) | 
				
			||||
target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::FlutterEmbedder) | 
				
			||||
 | 
				
			||||
target_include_directories(${PLUGIN_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) | 
				
			||||
target_compile_definitions(${PLUGIN_NAME} PRIVATE PLUGIN_IMPL) | 
				
			||||
@ -0,0 +1,83 @@
					 | 
				
			||||
#include <flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora_plugin.h> | 
				
			||||
#include <flutter/method-channel.h> | 
				
			||||
#include <flutter/platform-events.h> | 
				
			||||
#include <flutter/platform-methods.h> | 
				
			||||
#include <thread> | 
				
			||||
 | 
				
			||||
FlutterKeyboardVisibilityAuroraPlugin::FlutterKeyboardVisibilityAuroraPlugin() | 
				
			||||
{ | 
				
			||||
  PlatformEvents::SubscribeKeyboardVisibilityChanged( | 
				
			||||
      [this](bool state) | 
				
			||||
      { | 
				
			||||
        if (this->m_sendEventVisibility) | 
				
			||||
        { | 
				
			||||
          EventChannel("flutter_keyboard_visibility_aurora_state", MethodCodecType::Standard) | 
				
			||||
              .SendEvent(state); | 
				
			||||
        } | 
				
			||||
 | 
				
			||||
        if (this->m_sendEventHeight) | 
				
			||||
        { | 
				
			||||
          EventChannel("flutter_keyboard_visibility_aurora_height", MethodCodecType::Standard) | 
				
			||||
              .SendEvent(PlatformMethods::GetKeyboardHeight()); | 
				
			||||
        } | 
				
			||||
      }); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void FlutterKeyboardVisibilityAuroraPlugin::RegisterWithRegistrar(PluginRegistrar ®istrar) | 
				
			||||
{ | 
				
			||||
  registrar.RegisterMethodChannel("flutter_keyboard_visibility_aurora", | 
				
			||||
                                  MethodCodecType::Standard, | 
				
			||||
                                  [this](const MethodCall &call) | 
				
			||||
                                  { this->onMethodCall(call); }); | 
				
			||||
 | 
				
			||||
  registrar.RegisterEventChannel( | 
				
			||||
      "flutter_keyboard_visibility_aurora_state", | 
				
			||||
      MethodCodecType::Standard, | 
				
			||||
      [this](const Encodable &) | 
				
			||||
      { | 
				
			||||
        this->m_sendEventVisibility = true; | 
				
			||||
        return EventResponse(); | 
				
			||||
      }, | 
				
			||||
      [this](const Encodable &) | 
				
			||||
      { | 
				
			||||
        this->m_sendEventVisibility = false; | 
				
			||||
        return EventResponse(); | 
				
			||||
      }); | 
				
			||||
 | 
				
			||||
  registrar.RegisterEventChannel( | 
				
			||||
      "flutter_keyboard_visibility_aurora_height", | 
				
			||||
      MethodCodecType::Standard, | 
				
			||||
      [this](const Encodable &) | 
				
			||||
      { | 
				
			||||
        this->m_sendEventHeight = true; | 
				
			||||
        return EventResponse(); | 
				
			||||
      }, | 
				
			||||
      [this](const Encodable &) | 
				
			||||
      { | 
				
			||||
        this->m_sendEventHeight = false; | 
				
			||||
        return EventResponse(); | 
				
			||||
      }); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void FlutterKeyboardVisibilityAuroraPlugin::onMethodCall(const MethodCall &call) | 
				
			||||
{ | 
				
			||||
  const auto &method = call.GetMethod(); | 
				
			||||
 | 
				
			||||
  if (method == "getKeyboardHeight") | 
				
			||||
  { | 
				
			||||
    onGetKeyboardHeight(call); | 
				
			||||
    return; | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  unimplemented(call); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void FlutterKeyboardVisibilityAuroraPlugin::onGetKeyboardHeight(const MethodCall &call) | 
				
			||||
{ | 
				
			||||
  call.SendSuccessResponse(PlatformMethods::GetKeyboardHeight()); | 
				
			||||
} | 
				
			||||
 | 
				
			||||
void FlutterKeyboardVisibilityAuroraPlugin::unimplemented(const MethodCall &call) | 
				
			||||
{ | 
				
			||||
  call.SendSuccessResponse(nullptr); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,22 @@
					 | 
				
			||||
#ifndef FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_H | 
				
			||||
#define FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_H | 
				
			||||
 | 
				
			||||
#include <flutter/plugin-interface.h> | 
				
			||||
#include <flutter_keyboard_visibility_aurora/globals.h> | 
				
			||||
 | 
				
			||||
class PLUGIN_EXPORT FlutterKeyboardVisibilityAuroraPlugin final : public PluginInterface | 
				
			||||
{ | 
				
			||||
public: | 
				
			||||
    FlutterKeyboardVisibilityAuroraPlugin(); | 
				
			||||
    void RegisterWithRegistrar(PluginRegistrar ®istrar) override; | 
				
			||||
 | 
				
			||||
private: | 
				
			||||
    bool m_sendEventVisibility = false; | 
				
			||||
    bool m_sendEventHeight = false; | 
				
			||||
 | 
				
			||||
    void onMethodCall(const MethodCall &call); | 
				
			||||
    void onGetKeyboardHeight(const MethodCall &call); | 
				
			||||
    void unimplemented(const MethodCall &call); | 
				
			||||
}; | 
				
			||||
 | 
				
			||||
#endif /* FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_H */ | 
				
			||||
@ -0,0 +1,10 @@
					 | 
				
			||||
#ifndef FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_GLOBALS_H | 
				
			||||
#define FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_GLOBALS_H | 
				
			||||
 | 
				
			||||
#ifdef PLUGIN_IMPL | 
				
			||||
#define PLUGIN_EXPORT __attribute__((visibility("default"))) | 
				
			||||
#else | 
				
			||||
#define PLUGIN_EXPORT | 
				
			||||
#endif | 
				
			||||
 | 
				
			||||
#endif /* FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_GLOBALS_H */ | 
				
			||||
@ -0,0 +1,26 @@
					 | 
				
			||||
import 'package:flutter_keyboard_visibility_platform_interface/flutter_keyboard_visibility_platform_interface.dart'; | 
				
			||||
 | 
				
			||||
import 'flutter_keyboard_visibility_aurora_platform_interface.dart'; | 
				
			||||
 | 
				
			||||
class FlutterKeyboardVisibilityAurora | 
				
			||||
    extends FlutterKeyboardVisibilityPlatform { | 
				
			||||
  /// Factory method that initializes the FlutterKeyboardVisibility plugin | 
				
			||||
  /// platform with an instance of the plugin for Aurora OS. | 
				
			||||
  static void registerWith() { | 
				
			||||
    FlutterKeyboardVisibilityPlatform.instance = | 
				
			||||
        FlutterKeyboardVisibilityAurora(); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  /// Emits changes to keyboard visibility from the platform. | 
				
			||||
  @override | 
				
			||||
  Stream<bool> get onChange => | 
				
			||||
      FlutterKeyboardVisibilityAuroraPlatform.instance.onChangeVisibility(); | 
				
			||||
 | 
				
			||||
  /// Emits changes to keyboard height from the platform. | 
				
			||||
  Stream<double> get onChangeHeight => | 
				
			||||
      FlutterKeyboardVisibilityAuroraPlatform.instance.onChangeHeight(); | 
				
			||||
 | 
				
			||||
  /// Get keyboard height. | 
				
			||||
  Future<double> get height => | 
				
			||||
      FlutterKeyboardVisibilityAuroraPlatform.instance.getKeyboardHeight(); | 
				
			||||
} | 
				
			||||
@ -0,0 +1,33 @@
					 | 
				
			||||
import 'package:flutter/services.dart'; | 
				
			||||
 | 
				
			||||
import 'flutter_keyboard_visibility_aurora_platform_interface.dart'; | 
				
			||||
 | 
				
			||||
/// An implementation of [FlutterKeyboardVisibilityAuroraPlatform] that uses method channels. | 
				
			||||
class MethodChannelFlutterKeyboardVisibilityAurora | 
				
			||||
    extends FlutterKeyboardVisibilityAuroraPlatform { | 
				
			||||
  final methodChannel = | 
				
			||||
      const MethodChannel('flutter_keyboard_visibility_aurora'); | 
				
			||||
 | 
				
			||||
  @override | 
				
			||||
  Future<double> getKeyboardHeight() async { | 
				
			||||
    return await methodChannel.invokeMethod<double>('getKeyboardHeight') ?? 0.0; | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  @override | 
				
			||||
  Stream<bool> onChangeVisibility() async* { | 
				
			||||
    await for (final event | 
				
			||||
        in const EventChannel('flutter_keyboard_visibility_aurora_state') | 
				
			||||
            .receiveBroadcastStream()) { | 
				
			||||
      yield event == true; | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  @override | 
				
			||||
  Stream<double> onChangeHeight() async* { | 
				
			||||
    await for (final event | 
				
			||||
        in const EventChannel('flutter_keyboard_visibility_aurora_height') | 
				
			||||
            .receiveBroadcastStream()) { | 
				
			||||
      yield event as double; | 
				
			||||
    } | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,37 @@
					 | 
				
			||||
import 'package:plugin_platform_interface/plugin_platform_interface.dart'; | 
				
			||||
 | 
				
			||||
import 'flutter_keyboard_visibility_aurora_method_channel.dart'; | 
				
			||||
 | 
				
			||||
abstract class FlutterKeyboardVisibilityAuroraPlatform extends PlatformInterface { | 
				
			||||
  /// Constructs a FlutterKeyboardVisibilityAuroraPlatform. | 
				
			||||
  FlutterKeyboardVisibilityAuroraPlatform() : super(token: _token); | 
				
			||||
 | 
				
			||||
  static final Object _token = Object(); | 
				
			||||
 | 
				
			||||
  static FlutterKeyboardVisibilityAuroraPlatform _instance = MethodChannelFlutterKeyboardVisibilityAurora(); | 
				
			||||
 | 
				
			||||
  /// The default instance of [FlutterKeyboardVisibilityAuroraPlatform] to use. | 
				
			||||
  /// | 
				
			||||
  /// Defaults to [MethodChannelFlutterKeyboardVisibilityAurora]. | 
				
			||||
  static FlutterKeyboardVisibilityAuroraPlatform get instance => _instance; | 
				
			||||
 | 
				
			||||
  /// Platform-specific implementations should set this with their own | 
				
			||||
  /// platform-specific class that extends [FlutterKeyboardVisibilityAuroraPlatform] when | 
				
			||||
  /// they register themselves. | 
				
			||||
  static set instance(FlutterKeyboardVisibilityAuroraPlatform instance) { | 
				
			||||
    PlatformInterface.verifyToken(instance, _token); | 
				
			||||
    _instance = instance; | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  Future<double> getKeyboardHeight() { | 
				
			||||
    throw UnimplementedError('getKeyboardHeight() has not been implemented.'); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  Stream<bool> onChangeVisibility() { | 
				
			||||
    throw UnimplementedError('onChangeVisibility() has not been implemented.'); | 
				
			||||
  } | 
				
			||||
 | 
				
			||||
  Stream<double> onChangeHeight() { | 
				
			||||
    throw UnimplementedError('onChangeHeight() has not been implemented.'); | 
				
			||||
  } | 
				
			||||
} | 
				
			||||
@ -0,0 +1,25 @@
					 | 
				
			||||
name: flutter_keyboard_visibility_aurora | 
				
			||||
description: A new Flutter plugin project. | 
				
			||||
version: 0.0.1 | 
				
			||||
 | 
				
			||||
environment: | 
				
			||||
  sdk: '>=2.18.6 <3.0.0' | 
				
			||||
  flutter: ">=3.0.0" | 
				
			||||
 | 
				
			||||
dependencies: | 
				
			||||
  flutter: | 
				
			||||
    sdk: flutter | 
				
			||||
  plugin_platform_interface: ^2.0.2 | 
				
			||||
  flutter_keyboard_visibility_platform_interface: ^2.0.0 | 
				
			||||
 | 
				
			||||
dev_dependencies: | 
				
			||||
  flutter_test: | 
				
			||||
    sdk: flutter | 
				
			||||
  flutter_lints: ^2.0.0 | 
				
			||||
 | 
				
			||||
flutter: | 
				
			||||
  plugin: | 
				
			||||
    platforms: | 
				
			||||
      aurora: | 
				
			||||
        dartPluginClass: FlutterKeyboardVisibilityAurora | 
				
			||||
        pluginClass: FlutterKeyboardVisibilityAuroraPlugin | 
				
			||||
					Loading…
					
					
				
		Reference in new issue