Browse Source

Merge branch 'flutter-aurora-current'

master
Vitaliy Zarubin 1 year ago
parent
commit
8388511327
  1. 32
      README.md
  2. 2
      example/aurora/desktop/ru.auroraos.flutter_example_packages.desktop
  3. 2
      example/aurora/main.cpp
  4. 1
      example/aurora/rpm/ru.auroraos.flutter_example_packages.spec
  5. 22
      example/lib/l10n/app_en.arb
  6. 22
      example/lib/l10n/app_ru.arb
  7. 2
      example/lib/packages/battery_plus/package.dart
  8. 2
      example/lib/packages/build_runner/package.dart
  9. 2
      example/lib/packages/cached_network_image/package.dart
  10. 2
      example/lib/packages/crypto/package.dart
  11. 2
      example/lib/packages/cupertino_icons/package.dart
  12. 2
      example/lib/packages/device_info_plus/package.dart
  13. 2
      example/lib/packages/flutter_cache_manager/package.dart
  14. 2
      example/lib/packages/flutter_keyboard_visibility/page.dart
  15. 2
      example/lib/packages/flutter_local_notifications/package.dart
  16. 2
      example/lib/packages/flutter_markdown/package.dart
  17. 2
      example/lib/packages/flutter_secure_storage/package.dart
  18. 2
      example/lib/packages/freezed/package.dart
  19. 2
      example/lib/packages/freezed_annotation/package.dart
  20. 2
      example/lib/packages/get_it/package.dart
  21. 2
      example/lib/packages/google_fonts/package.dart
  22. 2
      example/lib/packages/intl/package.dart
  23. 2
      example/lib/packages/json_annotation/package.dart
  24. 2
      example/lib/packages/json_serializable/package.dart
  25. 2
      example/lib/packages/package_info_plus/package.dart
  26. 4
      example/lib/packages/packages.dart
  27. 2
      example/lib/packages/path/package.dart
  28. 2
      example/lib/packages/path_provider/package.dart
  29. 2
      example/lib/packages/qr_flutter/package.dart
  30. 11
      example/lib/packages/sensors_plus/model.dart
  31. 26
      example/lib/packages/sensors_plus/package.dart
  32. 209
      example/lib/packages/sensors_plus/page.dart
  33. 2
      example/lib/packages/sqflite/package.dart
  34. 2
      example/lib/packages/universal_io/package.dart
  35. 42
      example/lib/packages/wakelock_plus/model.dart
  36. 26
      example/lib/packages/wakelock_plus/package.dart
  37. 89
      example/lib/packages/wakelock_plus/page.dart
  38. 10
      example/lib/widgets/blocks/block_item.dart
  39. 20
      example/pubspec.yaml
  40. 30
      packages/sensors_plus/sensors_plus_aurora/.gitignore
  41. 30
      packages/sensors_plus/sensors_plus_aurora/.metadata
  42. 138
      packages/sensors_plus/sensors_plus_aurora/README.md
  43. 4
      packages/sensors_plus/sensors_plus_aurora/analysis_options.yaml
  44. 34
      packages/sensors_plus/sensors_plus_aurora/aurora/CMakeLists.txt
  45. 15
      packages/sensors_plus/sensors_plus_aurora/aurora/include/sensors_plus_aurora/globals.h
  46. 82
      packages/sensors_plus/sensors_plus_aurora/aurora/include/sensors_plus_aurora/sensors_plus_aurora_plugin.h
  47. 493
      packages/sensors_plus/sensors_plus_aurora/aurora/sensors_plus_aurora_plugin.cpp
  48. 11
      packages/sensors_plus/sensors_plus_aurora/lib/events/als_event.dart
  49. 13
      packages/sensors_plus/sensors_plus_aurora/lib/events/compass_event.dart
  50. 25
      packages/sensors_plus/sensors_plus_aurora/lib/events/orientation_event.dart
  51. 11
      packages/sensors_plus/sensors_plus_aurora/lib/events/proximity_event.dart
  52. 53
      packages/sensors_plus/sensors_plus_aurora/lib/events/tap_event.dart
  53. 93
      packages/sensors_plus/sensors_plus_aurora/lib/sensors_plus_aurora.dart
  54. 148
      packages/sensors_plus/sensors_plus_aurora/lib/sensors_plus_aurora_method_channel.dart
  55. 66
      packages/sensors_plus/sensors_plus_aurora/lib/sensors_plus_aurora_platform_interface.dart
  56. 28
      packages/sensors_plus/sensors_plus_aurora/pubspec.yaml
  57. 2
      packages/shared_preferences/shared_preferences_aurora/lib/shared_preferences_aurora_api.dart
  58. 12
      packages/sqflite/sqflite_aurora/README.md
  59. 30
      packages/wakelock_plus/wakelock_plus_aurora/.gitignore
  60. 32
      packages/wakelock_plus/wakelock_plus_aurora/README.md
  61. 4
      packages/wakelock_plus/wakelock_plus_aurora/analysis_options.yaml
  62. 10
      packages/wakelock_plus/wakelock_plus_aurora/data/com.nokia.mce.request.xml
  63. 20
      packages/wakelock_plus/wakelock_plus_aurora/lib/com_nokia_mce_request.dart
  64. 40
      packages/wakelock_plus/wakelock_plus_aurora/lib/wakelock_plus_aurora.dart
  65. 28
      packages/wakelock_plus/wakelock_plus_aurora/pubspec.yaml

32
README.md

