Browse Source

[flutter_example_packages] Done flutter_keyboard_visibility

merge-requests/21/head
Vitaliy Zarubin 2 years ago
parent
commit
daa8e6e51b
  1. 14
      example/lib/l10n/app_en.arb
  2. 18
      example/lib/l10n/app_ru.arb
  3. 53
      example/lib/packages/flutter_keyboard_visibility/model.dart
  4. 27
      example/lib/packages/flutter_keyboard_visibility/package.dart
  5. 108
      example/lib/packages/flutter_keyboard_visibility/page.dart
  6. 2
      example/lib/packages/packages.dart
  7. 1
      example/lib/widgets/blocks/block_info_package.dart
  8. 49
      example/pubspec.lock
  9. 5
      example/pubspec.yaml
  10. 30
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.gitignore
  11. 30
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.metadata
  12. 22
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/c_cpp_properties.json
  13. 60
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/settings.json
  14. 45
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/README.md
  15. 1
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/analysis_options.yaml
  16. 23
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/CMakeLists.txt
  17. 83
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/flutter_keyboard_visibility_aurora_plugin.cpp
  18. 22
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora_plugin.h
  19. 10
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/globals.h
  20. 26
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora.dart
  21. 33
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_method_channel.dart
  22. 37
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_platform_interface.dart
  23. 25
      packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/pubspec.yaml
  24. 6
      packages/package_info_plus/package_info_plus_aurora/aurora/package_info_plus_aurora_plugin.cpp

14
example/lib/l10n/app_en.arb

@ -9,9 +9,13 @@
"batteryPlusTitleBatteryStateLive": "Battery State 'Live'",
"batteryPlusDescBatteryStateLive": "Battery change state stream.",
"@_CACHED_NETWORK_IMAGE": {},
"cachedNetworkImageTitle": "Title",
"cachedNetworkImageDesc": "Desc",
"@_FLUTTER_KEYBOARD_VISIBILITY": {},
"flutterKeyboardVisibilityTitle": "Keyboard",
"flutterKeyboardVisibilityDesc": "Stream state keyboard open/close",
"flutterKeyboardVisibilityTitleHeight": "Keyboard height",
"flutterKeyboardVisibilityDescHeight": "Stream state keyboard height",
"flutterKeyboardVisibilityField": "Click for focus",
"flutterKeyboardVisibilityButton": "Clear focus",
"@_DEVICE_INFO_PLUS": {},
"deviceInfoPlusTitleID": "ID",
@ -51,10 +55,6 @@
"deviceInfoPlusTitleDeviceModel": "Device",
"deviceInfoPlusDescDeviceModel": "Device name model.",
"@_FLUTTER_CACHE_MANAGER": {},
"flutterCacheManagerTitle": "Title",
"flutterCacheManagerDesc": "Desc",
"@_FLUTTER_LOCAL_NOTIFICATIONS": {},
"flutterLocalNotificationsHintTitle": "Notification title",
"flutterLocalNotificationsHintBody": "Notification body",

18
example/lib/l10n/app_ru.arb

@ -9,7 +9,15 @@
"batteryPlusTitleBatteryStateLive": "Состояние батареи 'Live'",
"batteryPlusDescBatteryStateLive": "Изменение состояния батареи.",
"@_CACHED_NETWORK_IMAGE": {},
"@_FLUTTER_KEYBOARD_VISIBILITY": {},
"flutterKeyboardVisibilityTitle": "Клавиатура",
"flutterKeyboardVisibilityDesc": "Сигнал при изменении состояния клавиатуры открыта/закрыта",
"flutterKeyboardVisibilityTitleHeight": "Высота клавиатуры",
"flutterKeyboardVisibilityDescHeight": "Сигнал при изменении высоты клавиатуры",
"flutterKeyboardVisibilityField": "Нажмите, чтобы сфокусироваться",
"flutterKeyboardVisibilityButton": "Снять фокус",
"@_DEVICE_INFO_PLUS": {},
"deviceInfoPlusTitleID": "ID",
"deviceInfoPlusDescID": "Идентификатор устройства.",
"deviceInfoPlusTitleName": "Имя",
@ -47,14 +55,6 @@
"deviceInfoPlusTitleDeviceModel": "Устройство",
"deviceInfoPlusDescDeviceModel": "Имя модели устройства.",
"@_DEVICE_INFO_PLUS": {},
"deviceInfoPlusTitle": "Заголовок",
"deviceInfoPlusDesc": "Описание",
"@_FLUTTER_CACHE_MANAGER": {},
"flutterCacheManagerTitle": "Заголовок",
"flutterCacheManagerDesc": "Описание",
"@_FLUTTER_LOCAL_NOTIFICATIONS": {},
"flutterLocalNotificationsHintTitle": "Заголовок уведомления",
"flutterLocalNotificationsHintBody": "Текст уведомления",

