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