@ -25,21 +25,23 @@
Список платформо-зависимых плагинов созданных для ОС Аврора либо зависящих от платформо-зависимых плагинов ОС Аврора. Список платформо-зависимых плагинов созданных для ОС Аврора либо зависящих от платформо-зависимых плагинов ОС Аврора.
| Плагин ОС Аврора | Версия | Внешний плагин | Версия | Версия ОС Аврора | | Плагин ОС Аврора | Версия | Внешний плагин | Версия | Версия ОС Аврора |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|-------------------------------------------------------------------------------------|----------|--------------------| |----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------|-------------------------------------------------------------------------------------|-----------|------------------|
| [battery_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/battery_plus/battery_plus_aurora) | `0.0.1` | [battery_plus](https://pub.dev/packages/battery_plus) | `4.0.2` | `4.0.2.269` | | [battery_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/battery_plus/battery_plus_aurora) | `0.0.1` | [battery_plus](https://pub.dev/packages/battery_plus) | `4.0.2` | `4.0.2.269` |
| [device_info_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/device_info_plus/device_info_plus_aurora) | `0.0.1` | [device_info_plus](https://pub.dev/packages/device_info_plus) | `9.0.3` | `4.0.2.269` | | [device_info_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/device_info_plus/device_info_plus_aurora) | `0.0.1` | [device_info_plus](https://pub.dev/packages/device_info_plus) | `9.0.3` | `4.0.2.269` |
| [flutter_keyboard_visibility_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora) | `0.0.1` | [flutter_keyboard_visibility](https://pub.dev/packages/flutter_keyboard_visibility) | `5.4.1` | `4.0.2.269` | | [flutter_keyboard_visibility_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora) | `0.0.1` | [flutter_keyboard_visibility](https://pub.dev/packages/flutter_keyboard_visibility) | `5.4.1` | `4.0.2.269` |
| [flutter_local_notifications_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/flutter_local_notifications/flutter_local_notifications_aurora) | `0.0.1` | [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) | `15.1.1` | `4.0.2.269` | | [flutter_local_notifications_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/flutter_local_notifications/flutter_local_notifications_aurora) | `0.0.1` | [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) | `15.1.1` | `4.0.2.269` |
| [flutter_secure_storage_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/flutter_secure_storage/flutter_secure_storage_aurora) | `0.0.1` | [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) | `9.0.0` | `4.0.2.269` | | [flutter_secure_storage_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/flutter_secure_storage/flutter_secure_storage_aurora) | `0.0.1` | [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) | `9.0.0` | `4.0.2.269` |
| [package_info_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/package_info_plus/package_info_plus_aurora) | `0.0.1` | [package_info_plus](https://pub.dev/packages/package_info_plus) | `4.1.0` | `4.0.2.269` | | [package_info_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/package_info_plus/package_info_plus_aurora) | `0.0.1` | [package_info_plus](https://pub.dev/packages/package_info_plus) | `4.1.0` | `4.0.2.269` |
| [path_provider_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/path_provider/path_provider_aurora) | `0.0.1` | [path_provider](https://pub.dev/packages/path_provider) | `2.1.1` | `4.0.2.269` | | [path_provider_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/path_provider/path_provider_aurora) | `0.0.1` | [path_provider](https://pub.dev/packages/path_provider) | `2.1.1` | `4.0.2.269` |
| [shared_preferences_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/shared_preferences/shared_preferences_aurora) | `0.0.1` | [shared_preferences](https://pub.dev/packages/shared_preferences) | `2.1.2` | `4.0.2.269` | | [sensors_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/sensors_plus/sensors_plus_aurora) | `0.0.1` | [sensors_plus](https://pub.dev/packages/sensors_plus) | `3.1.0` | `4.0.2.269` |
| [sqflite_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/sqflite/sqflite_aurora) | `0.0.1` | [sqflite](https://pub.dev/packages/sqflite) | `2.3.0` | `4.0.2.269` | | [shared_preferences_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/shared_preferences/shared_preferences_aurora) | `0.0.1` | [shared_preferences](https://pub.dev/packages/shared_preferences) | `2.1.2` | `4.0.2.269` |
| [xdga_directories](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/xdga_directories) | `0.0.1` | - | - | `4.0.2.269` | | [sqflite_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/sqflite/sqflite_aurora) | `0.0.1` | [sqflite](https://pub.dev/packages/sqflite) | `2.3.0` | `4.0.2.269` |
| - | - | [flutter_cache_manager](https://pub.dev/packages/flutter_cache_manager) | `3.3.1` | `4.0.2.269` | | [wakelock_plus_aurora](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/wakelock_plus/wakelock_plus_aurora) | `0.0.1` | [wakelock_plus](https://pub.dev/packages/wakelock_plus) | `1.1.1` | `4.0.2.269` |
| - | - | [cached_network_image](https://pub.dev/packages/cached_network_image) | `3.3.0` | `4.0.2.269` | | [xdga_directories](https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/xdga_directories) | `0.0.1` | - | - | `4.0.2.269` |
| - | - | [google_fonts](https://pub.dev/packages/google_fonts) | `6.1.0` | `4.0.2.269` | | - | - | [flutter_cache_manager](https://pub.dev/packages/flutter_cache_manager) | `3.3.1` | `4.0.2.269` |
| - | - | [cached_network_image](https://pub.dev/packages/cached_network_image) | `3.3.0` | `4.0.2.269` |
| - | - | [google_fonts](https://pub.dev/packages/google_fonts) | `6.1.0` | `4.0.2.269` |
## Пакеты Flutter ## Пакеты Flutter

2
example/aurora/desktop/ru.auroraos.flutter_example_packages.desktop

@ -7,6 +7,6 @@ Exec=/usr/bin/ru.auroraos.flutter_example_packages
X-Nemo-Application-Type=silica-qt5 X-Nemo-Application-Type=silica-qt5
[X-Application] [X-Application]
Permissions=DeviceInfo;UserDirs Permissions=DeviceInfo;UserDirs;Sensors
OrganizationName=ru.auroraos OrganizationName=ru.auroraos
ApplicationName=flutter_example_packages ApplicationName=flutter_example_packages

2
example/aurora/main.cpp

@ -3,10 +3,12 @@
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
#include <flutter/application.h> #include <flutter/application.h>
#include <flutter/compatibility.h>
#include "generated_plugin_registrant.h" #include "generated_plugin_registrant.h"
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
Application::Initialize(argc, argv); Application::Initialize(argc, argv);
EnableQtCompatibility();
RegisterPlugins(); RegisterPlugins();
Application::Launch(); Application::Launch();
return 0; return 0;

1
example/aurora/rpm/ru.auroraos.flutter_example_packages.spec

@ -11,6 +11,7 @@ Source0: %{name}-%{version}.tar.zst
BuildRequires: cmake BuildRequires: cmake
BuildRequires: pkgconfig(sqlite3) BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(flutter-embedder) BuildRequires: pkgconfig(flutter-embedder)
BuildRequires: pkgconfig(sensord-qt5)
%description %description
%{summary}. %{summary}.

22
example/lib/l10n/app_en.arb

@ -1,4 +1,24 @@
{ {
"@_SENSORS_PLUS": {},
"sensorsPlusTitleOrientation": "Orientation",
"sensorsPlusTitleAccelerometer": "Accelerometer",
"sensorsPlusTitleCompass": "Compass",
"sensorsPlusTitleTap": "Tap",
"sensorsPlusTitleALS": "ALS",
"sensorsPlusTitleProximity": "Proximity",
"sensorsPlusTitleGyroscope": "Gyroscope",
"sensorsPlusTitleMagnetometer": "Magnetometer",
"sensorsPlusNotFound": "Sensor not found",
"sensorsPlusSubtitle": "Sensor key: {name}",
"@sensorsPlusSubtitle": {
"placeholders": {
"name": {
"type": "String",
"example": "orientationsensor"
}
}
},
"@_PROVIDER": {}, "@_PROVIDER": {},
"providerTitle": "Provider", "providerTitle": "Provider",
"providerSubtitle": "Simple example use provider package", "providerSubtitle": "Simple example use provider package",
@ -169,7 +189,7 @@
}, },
"@_WAKELOCK": {}, "@_WAKELOCK": {},
"wakelockTitle": "Wakelock", "wakelockTitle": "Lock",
"wakelockDesc": "The plugin allows you to enable and toggle the screen wakelock, which prevents the screen from turning off automatically.", "wakelockDesc": "The plugin allows you to enable and toggle the screen wakelock, which prevents the screen from turning off automatically.",
"@_XDGA_DIRECTORIES": {}, "@_XDGA_DIRECTORIES": {},

22
example/lib/l10n/app_ru.arb

@ -1,4 +1,24 @@
{ {
"@_SENSORS_PLUS": {},
"sensorsPlusTitleOrientation": "Ориентация",
"sensorsPlusTitleAccelerometer": "Акселерометр",
"sensorsPlusTitleCompass": "Компас",
"sensorsPlusTitleTap": "Датчик движения",
"sensorsPlusTitleALS": "ALS",
"sensorsPlusTitleProximity": "Датчик приближения",
"sensorsPlusTitleGyroscope": "Гироскоп",
"sensorsPlusTitleMagnetometer": "Магнитометр",
"sensorsPlusNotFound": "Датчик не найден",
"sensorsPlusSubtitle": "Ключ датчика: {name}",
"@sensorsPlusSubtitle": {
"placeholders": {
"name": {
"type": "String",
"example": "orientationsensor"
}
}
},
"@_PROVIDER": {}, "@_PROVIDER": {},
"providerTitle": "Provider", "providerTitle": "Provider",
"providerSubtitle": "Простой пример использования пакета provider", "providerSubtitle": "Простой пример использования пакета provider",
@ -161,7 +181,7 @@
"sharedPreferencesFieldError": "Пожалуйста, введите {value} значение", "sharedPreferencesFieldError": "Пожалуйста, введите {value} значение",
"@_WAKELOCK": {}, "@_WAKELOCK": {},
"wakelockTitle": "Wakelock", "wakelockTitle": "Блокировка",
"wakelockDesc": "Плагин позволяет включать и переключать блокировку экрана, которая предотвращает автоматическое выключение экрана.", "wakelockDesc": "Плагин позволяет включать и переключать блокировку экрана, которая предотвращает автоматическое выключение экрана.",
"@_XDGA_DIRECTORIES": {}, "@_XDGA_DIRECTORIES": {},

2
example/lib/packages/battery_plus/package.dart

@ -17,7 +17,7 @@ final packageBatteryPlus = PackagePage(
Плагин Flutter для доступа к различной информации о Плагин Flutter для доступа к различной информации о
аккумулятор устройства, на котором запущено приложение. аккумулятор устройства, на котором запущено приложение.
''', ''',
version: '4.0.1', version: '4.0.2',
isPlatformDependent: true, isPlatformDependent: true,
page: () => BatteryPlusPage(), page: () => BatteryPlusPage(),
init: () { init: () {

2
example/lib/packages/build_runner/package.dart

@ -24,6 +24,6 @@ final packageBuildRunner = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '2.3.3', version: '2.4.6',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/cached_network_image/package.dart

@ -17,7 +17,7 @@ final packageCachedNetworkImage = PackagePage(
Библиотека флаттера для отображения изображений из Библиотека флаттера для отображения изображений из
Интернета и хранения их в каталоге кеша. Интернета и хранения их в каталоге кеша.
''', ''',
version: '3.2.3', version: '3.3.0',
isPlatformDependent: true, isPlatformDependent: true,
page: () => CachedNetworkImagePage(), page: () => CachedNetworkImagePage(),
init: () { init: () {

2
example/lib/packages/crypto/package.dart

@ -19,6 +19,6 @@ final packageCrypto = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '3.0.2', version: '3.0.3',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/cupertino_icons/package.dart

@ -21,6 +21,6 @@ final packageCupertinoIcons = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '1.0.5', version: '1.0.6',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/device_info_plus/package.dart

@ -15,7 +15,7 @@ final packageDeviceInfoPlus = PackagePage(
descRU: ''' descRU: '''
Получите текущую информацию об устройстве из приложения Flutter. Получите текущую информацию об устройстве из приложения Flutter.
''', ''',
version: '8.2.2', version: '9.0.3',
isPlatformDependent: true, isPlatformDependent: true,
page: () => DeviceInfoPlusPage(), page: () => DeviceInfoPlusPage(),
init: () { init: () {

2
example/lib/packages/flutter_cache_manager/package.dart

@ -21,6 +21,6 @@ final packageFlutterCacheManager = PackageDialog(
Это плагин зависимый от платформы, используется в плагине Это плагин зависимый от платформы, используется в плагине
cached_network_image, должен работать и у вас. cached_network_image, должен работать и у вас.
''', ''',
version: '3.3.0', version: '3.3.1',
isPlatformDependent: true, isPlatformDependent: true,
); );

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

@ -99,7 +99,7 @@ class _FlutterKeyboardVisibilityPageState
title: l10n.flutterKeyboardVisibilityTitleHeight, title: l10n.flutterKeyboardVisibilityTitleHeight,
desc: l10n.flutterKeyboardVisibilityDescHeight, desc: l10n.flutterKeyboardVisibilityDescHeight,
value: _keyboardHeight, value: _keyboardHeight,
builder: (value) => value.toInt().toString(), builder: (value) => value?.toInt().toString(),
), ),
), ),
const SizedBox(height: 20), const SizedBox(height: 20),

2
example/lib/packages/flutter_local_notifications/package.dart

@ -15,7 +15,7 @@ final packageFlutterLocalNotifications = PackagePage(
descRU: ''' descRU: '''
Кроссплатформенный плагин для отображения локальных уведомлений. Кроссплатформенный плагин для отображения локальных уведомлений.
''', ''',
version: '14.1.1', version: '15.1.1',
isPlatformDependent: true, isPlatformDependent: true,
page: () => FlutterLocalNotificationsPage(), page: () => FlutterLocalNotificationsPage(),
init: () { init: () {

2
example/lib/packages/flutter_markdown/package.dart

@ -17,7 +17,7 @@ final packageFlutterMarkdown = PackagePage(
Рендерер уценки для Flutter. Он поддерживает исходный формат, Рендерер уценки для Flutter. Он поддерживает исходный формат,
но не поддерживает встроенный HTML. но не поддерживает встроенный HTML.
''', ''',
version: '0.6.15', version: '0.6.17+4',
isPlatformDependent: false, isPlatformDependent: false,
page: () => FlutterMarkdownPage(), page: () => FlutterMarkdownPage(),
init: () { init: () {

2
example/lib/packages/flutter_secure_storage/package.dart

@ -15,7 +15,7 @@ final packageFlutterSecureStorage = PackagePage(
descRU: ''' descRU: '''
Flutter Secure Storage предоставляет API для хранения данных в безопасном хранилище. Flutter Secure Storage предоставляет API для хранения данных в безопасном хранилище.
''', ''',
version: '8.0.0', version: '9.0.0',
isPlatformDependent: true, isPlatformDependent: true,
page: () => FlutterSecureStoragePage(), page: () => FlutterSecureStoragePage(),
init: () { init: () {

2
example/lib/packages/freezed/package.dart

@ -16,7 +16,7 @@ final packageFreezed = PackagePage(
Генератор кода для классов данных/объединений/сопоставления Генератор кода для классов данных/объединений/сопоставления
с образцом/клонирования. с образцом/клонирования.
''', ''',
version: '2.3.3', version: '2.4.3',
isPlatformDependent: false, isPlatformDependent: false,
page: () => FreezedPage(), page: () => FreezedPage(),
init: () { init: () {

2
example/lib/packages/freezed_annotation/package.dart

@ -19,6 +19,6 @@ final packageFreezedAnnotation = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении в Это плагин независимый от платформы, используется в этом приложении в
демострации работы плагина freezed. демострации работы плагина freezed.
''', ''',
version: '2.2.0', version: '2.4.1',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/get_it/package.dart

@ -21,6 +21,6 @@ final packageGetIt = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '7.6.0', version: '7.6.4',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/google_fonts/package.dart

@ -19,6 +19,6 @@ final packageGoogleFonts = PackageDialog(
Это плагин зависимый от платформы, используется в этом приложении, Это плагин зависимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '4.0.4', version: '6.1.0',
isPlatformDependent: true, isPlatformDependent: true,
); );

2
example/lib/packages/intl/package.dart

@ -23,6 +23,6 @@ final packageIntl = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '0.17.0', version: '0.18.1',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/json_annotation/package.dart

@ -21,6 +21,6 @@ final packageJsonAnnotation = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении в Это плагин независимый от платформы, используется в этом приложении в
демострации работы плагина freezed. демострации работы плагина freezed.
''', ''',
version: '4.8.0', version: '4.8.1',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/json_serializable/package.dart

@ -19,6 +19,6 @@ final packageJsonSerializable = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении в Это плагин независимый от платформы, используется в этом приложении в
демострации работы плагина freezed. демострации работы плагина freezed.
''', ''',
version: '6.6.1', version: '6.7.1',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/package_info_plus/package.dart

@ -17,7 +17,7 @@ final packagePackageInfoPlus = PackagePage(
Этот плагин Flutter предоставляет API для запроса информации о Этот плагин Flutter предоставляет API для запроса информации о
пакете приложения. пакете приложения.
''', ''',
version: '3.1.2', version: '4.1.0',
isPlatformDependent: true, isPlatformDependent: true,
page: () => PackageInfoPlusPage(), page: () => PackageInfoPlusPage(),
init: () { init: () {

4
example/lib/packages/packages.dart

@ -29,9 +29,11 @@ import 'package:flutter_example_packages/packages/provider/package.dart';
import 'package:flutter_example_packages/packages/qr_flutter/package.dart'; import 'package:flutter_example_packages/packages/qr_flutter/package.dart';
import 'package:flutter_example_packages/packages/rxdart/package.dart'; import 'package:flutter_example_packages/packages/rxdart/package.dart';
import 'package:flutter_example_packages/packages/scoped_model/package.dart'; import 'package:flutter_example_packages/packages/scoped_model/package.dart';
import 'package:flutter_example_packages/packages/sensors_plus/package.dart';
import 'package:flutter_example_packages/packages/shared_preferences/package.dart'; import 'package:flutter_example_packages/packages/shared_preferences/package.dart';
import 'package:flutter_example_packages/packages/sqflite/package.dart'; import 'package:flutter_example_packages/packages/sqflite/package.dart';
import 'package:flutter_example_packages/packages/universal_io/package.dart'; import 'package:flutter_example_packages/packages/universal_io/package.dart';
import 'package:flutter_example_packages/packages/wakelock_plus/package.dart';
import 'package:flutter_example_packages/packages/xdga_directories/package.dart'; import 'package:flutter_example_packages/packages/xdga_directories/package.dart';
/// List app packages /// List app packages
@ -64,8 +66,10 @@ final packages = <Package>[
packageQrFlutter, packageQrFlutter,
packageRxdart, packageRxdart,
packageScopedModel, packageScopedModel,
packageSensorsPlus,
packageSharedPreferences, packageSharedPreferences,
packageSqflite, packageSqflite,
packageUniversalIO, packageUniversalIO,
packageWakelockPlus,
packageXdgaDirectories, packageXdgaDirectories,
]; ];

2
example/lib/packages/path/package.dart

@ -19,6 +19,6 @@ final packagePath = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '1.8.2', version: '1.8.3',
isPlatformDependent: false, isPlatformDependent: false,
); );

2
example/lib/packages/path_provider/package.dart

@ -19,7 +19,7 @@ final packagePathProvider = PackagePage(
Поддерживает Android, iOS, Linux, macOS, Windows и ОС Aurora. Поддерживает Android, iOS, Linux, macOS, Windows и ОС Aurora.
Не все методы поддерживаются на всех платформах. Не все методы поддерживаются на всех платформах.
''', ''',
version: '2.0.15', version: '2.1.1',
isPlatformDependent: true, isPlatformDependent: true,
page: () => PathProviderPage(), page: () => PathProviderPage(),
init: () { init: () {

2
example/lib/packages/qr_flutter/package.dart

@ -17,7 +17,7 @@ final packageQrFlutter = PackagePage(
ПQR.Flutter это библиотека Flutter для простого и быстрого рендеринга ПQR.Flutter это библиотека Flutter для простого и быстрого рендеринга
QR-кода с помощью виджета или пользовательского рисовальщика. QR-кода с помощью виджета или пользовательского рисовальщика.
''', ''',
version: '4.0.0', version: '4.1.0',
isPlatformDependent: false, isPlatformDependent: false,
page: () => QrFlutterPage(), page: () => QrFlutterPage(),
init: () { init: () {

11
example/lib/packages/sensors_plus/model.dart

@ -0,0 +1,11 @@
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/widgets.dart';
import 'package:scoped_model/scoped_model.dart';
/// Model for [SensorsPlusPage]
class SensorsPlusModel extends Model {
/// Get [ScopedModel]
static SensorsPlusModel of(BuildContext context) =>
ScopedModel.of<SensorsPlusModel>(context);
}

26
example/lib/packages/sensors_plus/package.dart

@ -0,0 +1,26 @@
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter_example_packages/base/package/package_page.dart';
import 'package:get_it/get_it.dart';
import 'model.dart';
import 'page.dart';
/// Package values
final packageSensorsPlus = PackagePage(
key: 'sensors_plus',
descEN: '''
A Flutter plugin to access the accelerometer, gyroscope,
magnetometer sensors, etc.
''',
descRU: '''
Плагин Flutter для доступа к датчикам акселерометра,
гироскопа, магнитометра и т.д.
''',
version: '3.1.0',
isPlatformDependent: true,
page: () => SensorsPlusPage(),
init: () {
GetIt.instance.registerFactory<SensorsPlusModel>(() => SensorsPlusModel());
},
);

209
example/lib/packages/sensors_plus/page.dart

@ -0,0 +1,209 @@
// SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
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/widgets/base/export.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_gen/gen_l10n/app_localizations.dart';
import 'package:sensors_plus/sensors_plus.dart';
import 'package:sensors_plus_aurora/events/als_event.dart';
import 'package:sensors_plus_aurora/events/compass_event.dart';
import 'package:sensors_plus_aurora/events/orientation_event.dart';
import 'package:sensors_plus_aurora/events/proximity_event.dart';
import 'package:sensors_plus_aurora/events/tap_event.dart';
import 'package:sensors_plus_aurora/sensors_plus_aurora.dart';
import 'model.dart';
import 'package.dart';
class SensorsPlusPage extends AppStatefulWidget {
SensorsPlusPage({
super.key,
});
final Package package = packageSensorsPlus;
@override
State<SensorsPlusPage> createState() => _SensorsPlusPageState();
}
class _SensorsPlusPageState extends AppState<SensorsPlusPage> {
Stream<OrientationEvent>? _orientationEvents;
Stream<AccelerometerEvent>? _accelerometerEvents;
Stream<CompassEvent>? _compassEvents;
Stream<TapEvent>? _tapEvents;
Stream<ALSEvent>? _alsEvents;
Stream<ProximityEvent>? _proximityEvents;
Stream<GyroscopeEvent>? _gyroscopeEvents;
Stream<MagnetometerEvent>? _magnetometerEvents;
@override
void initState() {
super.initState();
try {
_orientationEvents = orientationEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_accelerometerEvents = accelerometerEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_compassEvents = compassEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_tapEvents = tapEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_alsEvents = alsEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_proximityEvents = proximityEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_gyroscopeEvents = gyroscopeEvents;
} catch (e) {
debugPrint(e.toString());
}
try {
_magnetometerEvents = magnetometerEvents;
} catch (e) {
debugPrint(e.toString());
}
}
@override
Widget buildWide(
BuildContext context,
MediaQueryData media,
AppLocalizations l10n,
) {
return BlockLayout<SensorsPlusModel>(
model: getIt<SensorsPlusModel>(),
title: widget.package.key,
builder: (context, child, model) {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
Visibility(
visible: _orientationEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleOrientation,
desc: l10n.sensorsPlusSubtitle('orientationsensor'),
stream: _orientationEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _accelerometerEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleAccelerometer,
desc: l10n.sensorsPlusSubtitle('accelerometersensor'),
stream: _accelerometerEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _compassEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleCompass,
desc: l10n.sensorsPlusSubtitle('compasssensor'),
stream: _compassEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _tapEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleTap,
desc: l10n.sensorsPlusSubtitle('tapsensor'),
stream: _tapEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _alsEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleALS,
desc: l10n.sensorsPlusSubtitle('alssensor'),
stream: _alsEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _proximityEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleProximity,
desc: l10n.sensorsPlusSubtitle('proximitysensor'),
stream: _proximityEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _gyroscopeEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleGyroscope,
desc: l10n.sensorsPlusSubtitle('rotationsensor'),
stream: _gyroscopeEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
Visibility(
visible: _magnetometerEvents != null,
child: BlockItem(
isShowProgress: false,
title: l10n.sensorsPlusTitleMagnetometer,
desc: l10n.sensorsPlusSubtitle('magnetometersensor'),
stream: _magnetometerEvents,
builder: (value) => value == null
? l10n.sensorsPlusNotFound
: value.toString(),
),
),
],
),
),
);
},
);
}
}

2
example/lib/packages/sqflite/package.dart

@ -15,7 +15,7 @@ final packageSqflite = PackagePage(
descRU: ''' descRU: '''
Плагин SQLite для Flutter. Поддерживает iOS, Android, MacOS и ОС Аврора. Плагин SQLite для Flutter. Поддерживает iOS, Android, MacOS и ОС Аврора.
''', ''',
version: '2.2.6', version: '2.3.0',
isPlatformDependent: true, isPlatformDependent: true,
page: () => SqflitePage(), page: () => SqflitePage(),
init: () { init: () {

2
example/lib/packages/universal_io/package.dart

@ -21,6 +21,6 @@ final packageUniversalIO = PackageDialog(
Это плагин независимый от платформы, используется в этом приложении, Это плагин независимый от платформы, используется в этом приложении,
должен работать и у вас. должен работать и у вас.
''', ''',
version: '2.2.0', version: '2.2.2',
isPlatformDependent: false, isPlatformDependent: false,
); );

42
example/lib/packages/wakelock_plus/model.dart

@ -0,0 +1,42 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/widgets.dart';
import 'package:scoped_model/scoped_model.dart';
import 'package:wakelock_plus/wakelock_plus.dart';
/// Model for [WakelockPlusPage]
class WakelockPlusModel extends Model {
/// Get [ScopedModel]
static WakelockPlusModel of(BuildContext context) =>
ScopedModel.of<WakelockPlusModel>(context);
/// Error
String? _error;
/// Public error
String? get error => _error;
/// Public is error
bool get isError => _error != null;
/// Check is enable Wakelock
Future<bool?> isEnable() async {
try {
return await WakelockPlus.enabled;
} catch (e) {
_error = e.toString();
}
notifyListeners();
return null;
}
/// Set state Wakelock
Future<void> setStateWakelockPlus(bool enable) async {
try {
await WakelockPlus.toggle(enable: enable);
} catch (e) {
_error = e.toString();
}
notifyListeners();
}
}

26
example/lib/packages/wakelock_plus/package.dart

@ -0,0 +1,26 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter_example_packages/base/package/package_page.dart';
import 'package:flutter_example_packages/packages/wakelock_plus/page.dart';
import 'package:get_it/get_it.dart';
import 'model.dart';
/// Package values
final packageWakelockPlus = PackagePage(
key: 'wakelock_plus',
descEN: '''
Plugin that allows you to keep the device screen awake, i.e.
prevent the screen from sleeping.
''',
descRU: '''
Плагин, который позволяет держать экран устройства в активном состоянии,
т. е. предотвращать переход экрана в спящий режим.
''',
version: '1.1.1',
isPlatformDependent: true,
page: () => WakelockPlusPage(),
init: () {
GetIt.instance.registerFactory<WakelockPlusModel>(() => WakelockPlusModel());
},
);

89
example/lib/packages/wakelock_plus/page.dart

@ -0,0 +1,89 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
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/wakelock_plus/model.dart';
import 'package:flutter_example_packages/packages/wakelock_plus/package.dart';
import 'package:flutter_example_packages/theme/colors.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/layouts/block_layout.dart';
import 'package:flutter_example_packages/widgets/texts/export.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
class WakelockPlusPage extends AppStatefulWidget {
WakelockPlusPage({
super.key,
});
final Package package = packageWakelockPlus;
@override
State<WakelockPlusPage> createState() => _WakelockPlusPageState();
}
class _WakelockPlusPageState extends AppState<WakelockPlusPage> {
@override
Widget buildWide(
BuildContext context,
MediaQueryData media,
AppLocalizations l10n,
) {
return BlockLayout<WakelockPlusModel>(
model: getIt<WakelockPlusModel>(),
title: widget.package.key,
builder: (context, child, model) {
return SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(20),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
BlockInfoPackage(widget.package),
BlockAlert(model.error),
if (!model.isError)
Row(
children: [
Expanded(
flex: 1,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TextTitleLarge(l10n.wakelockTitle),
const SizedBox(height: 8),
TextBodyMedium(l10n.wakelockDesc),
],
),
),
FutureBuilder<bool?>(
future: model.isEnable(),
builder: (
BuildContext context,
AsyncSnapshot<bool?> snapshot,
) {
final value = snapshot.data ?? false;
return Expanded(
flex: 0,
child: Switch(
// This bool value toggles the switch.
value: value,
activeColor: AppColors.secondary,
onChanged: (bool value) {
model.setStateWakelockPlus(value);
},
),
);
},
),
],
),
],
),
),
);
},
);
}
}

10
example/lib/widgets/blocks/block_item.dart

@ -15,6 +15,7 @@ class BlockItem<T> extends AppStatelessWidget {
this.future, this.future,
this.stream, this.stream,
this.builder, this.builder,
this.isShowProgress = true,
}); });
final String? title; final String? title;
@ -22,7 +23,8 @@ class BlockItem<T> extends AppStatelessWidget {
final T? value; final T? value;
final Stream<T>? stream; final Stream<T>? stream;
final Future<T>? future; final Future<T>? future;
final Function(T)? builder; final Function(T?)? builder;
final bool isShowProgress;
AsyncWidgetBuilder<T?> get widgetBuilder => AsyncWidgetBuilder<T?> get widgetBuilder =>
(BuildContext context, AsyncSnapshot<T?> snapshot) { (BuildContext context, AsyncSnapshot<T?> snapshot) {
@ -47,14 +49,14 @@ class BlockItem<T> extends AppStatelessWidget {
], ],
), ),
), ),
if (snapshot.hasData) if (!isShowProgress || snapshot.hasData)
TextBodyMedium( TextBodyMedium(
builder == null builder == null
? snapshot.data.toString() ? snapshot.data.toString()
: builder?.call(snapshot.data as T), : builder?.call(snapshot.data),
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
), ),
if (!snapshot.hasData) if (isShowProgress && !snapshot.hasData)
const SizedBox( const SizedBox(
width: 16, width: 16,
height: 16, height: 16,

20
example/pubspec.yaml

@ -143,6 +143,26 @@ dependencies:
ref: master ref: master
path: packages/sqflite/sqflite_aurora path: packages/sqflite/sqflite_aurora
## https://pub.dev/packages/wakelock_plus
wakelock_plus: ^1.1.1
## https://gitlab.com/omprussia/flutter/flutter-plugins/-/tree/master/packages/wakelock_plus/wakelock_plus_aurora
wakelock_plus_aurora:
path: ../packages/wakelock_plus/wakelock_plus_aurora
# git:
# url: https://gitlab.com/omprussia/flutter/flutter-plugins.git
# ref: master
# path: packages/wakelock_plus/wakelock_plus_aurora
## https://pub.dev/packages/sensors_plus
sensors_plus: ^3.1.0
## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/sensors_plus/sensors_plus_aurora
sensors_plus_aurora:
path: ../packages/sensors_plus/sensors_plus_aurora
# git:
# url: https://gitlab.com/omprussia/flutter/flutter-plugins.git
# ref: master
# path: packages/sensors_plus/sensors_plus_aurora
dev_dependencies: dev_dependencies:
flutter_test: flutter_test:
sdk: sdk:

30
packages/sensors_plus/sensors_plus_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/sensors_plus/sensors_plus_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'

138
packages/sensors_plus/sensors_plus_aurora/README.md

@ -0,0 +1,138 @@
# sensors_plus_aurora
The Aurora implementation of [`sensors_plus`](https://pub.dev/packages/sensors_plus).
## Usage
This package is not an _endorsed_ implementation of `sensors_plus`.
Therefore, you have to include `sensors_plus_aurora` alongside `sensors_plus` as dependencies in your `pubspec.yaml` file.
**pubspec.yaml**
```yaml
dependencies:
sensors_plus: ^4.0.0
sensors_plus_aurora:
git:
url: https://gitlab.com/omprussia/flutter/flutter-plugins.git
ref: master
path: packages/sensors_plus/sensors_plus_aurora
```
## Features
- accelerometerEvents - A broadcast stream of events from the device accelerometer.
- gyroscopeEvents - A broadcast stream of events from the device gyroscope.
- magnetometerEvents - A broadcast stream of events from the device magnetometer.
- orientationEvents - A broadcast stream of events from the Aurora OS device orientation.
- compassEvents - A broadcast stream of events from the Aurora OS device compass.
- tapEvents - A broadcast stream of events from the Aurora OS device tap.
- alsEvents - A broadcast stream of events from the Aurora OS device ALS.
- proximityEvents - A broadcast stream of events from the Aurora OS device proximity.
***.desktop**
```desktop
Permissions=Sensors
```
***.spec**
```spec
BuildRequires: pkgconfig(sensord-qt5)
```
***.dart**
```dart
import 'package:sensors_plus/sensors_plus.dart';
import 'package:sensors_plus_aurora/events/als_event.dart';
import 'package:sensors_plus_aurora/events/compass_event.dart';
import 'package:sensors_plus_aurora/events/orientation_event.dart';
import 'package:sensors_plus_aurora/events/proximity_event.dart';
import 'package:sensors_plus_aurora/events/tap_event.dart';
import 'package:sensors_plus_aurora/sensors_plus_aurora.dart';
/// Package sensors_plus
///
/// A broadcast stream of events from the device accelerometer.
accelerometerEvents.listen(
(AccelerometerEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// A broadcast stream of events from the device gyroscope.
gyroscopeEvents.listen(
(GyroscopeEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// A broadcast stream of events from the device magnetometer.
magnetometerEvents.listen(
(MagnetometerEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// Custom Aurora OS events
///
/// A broadcast stream of events from the Aurora OS device orientation.
orientationEvents?.listen(
(OrientationEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// A broadcast stream of events from the Aurora OS device compass.
compassEvents?.listen(
(CompassEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// A broadcast stream of events from the Aurora OS device tap.
tapEvents?.listen(
(TapEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// A broadcast stream of events from the Aurora OS device ALS.
alsEvents?.listen(
(ALSEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
/// A broadcast stream of events from the Aurora OS device proximity.
proximityEvents?.listen(
(ProximityEvent event) {
debugPrint(event.toString());
},
onError: (error) {
debugPrint(error.toString());
}
);
```

4
packages/sensors_plus/sensors_plus_aurora/analysis_options.yaml

@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
include: package:flutter_lints/flutter.yaml

34
packages/sensors_plus/sensors_plus_aurora/aurora/CMakeLists.txt

@ -0,0 +1,34 @@
# SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
cmake_minimum_required(VERSION 3.10)
set(PROJECT_NAME sensors_plus_aurora)
set(PLUGIN_NAME sensors_plus_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)
find_package(Qt5 COMPONENTS Core Network DBus REQUIRED)
pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder)
pkg_check_modules(SensordQt5 REQUIRED IMPORTED_TARGET sensord-qt5)
add_library(${PLUGIN_NAME} SHARED sensors_plus_aurora_plugin.cpp)
set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden AUTOMOC ON)
target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::FlutterEmbedder)
target_link_libraries(${PLUGIN_NAME} PUBLIC Qt5::Core Qt5::Network Qt5::DBus)
target_link_libraries(${PLUGIN_NAME} PUBLIC PkgConfig::SensordQt5)
target_include_directories(${PLUGIN_NAME} PRIVATE ${FLUTTER_DIR})
target_include_directories(${PLUGIN_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include)
target_include_directories(${PLUGIN_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include/${PROJECT_NAME})
target_compile_definitions(${PLUGIN_NAME} PRIVATE PLUGIN_IMPL)

15
packages/sensors_plus/sensors_plus_aurora/aurora/include/sensors_plus_aurora/globals.h

@ -0,0 +1,15 @@
/**
* SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef FLUTTER_PLUGIN_SENSORS_PLUS_AURORA_PLUGIN_GLOBALS_H
#define FLUTTER_PLUGIN_SENSORS_PLUS_AURORA_PLUGIN_GLOBALS_H
#ifdef PLUGIN_IMPL
#define PLUGIN_EXPORT __attribute__((visibility("default")))
#else
#define PLUGIN_EXPORT
#endif
#endif /* FLUTTER_PLUGIN_SENSORS_PLUS_AURORA_PLUGIN_GLOBALS_H */

82
packages/sensors_plus/sensors_plus_aurora/aurora/include/sensors_plus_aurora/sensors_plus_aurora_plugin.h

@ -0,0 +1,82 @@
/**
* SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef FLUTTER_PLUGIN_SENSORS_PLUS_AURORA_PLUGIN_H
#define FLUTTER_PLUGIN_SENSORS_PLUS_AURORA_PLUGIN_H
#include <flutter/plugin-interface.h>
#include <sensors_plus_aurora/globals.h>
#include <QtCore>
#include <accelerometersensor_i.h>
#include <alssensor_i.h>
#include <compasssensor_i.h>
#include <magnetometersensor_i.h>
#include <orientationsensor_i.h>
#include <proximitysensor_i.h>
#include <rotationsensor_i.h>
#include <sensormanagerinterface.h>
#include <tapsensor_i.h>
class PLUGIN_EXPORT SensorsPlusAuroraPlugin final : public QObject, public PluginInterface
{
Q_OBJECT
public:
void RegisterWithRegistrar(PluginRegistrar &registrar) override;
public slots:
void EventSensorOrientation(const Unsigned &data);
void EventSensorAccelerometer(const XYZ &data);
void EventSensorCompass(const Compass &data);
void EventSensorTap(const Tap &data);
void EventSensorALS(const Unsigned &data);
void EventSensorProximity(const Proximity &data);
void EventSensorRotation(const XYZ &data);
void EventSensorMagnetometer(const MagneticField &data);
private:
template<typename T>
bool RegisterSensorInterface(QString sensor);
void EventChannelNull(const std::string &channel);
void EventChannelData(const std::string &channel, const Encodable::List &result);
void EnableSensorOrientation();
void DisableSensorOrientation();
void EnableSensorAccelerometer();
void DisableSensorAccelerometer();
void EnableSensorCompass();
void DisableSensorCompass();
void EnableSensorTap();
void DisableSensorTap();
void EnableSensorALS();
void DisableSensorALS();
void EnableSensorProximity();
void DisableSensorProximity();
void EnableSensorRotation();
void DisableSensorRotation();
void EnableSensorMagnetometer();
void DisableSensorMagnetometer();
private:
OrientationSensorChannelInterface *m_ifaceOrientation = nullptr;
AccelerometerSensorChannelInterface *m_ifaceAccelerometer = nullptr;
CompassSensorChannelInterface *m_ifaceCompass = nullptr;
TapSensorChannelInterface *m_ifaceTap = nullptr;
ALSSensorChannelInterface *m_ifaceALS = nullptr;
ProximitySensorChannelInterface *m_ifaceProximity = nullptr;
RotationSensorChannelInterface *m_ifaceRotation = nullptr;
MagnetometerSensorChannelInterface *m_ifaceMagnetometer = nullptr;
};
#endif /* FLUTTER_PLUGIN_SENSORS_PLUS_AURORA_PLUGIN_H */

493
packages/sensors_plus/sensors_plus_aurora/aurora/sensors_plus_aurora_plugin.cpp

@ -0,0 +1,493 @@
/**
* SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <flutter/method-channel.h>
#include <sensors_plus_aurora/sensors_plus_aurora_plugin.h>
#include <QDebug>
#include <accelerometersensor_i.h>
#include <alssensor_i.h>
#include <compasssensor_i.h>
#include <magnetometersensor_i.h>
#include <orientationsensor_i.h>
#include <proximitysensor_i.h>
#include <rotationsensor_i.h>
#include <sensormanagerinterface.h>
#include <tapsensor_i.h>
namespace KeyChannel {
constexpr auto Orientation = "sensors_plus_aurora_orientationsensor";
constexpr auto Accelerometer = "sensors_plus_aurora_accelerometersensor";
constexpr auto Compass = "sensors_plus_aurora_compasssensor";
constexpr auto Tap = "sensors_plus_aurora_tapsensor";
constexpr auto ALS = "sensors_plus_aurora_alssensor";
constexpr auto Proximity = "sensors_plus_aurora_proximitysensor";
constexpr auto Rotation = "sensors_plus_aurora_rotationsensor";
constexpr auto Magnetometer = "sensors_plus_aurora_magnetometersensor";
} // namespace KeyChannel
namespace KeySensor {
constexpr auto Orientation = "orientationsensor";
constexpr auto Accelerometer = "accelerometersensor";
constexpr auto Compass = "compasssensor";
constexpr auto Tap = "tapsensor";
constexpr auto ALS = "alssensor";
constexpr auto Proximity = "proximitysensor";
constexpr auto Rotation = "rotationsensor";
constexpr auto Magnetometer = "magnetometersensor";
} // namespace KeySensor
void SensorsPlusAuroraPlugin::RegisterWithRegistrar(PluginRegistrar &registrar)
{
registrar.RegisterEventChannel(
KeyChannel::Orientation,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorOrientation();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorOrientation();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::Accelerometer,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorAccelerometer();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorAccelerometer();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::Compass,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorCompass();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorCompass();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::Tap,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorTap();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorTap();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::ALS,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorALS();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorALS();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::Proximity,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorProximity();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorProximity();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::Rotation,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorRotation();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorRotation();
return EventResponse();
});
registrar.RegisterEventChannel(
KeyChannel::Magnetometer,
MethodCodecType::Standard,
[this](const Encodable &) {
EnableSensorMagnetometer();
return EventResponse();
},
[this](const Encodable &) {
DisableSensorMagnetometer();
return EventResponse();
});
}
template<typename T>
bool SensorsPlusAuroraPlugin::RegisterSensorInterface(QString sensor)
{
SensorManagerInterface &sm = SensorManagerInterface::instance();
if (!sm.isValid()) {
return false;
}
QDBusReply<bool> reply(sm.loadPlugin(sensor));
if (!reply.isValid() || !reply.value()) {
return false;
}
sm.registerSensorInterface<T>(sensor);
return true;
}
void SensorsPlusAuroraPlugin::EventChannelNull(const std::string &channel)
{
EventChannel(channel, MethodCodecType::Standard).SendEvent(nullptr);
}
void SensorsPlusAuroraPlugin::EventChannelData(const std::string &channel, const Encodable::List &result)
{
EventChannel(channel, MethodCodecType::Standard).SendEvent(result);
}
/**
* Orientation
*/
void SensorsPlusAuroraPlugin::EnableSensorOrientation()
{
if (m_ifaceOrientation == nullptr) {
if (!RegisterSensorInterface<OrientationSensorChannelInterface>(KeySensor::Orientation)) {
EventChannelNull(KeyChannel::Orientation);
return;
}
m_ifaceOrientation = OrientationSensorChannelInterface::interface(KeySensor::Orientation);
if (!m_ifaceOrientation) {
EventChannelNull(KeyChannel::Orientation);
return;
}
connect(m_ifaceOrientation,
SIGNAL(orientationChanged(const Unsigned &)),
this,
SLOT(EventSensorOrientation(const Unsigned &)));
}
m_ifaceOrientation->start();
EventSensorOrientation(m_ifaceOrientation->orientation());
}
void SensorsPlusAuroraPlugin::DisableSensorOrientation()
{
if (m_ifaceOrientation) {
m_ifaceOrientation->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorOrientation(const Unsigned &data)
{
EventChannelData(KeyChannel::Orientation, Encodable::List {data.x()});
}
/**
* Accelerometer
*/
void SensorsPlusAuroraPlugin::EnableSensorAccelerometer()
{
if (m_ifaceAccelerometer == nullptr) {
if (!RegisterSensorInterface<AccelerometerSensorChannelInterface>(
KeySensor::Accelerometer)) {
EventChannelNull(KeyChannel::Accelerometer);
return;
}
m_ifaceAccelerometer = AccelerometerSensorChannelInterface::interface(
KeySensor::Accelerometer);
if (!m_ifaceAccelerometer) {
EventChannelNull(KeyChannel::Accelerometer);
return;
}
connect(m_ifaceAccelerometer,
SIGNAL(dataAvailable(const XYZ &)),
this,
SLOT(EventSensorAccelerometer(const XYZ &)));
}
m_ifaceAccelerometer->start();
EventSensorAccelerometer(m_ifaceAccelerometer->get());
}
void SensorsPlusAuroraPlugin::DisableSensorAccelerometer()
{
if (m_ifaceAccelerometer) {
m_ifaceAccelerometer->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorAccelerometer(const XYZ &data)
{
EventChannelData(KeyChannel::Accelerometer, Encodable::List {data.x(), data.y(), data.z()});
}
/**
* Compass
*/
void SensorsPlusAuroraPlugin::EnableSensorCompass()
{
if (m_ifaceCompass == nullptr) {
if (!RegisterSensorInterface<CompassSensorChannelInterface>(KeySensor::Compass)) {
EventChannelNull(KeyChannel::Compass);
return;
}
m_ifaceCompass = CompassSensorChannelInterface::interface(KeySensor::Compass);
if (!m_ifaceCompass) {
EventChannelNull(KeyChannel::Compass);
return;
}
connect(m_ifaceCompass,
SIGNAL(dataAvailable(const Compass &)),
this,
SLOT(EventSensorCompass(const Compass &)));
}
m_ifaceCompass->start();
EventSensorCompass(m_ifaceCompass->get());
}
void SensorsPlusAuroraPlugin::DisableSensorCompass()
{
if (m_ifaceCompass) {
m_ifaceCompass->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorCompass(const Compass &data)
{
EventChannelData(KeyChannel::Compass, Encodable::List {data.degrees(), data.level()});
}
/**
* Tap
*/
void SensorsPlusAuroraPlugin::EnableSensorTap()
{
if (m_ifaceTap == nullptr) {
if (!RegisterSensorInterface<TapSensorChannelInterface>(KeySensor::Tap)) {
EventChannelNull(KeyChannel::Tap);
return;
}
m_ifaceTap = TapSensorChannelInterface::interface(KeySensor::Tap);
if (!m_ifaceTap) {
EventChannelNull(KeyChannel::Tap);
return;
}
connect(m_ifaceTap,
SIGNAL(dataAvailable(const Tap &)),
this,
SLOT(EventSensorTap(const Tap &)));
}
m_ifaceTap->start();
}
void SensorsPlusAuroraPlugin::DisableSensorTap()
{
if (m_ifaceTap) {
m_ifaceTap->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorTap(const Tap &data)
{
EventChannelData(KeyChannel::Tap, Encodable::List {
static_cast<int>(data.direction()),
static_cast<int>(data.type())
});
}
/**
* ALS
*/
void SensorsPlusAuroraPlugin::EnableSensorALS()
{
if (m_ifaceALS == nullptr) {
if (!RegisterSensorInterface<ALSSensorChannelInterface>(KeySensor::ALS)) {
EventChannelNull(KeyChannel::ALS);
return;
}
m_ifaceALS = ALSSensorChannelInterface::interface(KeySensor::ALS);
if (!m_ifaceALS) {
EventChannelNull(KeyChannel::ALS);
return;
}
connect(m_ifaceALS,
SIGNAL(ALSChanged(const Unsigned &)),
this,
SLOT(EventSensorALS(const Unsigned &)));
}
m_ifaceALS->start();
EventSensorALS(m_ifaceALS->lux());
}
void SensorsPlusAuroraPlugin::DisableSensorALS()
{
if (m_ifaceALS) {
m_ifaceALS->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorALS(const Unsigned &data)
{
EventChannelData(KeyChannel::ALS, Encodable::List {data.x()});
}
/**
* Proximity
*/
void SensorsPlusAuroraPlugin::EnableSensorProximity()
{
if (m_ifaceProximity == nullptr) {
if (!RegisterSensorInterface<ProximitySensorChannelInterface>(KeySensor::Proximity)) {
EventChannelNull(KeyChannel::Proximity);
return;
}
m_ifaceProximity = ProximitySensorChannelInterface::interface(KeySensor::Proximity);
if (!m_ifaceProximity) {
EventChannelNull(KeyChannel::Proximity);
return;
}
connect(m_ifaceProximity,
SIGNAL(reflectanceDataAvailable(const Proximity &)),
this,
SLOT(EventSensorProximity(const Proximity &)));
}
m_ifaceProximity->start();
EventSensorProximity(m_ifaceProximity->proximityReflectance());
}
void SensorsPlusAuroraPlugin::DisableSensorProximity()
{
if (m_ifaceProximity) {
m_ifaceProximity->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorProximity(const Proximity &data)
{
EventChannelData(KeyChannel::Proximity, Encodable::List {data.withinProximity() ? 1 : 0});
}
/**
* Rotation
*/
void SensorsPlusAuroraPlugin::EnableSensorRotation()
{
if (m_ifaceRotation == nullptr) {
if (!RegisterSensorInterface<RotationSensorChannelInterface>(KeySensor::Rotation)) {
EventChannelNull(KeyChannel::Rotation);
return;
}
m_ifaceRotation = RotationSensorChannelInterface::interface(KeySensor::Rotation);
if (!m_ifaceRotation) {
EventChannelNull(KeyChannel::Rotation);
return;
}
connect(m_ifaceRotation,
SIGNAL(dataAvailable(const XYZ &)),
this,
SLOT(EventSensorRotation(const XYZ &)));
}
m_ifaceRotation->start();
EventSensorRotation(m_ifaceRotation->rotation());
}
void SensorsPlusAuroraPlugin::DisableSensorRotation()
{
if (m_ifaceRotation) {
m_ifaceRotation->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorRotation(const XYZ &data)
{
EventChannelData(KeyChannel::Rotation, Encodable::List {data.x(), data.y(), data.z()});
}
/**
* Magnetometer
*/
void SensorsPlusAuroraPlugin::EnableSensorMagnetometer()
{
if (m_ifaceMagnetometer == nullptr) {
if (!RegisterSensorInterface<MagnetometerSensorChannelInterface>(KeySensor::Magnetometer)) {
EventChannelNull(KeyChannel::Magnetometer);
return;
}
m_ifaceMagnetometer = MagnetometerSensorChannelInterface::interface(KeySensor::Magnetometer);
if (!m_ifaceMagnetometer) {
EventChannelNull(KeyChannel::Magnetometer);
return;
}
connect(m_ifaceMagnetometer,
SIGNAL(dataAvailable(const MagneticField &)),
this,
SLOT(EventSensorMagnetometer(const MagneticField &)));
}
m_ifaceMagnetometer->start();
EventSensorMagnetometer(m_ifaceMagnetometer->magneticField());
}
void SensorsPlusAuroraPlugin::DisableSensorMagnetometer()
{
if (m_ifaceMagnetometer) {
m_ifaceMagnetometer->stop();
}
}
void SensorsPlusAuroraPlugin::EventSensorMagnetometer(const MagneticField &data)
{
EventChannelData(KeyChannel::Magnetometer, Encodable::List {data.x(), data.y(), data.z()});
}
#include "moc_sensors_plus_aurora_plugin.cpp"

11
packages/sensors_plus/sensors_plus_aurora/lib/events/als_event.dart

@ -0,0 +1,11 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
class ALSEvent {
ALSEvent(this.degrees);
final int degrees;
@override
String toString() => '[ALSEvent (degrees: $degrees)]';
}

13
packages/sensors_plus/sensors_plus_aurora/lib/events/compass_event.dart

@ -0,0 +1,13 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
class CompassEvent {
CompassEvent(this.degrees, this.level);
final int degrees;
final int level;
@override
String toString() => '[CompassEvent (degrees: $degrees, level: $level)]';
}

25
packages/sensors_plus/sensors_plus_aurora/lib/events/orientation_event.dart

@ -0,0 +1,25 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
enum OrientationEvent {
/// The orientation is unknown.
undefined,
/// The Top edge of the device is pointing up.
topUp,
/// The Top edge of the device is pointing down.
topDown,
/// The Left edge of the device is pointing up.
leftUp,
/// The Right edge of the device is pointing up.
rightUp,
/// The Face of the device is pointing up.
faceUp,
/// The Face of the device is pointing down.
faceDown
}

11
packages/sensors_plus/sensors_plus_aurora/lib/events/proximity_event.dart

@ -0,0 +1,11 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
class ProximityEvent {
ProximityEvent(this.withinProximity);
final bool withinProximity;
@override
String toString() => '[ProximityEvent (withinProximity: $withinProximity)]';
}

53
packages/sensors_plus/sensors_plus_aurora/lib/events/tap_event.dart

@ -0,0 +1,53 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
/// Direction of tap. The last six directions may not be supported
/// depending on hardware.
enum TapDirection {
/// Left or right side tapped
x,
/// Top or down side tapped
y,
/// Face or bottom tapped
z,
/// Tapped from left to right
leftRight,
/// Tapped from right to left
rightLeft,
/// Tapped from top to bottom
topBottom,
/// Tapped from bottom to top
bottomTop,
/// Tapped from face to back
faceBack,
/// Tapped from back to face
backFace
}
/// Type of tap.
enum TapType {
/// Double tap
doubleTap,
/// Single tap.
singleTap
}
class TapEvent {
TapEvent(this.direction, this.type);
final TapDirection direction;
final TapType type;
@override
String toString() => '[TapEvent (direction: $direction, level: $type)]';
}

93
packages/sensors_plus/sensors_plus_aurora/lib/sensors_plus_aurora.dart

@ -0,0 +1,93 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/foundation.dart';
import 'package:sensors_plus_aurora/events/als_event.dart';
import 'package:sensors_plus_aurora/events/compass_event.dart';
import 'package:sensors_plus_aurora/events/orientation_event.dart';
import 'package:sensors_plus_aurora/events/proximity_event.dart';
import 'package:sensors_plus_aurora/events/tap_event.dart';
import 'package:sensors_plus_platform_interface/sensors_plus_platform_interface.dart';
import 'sensors_plus_aurora_platform_interface.dart';
/// A broadcast stream of events from the Aurora OS device orientation.
Stream<OrientationEvent>? get orientationEvents {
if (TargetPlatform.aurora == defaultTargetPlatform) {
return SensorsPlusAurora().onChangeOrientation;
}
return null;
}
/// A broadcast stream of events from the Aurora OS device compass.
Stream<CompassEvent>? get compassEvents {
if (TargetPlatform.aurora == defaultTargetPlatform) {
return SensorsPlusAurora().onChangeCompass;
}
return null;
}
/// A broadcast stream of events from the Aurora OS device tap.
Stream<TapEvent>? get tapEvents {
if (TargetPlatform.aurora == defaultTargetPlatform) {
return SensorsPlusAurora().onChangeTap;
}
return null;
}
/// A broadcast stream of events from the Aurora OS device ALS.
Stream<ALSEvent>? get alsEvents {
if (TargetPlatform.aurora == defaultTargetPlatform) {
return SensorsPlusAurora().onChangeALS;
}
return null;
}
/// A broadcast stream of events from the Aurora OS device proximity.
Stream<ProximityEvent>? get proximityEvents {
if (TargetPlatform.aurora == defaultTargetPlatform) {
return SensorsPlusAurora().onChangeProximity;
}
return null;
}
class SensorsPlusAurora extends SensorsPlatform {
static void registerWith() {
SensorsPlatform.instance = SensorsPlusAurora();
}
/// orientationsensor
Stream<OrientationEvent> get onChangeOrientation =>
SensorsPlusAuroraPlatform.instance.onChangeOrientation();
/// accelerometersensor
@override
Stream<AccelerometerEvent> get accelerometerEvents =>
SensorsPlusAuroraPlatform.instance.onChangeAccelerometer();
/// compasssensor
Stream<CompassEvent> get onChangeCompass =>
SensorsPlusAuroraPlatform.instance.onChangeCompass();
/// tapsensor
Stream<TapEvent> get onChangeTap =>
SensorsPlusAuroraPlatform.instance.onChangeTap();
/// alssensor
Stream<ALSEvent> get onChangeALS =>
SensorsPlusAuroraPlatform.instance.onChangeALS();
/// proximitysensor
Stream<ProximityEvent> get onChangeProximity =>
SensorsPlusAuroraPlatform.instance.onChangeProximity();
/// rotationsensor
@override
Stream<GyroscopeEvent> get gyroscopeEvents =>
SensorsPlusAuroraPlatform.instance.onChangeRotation();
/// magnetometersensor
@override
Stream<MagnetometerEvent> get magnetometerEvents =>
SensorsPlusAuroraPlatform.instance.onChangeMagnetometer();
}

148
packages/sensors_plus/sensors_plus_aurora/lib/sensors_plus_aurora_method_channel.dart

@ -0,0 +1,148 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart';
import 'package:sensors_plus_aurora/events/als_event.dart';
import 'package:sensors_plus_aurora/events/compass_event.dart';
import 'package:sensors_plus_aurora/events/orientation_event.dart';
import 'package:sensors_plus_aurora/events/proximity_event.dart';
import 'package:sensors_plus_aurora/events/tap_event.dart';
import 'package:sensors_plus_platform_interface/sensors_plus_platform_interface.dart';
import 'sensors_plus_aurora_platform_interface.dart';
/// An implementation of [SensorsPlusAuroraPlatform] that uses method channels.
class MethodChannelSensorsPlusAurora extends SensorsPlusAuroraPlatform {
/// The method channel used to interact with the native platform.
@visibleForTesting
final methodChannel = const MethodChannel('sensors_plus_aurora');
List<int> _loadData(dynamic data, String key) {
if (data == null) {
throw "Failed to load sensor '$key'";
}
return (data as List<Object?>).map((e) => int.parse(e.toString())).toList();
}
@override
Stream<OrientationEvent> onChangeOrientation() async* {
await for (final data
in const EventChannel('sensors_plus_aurora_orientationsensor')
.receiveBroadcastStream()) {
switch (_loadData(data, 'orientationsensor')[0]) {
case 1:
yield OrientationEvent.rightUp;
break;
case 2:
yield OrientationEvent.leftUp;
break;
case 3:
yield OrientationEvent.topDown;
break;
case 4:
yield OrientationEvent.topUp;
break;
case 5:
yield OrientationEvent.faceDown;
break;
case 6:
yield OrientationEvent.faceUp;
break;
default:
yield OrientationEvent.undefined;
}
}
}
@override
Stream<AccelerometerEvent> onChangeAccelerometer() async* {
await for (final data
in const EventChannel('sensors_plus_aurora_accelerometersensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'accelerometersensor');
yield AccelerometerEvent(
result[0].toDouble(),
result[1].toDouble(),
result[2].toDouble(),
);
}
}
@override
Stream<CompassEvent> onChangeCompass() async* {
await for (final data
in const EventChannel('sensors_plus_aurora_compasssensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'compasssensor');
yield CompassEvent(
result[0],
result[1],
);
}
}
@override
Stream<TapEvent> onChangeTap() async* {
await for (final data in const EventChannel('sensors_plus_aurora_tapsensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'tapsensor');
yield TapEvent(
TapDirection.values[result[0]],
TapType.values[result[1]],
);
}
}
@override
Stream<ALSEvent> onChangeALS() async* {
await for (final data in const EventChannel('sensors_plus_aurora_alssensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'alssensor');
yield ALSEvent(
result[0],
);
}
}
@override
Stream<ProximityEvent> onChangeProximity() async* {
await for (final data
in const EventChannel('sensors_plus_aurora_proximitysensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'proximitysensor');
yield ProximityEvent(
result[0] == 1,
);
}
}
@override
Stream<GyroscopeEvent> onChangeRotation() async* {
await for (final data
in const EventChannel('sensors_plus_aurora_rotationsensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'rotationsensor');
yield GyroscopeEvent(
result[0].toDouble(),
result[1].toDouble(),
result[2].toDouble(),
);
}
}
@override
Stream<MagnetometerEvent> onChangeMagnetometer() async* {
await for (final data
in const EventChannel('sensors_plus_aurora_magnetometersensor')
.receiveBroadcastStream()) {
final result = _loadData(data, 'magnetometersensor');
yield MagnetometerEvent(
result[0].toDouble(),
result[1].toDouble(),
result[2].toDouble(),
);
}
}
}

66
packages/sensors_plus/sensors_plus_aurora/lib/sensors_plus_aurora_platform_interface.dart

@ -0,0 +1,66 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import 'package:sensors_plus_aurora/events/als_event.dart';
import 'package:sensors_plus_aurora/events/compass_event.dart';
import 'package:sensors_plus_aurora/events/orientation_event.dart';
import 'package:sensors_plus_aurora/events/proximity_event.dart';
import 'package:sensors_plus_aurora/events/tap_event.dart';
import 'package:sensors_plus_platform_interface/sensors_plus_platform_interface.dart';
import 'sensors_plus_aurora_method_channel.dart';
abstract class SensorsPlusAuroraPlatform extends PlatformInterface {
/// Constructs a SensorsPlusAuroraPlatform.
SensorsPlusAuroraPlatform() : super(token: _token);
static final Object _token = Object();
static SensorsPlusAuroraPlatform _instance = MethodChannelSensorsPlusAurora();
/// The default instance of [SensorsPlusAuroraPlatform] to use.
///
/// Defaults to [MethodChannelSensorsPlusAurora].
static SensorsPlusAuroraPlatform get instance => _instance;
/// Platform-specific implementations should set this with their own
/// platform-specific class that extends [SensorsPlusAuroraPlatform] when
/// they register themselves.
static set instance(SensorsPlusAuroraPlatform instance) {
PlatformInterface.verifyToken(instance, _token);
_instance = instance;
}
Stream<OrientationEvent> onChangeOrientation() {
throw UnimplementedError('onChangeOrientation() has not been implemented.');
}
Stream<AccelerometerEvent> onChangeAccelerometer() {
throw UnimplementedError('onChangeAccelerometer() has not been implemented.');
}
Stream<CompassEvent> onChangeCompass() {
throw UnimplementedError('onChangeCompass() has not been implemented.');
}
Stream<TapEvent> onChangeTap() {
throw UnimplementedError('onChangeTap() has not been implemented.');
}
Stream<ALSEvent> onChangeALS() {
throw UnimplementedError('onChangeALS() has not been implemented.');
}
Stream<ProximityEvent> onChangeProximity() {
throw UnimplementedError('onChangeProximity() has not been implemented.');
}
Stream<GyroscopeEvent> onChangeRotation() {
throw UnimplementedError('onChangeRotation() has not been implemented.');
}
Stream<MagnetometerEvent> onChangeMagnetometer() {
throw UnimplementedError('onChangeMagnetometer() has not been implemented.');
}
}

28
packages/sensors_plus/sensors_plus_aurora/pubspec.yaml

@ -0,0 +1,28 @@
# SPDX-FileCopyrightText: 2023 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
name: sensors_plus_aurora
description: A new Flutter plugin project.
version: 0.0.1
environment:
sdk: '>=2.18.6 <4.0.0'
flutter: ">=3.0.0"
dependencies:
flutter:
sdk: flutter
plugin_platform_interface: ^2.0.2
sensors_plus_platform_interface: ^1.1.3
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
plugin:
platforms:
aurora:
pluginClass: SensorsPlusAuroraPlugin
dartPluginClass: SensorsPlusAurora

2
packages/shared_preferences/shared_preferences_aurora/lib/shared_preferences_aurora_api.dart

@ -53,7 +53,7 @@ class SharedPreferencesAuroraApi {
/// Get file with data /// Get file with data
Future<File> _getFile() async { Future<File> _getFile() async {
return File(p.join( return File(p.join(
(await getTemporaryDirectory()).path, (await getApplicationSupportDirectory()).path,
fileName, fileName,
)).create(recursive: true); )).create(recursive: true);
} }

12
packages/sqflite/sqflite_aurora/README.md

@ -18,9 +18,21 @@ dependencies:
ref: master ref: master
path: packages/sqflite/sqflite_aurora path: packages/sqflite/sqflite_aurora
``` ```
***.desktop**
```desktop
Permissions=UserDirs
```
***.spec**
```spec
BuildRequires: pkgconfig(sqlite3)
```
***.dart** ***.dart**
```dart ```dart
import 'package:sqflite/sqflite.dart'; import 'package:sqflite/sqflite.dart';
``` ```

30
packages/wakelock_plus/wakelock_plus_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/

32
packages/wakelock_plus/wakelock_plus_aurora/README.md

@ -0,0 +1,32 @@
# wakelock_plus_aurora
The Aurora implementation of [`wakelock_plus`](https://pub.dev/packages/wakelock_plus).
## Usage
This package is not an _endorsed_ implementation of `wakelock_plus`.
Therefore, you have to include `wakelock_plus_aurora` alongside `wakelock_plus` as dependencies in your `pubspec.yaml` file.
**pubspec.yaml**
```yaml
dependencies:
wakelock_plus: ^1.1.1
wakelock_plus_aurora:
git:
url: https://gitlab.com/omprussia/flutter/flutter-plugins.git
ref: master
path: packages/wakelock_plus/wakelock_plus_aurora
```
***.dart**
```dart
import 'package:wakelock_plus/wakelock_plus.dart';
// ...
// The following line will enable the Android and iOS wakelock.
WakelockPlus.enable();
// The next line disables the wakelock again.
WakelockPlus.disable();
```

4
packages/wakelock_plus/wakelock_plus_aurora/analysis_options.yaml

@ -0,0 +1,4 @@
# SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
include: package:flutter_lints/flutter.yaml

10
packages/wakelock_plus/wakelock_plus_aurora/data/com.nokia.mce.request.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE node PUBLIC
"-//freedesktop//DTD D-Bus Object Introspection 1.0//EN"
"http://standards.freedesktop.org/dbus/1.0/introspect.dtd">
<node name="/com/nokia/mce/request">
<interface name="com.nokia.mce.request">
<method name="req_display_blanking_pause">
</method>
</interface>
</node>

20
packages/wakelock_plus/wakelock_plus_aurora/lib/com_nokia_mce_request.dart

@ -0,0 +1,20 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'package:dbus/dbus.dart';
class ComNokiaMceRequest extends DBusRemoteObject {
ComNokiaMceRequest(DBusClient client, String destination,
{DBusObjectPath path =
const DBusObjectPath.unchecked('/com/nokia/mce/request')})
: super(client, name: destination, path: path);
/// Invokes com.nokia.mce.request.req_display_blanking_pause()
Future<void> callreq_display_blanking_pause(
{bool noAutoStart = false,
bool allowInteractiveAuthorization = false}) async {
await callMethod('com.nokia.mce.request', 'req_display_blanking_pause', [],
replySignature: DBusSignature(''),
noAutoStart: noAutoStart,
allowInteractiveAuthorization: allowInteractiveAuthorization);
}
}

40
packages/wakelock_plus/wakelock_plus_aurora/lib/wakelock_plus_aurora.dart

@ -0,0 +1,40 @@
// SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
// SPDX-License-Identifier: BSD-3-Clause
import 'dart:async';
import 'package:dbus/dbus.dart';
import 'package:wakelock_plus_platform_interface/wakelock_plus_platform_interface.dart';
import 'com_nokia_mce_request.dart';
class WakelockPlusAurora extends WakelockPlusPlatformInterface {
bool _enable = false;
Timer? _timer;
static void registerWith() {
WakelockPlusPlatformInterface.instance = WakelockPlusAurora();
}
@override
Future<void> toggle({required bool enable}) async {
if (_enable != enable) {
_enable = enable;
final client = DBusClient.system();
final request = ComNokiaMceRequest(client, 'com.nokia.mce');
if (_timer == null) {
request.callreq_display_blanking_pause();
_timer = Timer.periodic(const Duration(seconds: 60), (timer) {
request.callreq_display_blanking_pause();
});
} else {
_timer?.cancel();
_timer = null;
}
await client.close();
}
}
@override
Future<bool> get enabled async {
return _enable;
}
}

28
packages/wakelock_plus/wakelock_plus_aurora/pubspec.yaml

@ -0,0 +1,28 @@
# SPDX-FileCopyrightText: Copyright 2023 Open Mobile Platform LLC <community@omp.ru>
# SPDX-License-Identifier: BSD-3-Clause
name: wakelock_plus_aurora
description: Wakelock is Flutter plugin that allows you to keep the device screen awake, i.e. prevent the screen from sleeping.
version: 0.0.1
environment:
sdk: '>=2.18.6 <4.0.0'
flutter: ">=3.0.0"
dependencies:
flutter:
sdk: flutter
dbus: ^0.7.8
plugin_platform_interface: ^2.0.2
wakelock_plus_platform_interface: ^1.1.0
dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^2.0.0
flutter:
plugin:
platforms:
aurora:
dartPluginClass: WakelockPlusAurora
Loading…
Cancel
Save