53
example/lib/packages/flutter_keyboard_visibility/model.dart

@ -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();
}
}
}

27
example/lib/packages/flutter_keyboard_visibility/package.dart

@ -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());
},
);

108
example/lib/packages/flutter_keyboard_visibility/page.dart

@ -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(),
),
],
),
],
),
),
);
},
);
}
}

2
example/lib/packages/packages.dart

@ -24,6 +24,7 @@ import 'package:flutter_example_packages/packages/wakelock/package.dart';
import 'package:flutter_example_packages/packages/xdga_directories/package.dart';
import 'crypto/package.dart';
import 'flutter_keyboard_visibility/package.dart';
/// List app packages
final packages = <Package>[
@ -33,6 +34,7 @@ final packages = <Package>[
packageCupertinoIcons,
packageDeviceInfoPlus,
packageFlutterCacheManager,
packageFlutterKeyboardVisibility,
packageFlutterLocalNotifications,
packageFlutterSecureStorage,
packageGetIt,

1
example/lib/widgets/blocks/block_info_package.dart

@ -32,6 +32,7 @@ class BlockInfoPackage extends AppStatelessWidget {
borderRadius: AppRadius.small,
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextBodyMedium(package.desc),
const SizedBox(height: 8),

49
example/pubspec.lock

@ -290,6 +290,55 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "3.3.0"
flutter_keyboard_visibility:
dependency: "direct main"
description:
name: flutter_keyboard_visibility
url: "https://pub.dartlang.org"
source: hosted
version: "5.4.1"
flutter_keyboard_visibility_aurora:
dependency: "direct main"
description:
path: "../packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora"
relative: true
source: path
version: "0.0.1"
flutter_keyboard_visibility_linux:
dependency: transitive
description:
name: flutter_keyboard_visibility_linux
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
flutter_keyboard_visibility_macos:
dependency: transitive
description:
name: flutter_keyboard_visibility_macos
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
flutter_keyboard_visibility_platform_interface:
dependency: transitive
description:
name: flutter_keyboard_visibility_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
flutter_keyboard_visibility_web:
dependency: transitive
description:
name: flutter_keyboard_visibility_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
flutter_keyboard_visibility_windows:
dependency: transitive
description:
name: flutter_keyboard_visibility_windows
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.0"
flutter_lints:
dependency: "direct dev"
description:

5
example/pubspec.yaml

@ -116,6 +116,11 @@ dependencies:
ref: flutter_example_packages
path: packages/wakelock/wakelock_aurora
## https://pub.dev/packages/flutter_keyboard_visibility
flutter_keyboard_visibility: ^5.4.1
flutter_keyboard_visibility_aurora:
path: ../packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora
dev_dependencies:
flutter_test:
sdk:

30
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.gitignore vendored

@ -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/

30
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.metadata

@ -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'

22
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/c_cpp_properties.json vendored

@ -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
}

60
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/settings.json vendored

@ -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"
}
}

45
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/README.md

@ -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;
}
}
```

1
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/analysis_options.yaml

@ -0,0 +1 @@
include: package:flutter_lints/flutter.yaml

23
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/CMakeLists.txt

@ -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)

83
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/flutter_keyboard_visibility_aurora_plugin.cpp

@ -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 &registrar)
{
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);
}

22
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora_plugin.h

@ -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 &registrar) 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 */

10
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/globals.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 */

26
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora.dart

@ -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();
}

33
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_method_channel.dart

@ -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;
}
}
}

37
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_platform_interface.dart

@ -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.');
}
}

25
packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/pubspec.yaml

@ -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

6
packages/package_info_plus/package_info_plus_aurora/aurora/package_info_plus_aurora_plugin.cpp

@ -4,7 +4,7 @@
*/
#include <package_info_plus_aurora/package_info_plus_aurora_plugin.h>
#include <flutter/method-channel.h>
#include <flutter/application.h>
#include <flutter/platform-methods.h>
#include <sys/utsname.h>
void PackageInfoPlusAuroraPlugin::RegisterWithRegistrar(PluginRegistrar &registrar)
@ -33,12 +33,12 @@ void PackageInfoPlusAuroraPlugin::onMethodCall(const MethodCall &call)
void PackageInfoPlusAuroraPlugin::onGetApplicationOrg(const MethodCall &call)
{
call.SendSuccessResponse(Application::GetID().orgname);
call.SendSuccessResponse(PlatformMethods::GetOrgname());
}
void PackageInfoPlusAuroraPlugin::onGetApplicationName(const MethodCall &call)
{
call.SendSuccessResponse(Application::GetID().appname);
call.SendSuccessResponse(PlatformMethods::GetAppname());
}
void PackageInfoPlusAuroraPlugin::unimplemented(const MethodCall &call)

Loading…
Cancel
Save