diff --git a/README.md b/README.md index 43e2ae5..5a0c194 100644 --- a/README.md +++ b/README.md @@ -5,29 +5,42 @@ It contains the source code for Aurora Flutter's packages (i.e., packages develo ## Package done -Packages made or for review +Package verified -| Package | Version | OS Version | State | Comment | -|-------------------------------------------------------------------------------------|----------|------------|---------|---------------------------------------------------------------------| -| [battery_plus](https://pub.dev/packages/battery_plus) | 4.0.1 | 4.0.2 | Review | - | -| [device_info_plus](https://pub.dev/packages/device_info_plus) | 9.0.2 | 4.0.2 | Review | - | -| [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) | 14.1.1 | 4.0.2 | Done | - | -| [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) | 8.0.0 | 4.0.2 | Review | Ключь нужно генерировать сейчас самому, например через пин от юзера | -| [package_info_plus](https://pub.dev/packages/package_info_plus) | 4.0.2 | 4.0.2 | Done | Достать `version` & `build_number` не удалось | -| [path_provider](https://pub.dev/packages/path_provider) | 2.0.15 | 4.0.2 | Review | - | -| [shared_preferences](https://pub.dev/packages/shared_preferences) | 2.1.2 | 4.0.2 | Review | - | -| [sqflite](https://pub.dev/packages/sqflite) | 2.2.6 | 4.0.2 | Review | - | -| [wakelock](https://pub.dev/packages/wakelock) | 0.6.2 | 4.0.2 | Review | - | -| xdga_directories | - | 4.0.2 | Review | Аналог [xdg_directories](https://pub.dev/packages/xdg_directories) | - -## Package verified - -Verified packages on Aurora OS - -| Package | Version | OS Version | State | Comment | -|-------------------------------------------------------------------------|----------|-------------|--------|------------------------------------| -| [flutter_cache_manager](https://pub.dev/packages/flutter_cache_manager) | 3.3.0 | 4.0.2 | Done | Depends on `path_provider` | -| [cached_network_image](https://pub.dev/packages/cached_network_image) | 3.2.3 | 4.0.2 | Done | Depends on `flutter_cache_manager` | +| Package | Version | OS Version | Comment | +|-------------------------------------------------------------------------------------|-----------|------------|---------------------------------------------------------------------| +| [flutter_keyboard_visibility](https://pub.dev/packages/flutter_keyboard_visibility) | 5.4.1 | 4.0.2 | Дополнительная фича с получением высоты клавиатуры | +| [battery_plus](https://pub.dev/packages/battery_plus) | 4.0.1 | 4.0.2 | - | +| [device_info_plus](https://pub.dev/packages/device_info_plus) | 8.2.2 | 4.0.2 | - | +| [flutter_local_notifications](https://pub.dev/packages/flutter_local_notifications) | 14.1.1 | 4.0.2 | - | +| [flutter_secure_storage](https://pub.dev/packages/flutter_secure_storage) | 8.0.0 | 4.0.2 | Ключь нужно генерировать сейчас самому, например через пин от юзера | +| [package_info_plus](https://pub.dev/packages/package_info_plus) | 3.1.2 | 4.0.2 | Достать `version` & `build_number` не удалось | +| [path_provider](https://pub.dev/packages/path_provider) | 2.0.15 | 4.0.2 | - | +| [shared_preferences](https://pub.dev/packages/shared_preferences) | 2.1.2 | 4.0.2 | - | +| [sqflite](https://pub.dev/packages/sqflite) | 2.2.6 | 4.0.2 | - | +| [wakelock](https://pub.dev/packages/wakelock) | 0.6.2 | 4.0.2 | - | +| xdga_directories | 0.0.1 | 4.0.2 | Аналог [xdg_directories](https://pub.dev/packages/xdg_directories) | +| [flutter_cache_manager](https://pub.dev/packages/flutter_cache_manager) | 3.3.0 | 4.0.2 | Depends on `path_provider` | +| [cached_network_image](https://pub.dev/packages/cached_network_image) | 3.2.3 | 4.0.2 | Depends on `flutter_cache_manager` | +| [crypto](https://pub.dev/packages/crypto) | 3.0.2 | 4.0.2 | - | +| [cupertino_icons](https://pub.dev/packages/cupertino_icons) | 1.0.5 | 4.0.2 | - | +| [get_it](https://pub.dev/packages/get_it) | 7.6.0 | 4.0.2 | - | +| [google_fonts](https://pub.dev/packages/google_fonts) | 4.0.4 | 4.0.2 | - | +| [intl](https://pub.dev/packages/intl) | 0.17.0 | 4.0.2 | - | +| [photo_view](https://pub.dev/packages/photo_view) | 0.14.0 | 4.0.2 | - | +| [scoped_model](https://pub.dev/packages/scoped_model) | 2.0.0 | 4.0.2 | - | +| [dartz](https://pub.dev/packages/dartz) | 0.10.1 | 4.0.2 | - | +| [freezed](https://pub.dev/packages/freezed) | 2.3.3 | 4.0.2 | - | +| [equatable](https://pub.dev/packages/equatable) | 2.0.5 | 4.0.2 | - | +| [flutter_markdown](https://pub.dev/packages/flutter_markdown) | 0.6.15 | 4.0.2 | - | +| [build_runner](https://pub.dev/packages/build_runner) | 2.3.3 | 4.0.2 | - | +| [freezed_annotation](https://pub.dev/packages/freezed_annotation) | 2.2.0 | 4.0.2 | - | +| [json_annotation](https://pub.dev/packages/json_annotation) | 4.8.0 | 4.0.2 | - | +| [json_serializable](https://pub.dev/packages/json_serializable) | 6.6.1 | 4.0.2 | - | +| [provider](https://pub.dev/packages/provider) | 6.0.5 | 4.0.2 | - | +| [qr_flutter](https://pub.dev/packages/qr_flutter) | 4.0.0 | 4.0.2 | - | +| [rxdart](https://pub.dev/packages/rxdart) | 0.27.7 | 4.0.2 | - | +| [translator](https://pub.dev/packages/translator) | 0.1.7 | 4.0.2 | - | ## Package in progress @@ -39,7 +52,6 @@ Started development and its status | [url_launcher](https://pub.dev/packages/url_launcher) | 6.1.11 | 5.0.0 | Waiting | [OpenURI](https://confluence.omprussia.ru/pages/viewpage.action?pageId=163055648) | | [sensors_plus](https://pub.dev/packages/sensors_plus) | 3.0.2 | 4.0.2 | Blocked | Нет интерфейса для использования Sensors API без Qt | - ## Package waiting Packets waiting in line diff --git a/packages/device_info_plus/device_info_plus_aurora/example/.gitignore b/example/.gitignore similarity index 94% rename from packages/device_info_plus/device_info_plus_aurora/example/.gitignore rename to example/.gitignore index 3db3823..bf6a5bc 100644 --- a/packages/device_info_plus/device_info_plus_aurora/example/.gitignore +++ b/example/.gitignore @@ -45,3 +45,7 @@ app.*.map.json # Aurora generated /aurora/flutter + +# Dart generated +*.g.dart +*.freezed.dart diff --git a/example/.metadata b/example/.metadata new file mode 100644 index 0000000..8a5abeb --- /dev/null +++ b/example/.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: app + +# 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' diff --git a/example/README.md b/example/README.md new file mode 100644 index 0000000..09bcd04 --- /dev/null +++ b/example/README.md @@ -0,0 +1,19 @@ +# Flutter example packages + +Demonstrating the operation of Flutter plugins on the Aurora OS. + +## Getting Started + +```shell +# Add an alias if it doesn't already exist +alias flutter-aurora=$HOME/.local/opt/flutter/bin/flutter + +# Get dependencies +flutter-aurora pub get + +# Generate internationalizing +flutter-aurora pub run build_runner build + +# Run build +flutter-aurora build aurora --release # [--release|--debug|--profile] +``` diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml new file mode 100644 index 0000000..f9b3034 --- /dev/null +++ b/example/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml diff --git a/example/android/.gitignore b/example/android/.gitignore new file mode 100644 index 0000000..6f56801 --- /dev/null +++ b/example/android/.gitignore @@ -0,0 +1,13 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java + +# Remember to never publicly share your keystore. +# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app +key.properties +**/*.keystore +**/*.jks diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle new file mode 100644 index 0000000..2162396 --- /dev/null +++ b/example/android/app/build.gradle @@ -0,0 +1,66 @@ +def localProperties = new Properties() +def localPropertiesFile = rootProject.file('local.properties') +if (localPropertiesFile.exists()) { + localPropertiesFile.withReader('UTF-8') { reader -> + localProperties.load(reader) + } +} + +def flutterRoot = localProperties.getProperty('flutter.sdk') +if (flutterRoot == null) { + throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +} + +def flutterVersionCode = localProperties.getProperty('flutter.versionCode') +if (flutterVersionCode == null) { + flutterVersionCode = '1' +} + +def flutterVersionName = localProperties.getProperty('flutter.versionName') +if (flutterVersionName == null) { + flutterVersionName = '1.0' +} + +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" + +android { + compileSdkVersion getProperty('flutter.compileSdkVersion').toInteger() + ndkVersion flutter.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = '1.8' + } + + sourceSets { + main.java.srcDirs += 'src/main/kotlin' + } + + defaultConfig { + applicationId "ru.auroraos.flutter_example_packages" + minSdkVersion getProperty('flutter.minSdkVersion').toInteger() + targetSdkVersion getProperty('flutter.targetSdkVersion').toInteger() + versionCode flutterVersionCode.toInteger() + versionName flutterVersionName + } + + buildTypes { + release { + signingConfig signingConfigs.debug + } + } +} + +flutter { + source '../..' +} + +dependencies { + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" +} diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 0000000..22f758d --- /dev/null +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 0000000..5be26d7 --- /dev/null +++ b/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + diff --git a/example/android/app/src/main/kotlin/ru/auroraos/flutter_example_packages/MainActivity.kt b/example/android/app/src/main/kotlin/ru/auroraos/flutter_example_packages/MainActivity.kt new file mode 100644 index 0000000..619a0b7 --- /dev/null +++ b/example/android/app/src/main/kotlin/ru/auroraos/flutter_example_packages/MainActivity.kt @@ -0,0 +1,6 @@ +package ru.auroraos.flutter_example_packages + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity: FlutterActivity() { +} diff --git a/example/android/app/src/main/res/drawable-v21/launch_background.xml b/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 0000000..f74085f --- /dev/null +++ b/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/example/android/app/src/main/res/drawable/icon_splash.png b/example/android/app/src/main/res/drawable/icon_splash.png new file mode 100644 index 0000000..ad245a5 Binary files /dev/null and b/example/android/app/src/main/res/drawable/icon_splash.png differ diff --git a/example/android/app/src/main/res/drawable/launch_background.xml b/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 0000000..304732f --- /dev/null +++ b/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/example/android/app/src/main/res/drawable/splash.xml b/example/android/app/src/main/res/drawable/splash.xml new file mode 100644 index 0000000..7be22f0 --- /dev/null +++ b/example/android/app/src/main/res/drawable/splash.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..cc636aa Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..dc8a840 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..d32963c Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..334a373 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..dc2e2a1 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..c6a675c Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..ddbe6c1 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..fe0d529 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..6f0c8ab Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..efa2172 Binary files /dev/null and b/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/example/android/app/src/main/res/values-night/colors.xml b/example/android/app/src/main/res/values-night/colors.xml new file mode 100644 index 0000000..b610850 --- /dev/null +++ b/example/android/app/src/main/res/values-night/colors.xml @@ -0,0 +1,4 @@ + + + #000000 + diff --git a/example/android/app/src/main/res/values-night/styles.xml b/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 0000000..b81264e --- /dev/null +++ b/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/example/android/app/src/main/res/values/colors.xml b/example/android/app/src/main/res/values/colors.xml new file mode 100644 index 0000000..5a0d831 --- /dev/null +++ b/example/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #ffffff + diff --git a/example/android/app/src/main/res/values/styles.xml b/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 0000000..7039d5b --- /dev/null +++ b/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 0000000..22f758d --- /dev/null +++ b/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,8 @@ + + + + diff --git a/example/android/build.gradle b/example/android/build.gradle new file mode 100644 index 0000000..cf4feca --- /dev/null +++ b/example/android/build.gradle @@ -0,0 +1,31 @@ +buildscript { + ext.kotlin_version = '1.8.22' + repositories { + google() + mavenCentral() + } + + dependencies { + classpath 'com.android.tools.build:gradle:7.1.3' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + } +} + +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = '../build' +subprojects { + project.buildDir = "${rootProject.buildDir}/${project.name}" +} +subprojects { + project.evaluationDependsOn(':app') +} + +task clean(type: Delete) { + delete rootProject.buildDir +} diff --git a/example/android/gradle.properties b/example/android/gradle.properties new file mode 100644 index 0000000..7c1c752 --- /dev/null +++ b/example/android/gradle.properties @@ -0,0 +1,6 @@ +org.gradle.jvmargs=-Xmx1536M +android.useAndroidX=true +android.enableJetifier=true +flutter.minSdkVersion=19 +flutter.targetSdkVersion=33 +flutter.compileSdkVersion=33 \ No newline at end of file diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000..cb24abd --- /dev/null +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip diff --git a/example/android/settings.gradle b/example/android/settings.gradle new file mode 100644 index 0000000..44e62bc --- /dev/null +++ b/example/android/settings.gradle @@ -0,0 +1,11 @@ +include ':app' + +def localPropertiesFile = new File(rootProject.projectDir, "local.properties") +def properties = new Properties() + +assert localPropertiesFile.exists() +localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + +def flutterSdkPath = properties.getProperty("flutter.sdk") +assert flutterSdkPath != null, "flutter.sdk not set in local.properties" +apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" diff --git a/example/assets/images/large_image.jpg b/example/assets/images/large_image.jpg new file mode 100644 index 0000000..f49af2f Binary files /dev/null and b/example/assets/images/large_image.jpg differ diff --git a/example/assets/images/leading.png b/example/assets/images/leading.png new file mode 100644 index 0000000..654a57a Binary files /dev/null and b/example/assets/images/leading.png differ diff --git a/example/assets/images/logo-head.png b/example/assets/images/logo-head.png new file mode 100644 index 0000000..93bed9f Binary files /dev/null and b/example/assets/images/logo-head.png differ diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/.gitignore b/example/aurora/.gitignore similarity index 100% rename from packages/battery_plus/battery_plus_aurora/example/aurora/.gitignore rename to example/aurora/.gitignore diff --git a/packages/wakelock/wakelock_aurora/example/aurora/CMakeLists.txt b/example/aurora/CMakeLists.txt similarity index 97% rename from packages/wakelock/wakelock_aurora/example/aurora/CMakeLists.txt rename to example/aurora/CMakeLists.txt index 4029b94..be3adf9 100644 --- a/packages/wakelock/wakelock_aurora/example/aurora/CMakeLists.txt +++ b/example/aurora/CMakeLists.txt @@ -2,7 +2,7 @@ # License: Proprietary. cmake_minimum_required(VERSION 3.10) -project(com.example.wakelock_aurora_example LANGUAGES CXX) +project(ru.auroraos.flutter_example_packages LANGUAGES CXX) include(GNUInstallDirs) diff --git a/example/aurora/desktop/ru.auroraos.flutter_example_packages.desktop b/example/aurora/desktop/ru.auroraos.flutter_example_packages.desktop new file mode 100644 index 0000000..385dfe0 --- /dev/null +++ b/example/aurora/desktop/ru.auroraos.flutter_example_packages.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Name=Flutter example packages +Comment=Examples of the flutter plugins for Aurora OS. +Icon=ru.auroraos.flutter_example_packages +Exec=/usr/bin/ru.auroraos.flutter_example_packages +X-Nemo-Application-Type=silica-qt5 + +[X-Application] +Permissions=DeviceInfo,UserDirs +OrganizationName=ru.auroraos +ApplicationName=flutter_example_packages diff --git a/example/aurora/icons/108x108.png b/example/aurora/icons/108x108.png new file mode 100644 index 0000000..a0b871d Binary files /dev/null and b/example/aurora/icons/108x108.png differ diff --git a/example/aurora/icons/128x128.png b/example/aurora/icons/128x128.png new file mode 100644 index 0000000..5a4abc7 Binary files /dev/null and b/example/aurora/icons/128x128.png differ diff --git a/example/aurora/icons/172x172.png b/example/aurora/icons/172x172.png new file mode 100644 index 0000000..2979270 Binary files /dev/null and b/example/aurora/icons/172x172.png differ diff --git a/example/aurora/icons/86x86.png b/example/aurora/icons/86x86.png new file mode 100644 index 0000000..b4e9f1f Binary files /dev/null and b/example/aurora/icons/86x86.png differ diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/main.cpp b/example/aurora/main.cpp similarity index 100% rename from packages/battery_plus/battery_plus_aurora/example/aurora/main.cpp rename to example/aurora/main.cpp diff --git a/packages/wakelock/wakelock_aurora/example/aurora/rpm/com.example.wakelock_aurora_example.spec b/example/aurora/rpm/ru.auroraos.flutter_example_packages.spec similarity index 85% rename from packages/wakelock/wakelock_aurora/example/aurora/rpm/com.example.wakelock_aurora_example.spec rename to example/aurora/rpm/ru.auroraos.flutter_example_packages.spec index d646922..746c024 100644 --- a/packages/wakelock/wakelock_aurora/example/aurora/rpm/com.example.wakelock_aurora_example.spec +++ b/example/aurora/rpm/ru.auroraos.flutter_example_packages.spec @@ -1,8 +1,8 @@ %global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ %global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ -Name: com.example.wakelock_aurora_example -Summary: Demonstrates how to use the wakelock_aurora plugin. +Name: ru.auroraos.flutter_example_packages +Summary: Examples of the flutter plugins for Aurora OS. Version: 0.1.0 Release: 1 License: Proprietary diff --git a/example/data/raw/flutter.svg b/example/data/raw/flutter.svg new file mode 100644 index 0000000..30c3a1e --- /dev/null +++ b/example/data/raw/flutter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/data/raw/gingerbread-man-christmas-treat-candy-cartoon.svg b/example/data/raw/gingerbread-man-christmas-treat-candy-cartoon.svg new file mode 100644 index 0000000..a14f383 --- /dev/null +++ b/example/data/raw/gingerbread-man-christmas-treat-candy-cartoon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/data/raw/icon.png b/example/data/raw/icon.png new file mode 100644 index 0000000..cefa8bf Binary files /dev/null and b/example/data/raw/icon.png differ diff --git a/example/data/raw/icon.xcf b/example/data/raw/icon.xcf new file mode 100644 index 0000000..4151ebe Binary files /dev/null and b/example/data/raw/icon.xcf differ diff --git a/example/data/raw/icon2.png b/example/data/raw/icon2.png new file mode 100644 index 0000000..0282c35 Binary files /dev/null and b/example/data/raw/icon2.png differ diff --git a/example/data/raw/links b/example/data/raw/links new file mode 100644 index 0000000..6c111aa --- /dev/null +++ b/example/data/raw/links @@ -0,0 +1,3 @@ +https://iconduck.com/icons/94312/flutter +https://iconduck.com/icons/54169/package +https://iconduck.com/illustrations/108225/gingerbread-man-christmas-treat-candy-cartoon diff --git a/example/data/raw/logo-head.svg b/example/data/raw/logo-head.svg new file mode 100644 index 0000000..ee98409 --- /dev/null +++ b/example/data/raw/logo-head.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/data/raw/package.svg b/example/data/raw/package.svg new file mode 100644 index 0000000..3626988 --- /dev/null +++ b/example/data/raw/package.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/example/l10n.yaml b/example/l10n.yaml new file mode 100644 index 0000000..15338f2 --- /dev/null +++ b/example/l10n.yaml @@ -0,0 +1,3 @@ +arb-dir: lib/l10n +template-arb-file: app_en.arb +output-localization-file: app_localizations.dart diff --git a/example/lib/app.dart b/example/lib/app.dart new file mode 100644 index 0000000..180e1bb --- /dev/null +++ b/example/lib/app.dart @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/packages.dart'; +import 'package:flutter_example_packages/pages/home/page.dart'; +import 'package:flutter_example_packages/theme/theme.dart'; +import 'package:flutter_example_packages/widgets/layouts/page_layout.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +/// Main app class +class MyApp extends StatelessWidget { + const MyApp({super.key}); + + @override + Widget build(BuildContext context) { + final routes = { + '/': (context) => const HomePage(), + }; + for (var item in packages) { + if (item is PackagePage) { + routes['/${item.key}'] = (context) => PageLayout( + child: item.page.call(), + ); + } + } + + return MaterialApp( + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, + debugShowCheckedModeBanner: false, + theme: appTheme, + initialRoute: '/', + routes: routes, + ); + } +} diff --git a/example/lib/base/build/build.config.dart b/example/lib/base/build/build.config.dart new file mode 100644 index 0000000..7a72998 --- /dev/null +++ b/example/lib/base/build/build.config.dart @@ -0,0 +1,7 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +abstract class BuildConfig { + bool get isDebug; +} diff --git a/example/lib/base/build/build.debug.dart b/example/lib/base/build/build.debug.dart new file mode 100644 index 0000000..0efafcf --- /dev/null +++ b/example/lib/base/build/build.debug.dart @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'build.config.dart'; + +class BuildDebugConfig implements BuildConfig { + @override + bool get isDebug => true; +} diff --git a/example/lib/base/build/build.release.dart b/example/lib/base/build/build.release.dart new file mode 100644 index 0000000..c5cd3aa --- /dev/null +++ b/example/lib/base/build/build.release.dart @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'build.config.dart'; + +class BuildReleaseConfig implements BuildConfig { + @override + bool get isDebug => false; +} diff --git a/example/lib/base/di/app_di.dart b/example/lib/base/di/app_di.dart new file mode 100644 index 0000000..eacc605 --- /dev/null +++ b/example/lib/base/di/app_di.dart @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/build/build.config.dart'; +import 'package:flutter_example_packages/pages/home/model.dart'; +import 'package:get_it/get_it.dart'; + +final getIt = GetIt.instance; + +/// Initialization application DI +void setupDI(BuildConfig config) { + getIt + ..registerSingleton(config) + ..registerFactory(() => HomeModel()); +} diff --git a/example/lib/base/package/package.dart b/example/lib/base/package/package.dart new file mode 100644 index 0000000..0908cdd --- /dev/null +++ b/example/lib/base/package/package.dart @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:universal_io/io.dart'; + +class Package { + Package({ + required this.key, + required this.descEN, + required this.descRU, + required this.version, + required this.isPlatformDependent, + }); + + /// Get brief description of the package + String get desc => (Platform.localeName == 'ru_RU' ? descRU : descEN) + .replaceAll("\n", " ") + .replaceAll(RegExp(' +'), ' ') + .trim(); + + /// Key package (https://pub.dev/packages/) + final String key; + + /// Brief description of the package (EN) + final String descEN; + + /// Brief description of the package (RU) + final String descRU; + + /// Version package check + final String version; + + /// Is the package platform dependent? + final bool isPlatformDependent; +} diff --git a/example/lib/base/package/package_dialog.dart b/example/lib/base/package/package_dialog.dart new file mode 100644 index 0000000..3d6b6e6 --- /dev/null +++ b/example/lib/base/package/package_dialog.dart @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package.dart'; +import 'package:universal_io/io.dart'; + +class PackageDialog extends Package { + PackageDialog({ + required super.key, + required super.descEN, + required super.descRU, + required super.version, + required super.isPlatformDependent, + required this.messageEN, + required this.messageRU, + }); + + /// Get brief description of the package + String get message => (Platform.localeName == 'ru_RU' ? messageRU : messageEN) + .replaceAll("\n", " ") + .replaceAll(RegExp(' +'), ' ') + .trim(); + + /// Message show in dialog (EN) + final String messageEN; + + /// Message show in dialog (RU) + final String messageRU; +} diff --git a/example/lib/base/package/package_page.dart b/example/lib/base/package/package_page.dart new file mode 100644 index 0000000..d0a1c3c --- /dev/null +++ b/example/lib/base/package/package_page.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/base/package/package.dart'; + +class PackagePage extends Package { + PackagePage({ + required super.key, + required super.descEN, + required super.descRU, + required super.version, + required super.isPlatformDependent, + required this.page, + required this.init, + }) { + init.call(); + } + + /// Package preview page + final Widget Function() page; + + /// Init callback + final void Function() init; +} diff --git a/example/lib/extensions/keys_ext.dart b/example/lib/extensions/keys_ext.dart new file mode 100644 index 0000000..ead4c20 --- /dev/null +++ b/example/lib/extensions/keys_ext.dart @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; + +/// Extensions for [GlobalKey] +extension ExtGlobalKey on GlobalKey { + /// Get height by key + double? getHeight() { + if (currentContext == null) { + return null; + } + try { + final renderBoxRed = currentContext!.findRenderObject() as RenderBox; + final sizeRed = renderBoxRed.size; + return sizeRed.height; + } catch (e) { + return 0; + } + } +} diff --git a/example/lib/l10n/app_en.arb b/example/lib/l10n/app_en.arb new file mode 100644 index 0000000..37af148 --- /dev/null +++ b/example/lib/l10n/app_en.arb @@ -0,0 +1,203 @@ +{ + "@_PROVIDER": {}, + "providerTitle": "Provider", + "providerSubtitle": "Simple example use provider package", + + "@_RXDART": {}, + "rxdartTitle": "Rxdart", + "rxdartSubtitle": "Simple example using Rx for Dart", + + "@_TRANSLATOR": {}, + "translatorTitle": "Translate", + "translatorSubtitle": "Translate en -> ru 'Hello!'", + "translatorText": "Hello!", + + "@_EQUATABLE": {}, + "equatableTitleDefault": "It's default class, 46 of lines", + "equatableTitleFreezed": "It's equatable class, 26 of lines", + "equatableSubtitle": "Methods: toString, operator ==, hashCode.", + + "@_FREEZED": {}, + "freezedTitleDefault": "It's default class, 74 of lines", + "freezedTitleFreezed": "It's freezed class, 21 of lines", + "freezedSubtitle": "Methods: fromJson, copyWith, toJson, toString, operator ==, hashCode.", + + "@_DARTZ": {}, + "dartzTitle": "Convert size", + "dartzDesc": "Convert the size grid of Russia to the size grid of Europe.", + "dartzErrorReq": "Required field", + "dartzErrorInt": "Please enter RUS size (42 - 62)", + "dartzErrorFound": "Size not found (42 - 62)", + "dartzDefaultValue": "Specify the size and click 'Submit'", + "dartzLabel": "Size in RUS", + "dartzSubmit": "Submit", + + "@_BATTERY_PLUS": {}, + "batteryPlusTitleBatteryLevel": "Battery Level", + "batteryPlusDescBatteryLevel": "Battery level in percent 0 - 100.", + "batteryPlusTitleBatteryState": "Battery State", + "batteryPlusDescBatteryState": "Battery state: full, charging, discharging, unknown.", + "batteryPlusTitleBatterySaveMode": "Save Mode", + "batteryPlusDescBatterySaveMode": "Check is enable 'Save Mode'.", + "batteryPlusTitleBatteryStateLive": "Battery State 'Live'", + "batteryPlusDescBatteryStateLive": "Battery change state stream.", + + "@_FLUTTER_KEYBOARD_VISIBILITY": {}, + "flutterKeyboardVisibilityTitle": "Keyboard", + "flutterKeyboardVisibilityDesc": "Stream state keyboard open/close", + "flutterKeyboardVisibilityTitleHeight": "Keyboard height", + "flutterKeyboardVisibilityDescHeight": "Stream state keyboard height", + "flutterKeyboardVisibilityField": "Click for focus", + "flutterKeyboardVisibilityButton": "Clear focus", + + "@_DEVICE_INFO_PLUS": {}, + "deviceInfoPlusTitleID": "ID", + "deviceInfoPlusDescID": "Device ID.", + "deviceInfoPlusTitleName": "Name", + "deviceInfoPlusDescName": "Device name.", + "deviceInfoPlusTitleVersion": "Version OS", + "deviceInfoPlusDescVersion": "Short OS version.", + "deviceInfoPlusTitlePrettyName": "Full Name", + "deviceInfoPlusDescPrettyName": "Pretty name OS.", + "deviceInfoPlusTitleGNSS": "GNSS", + "deviceInfoPlusDescGNSS": "Check is has GNSS.", + "deviceInfoPlusTitleNFC": "NFC", + "deviceInfoPlusDescNFC": "Check is has NFC.", + "deviceInfoPlusTitleBluetooth": "Bluetooth", + "deviceInfoPlusDescBluetooth": "Check is has bluetooth.", + "deviceInfoPlusTitleWlan": "WLAN", + "deviceInfoPlusDescWlan": "Check is has Wireless LAN.", + "deviceInfoPlusTitleMaxCpuClockSpeed": "CPU speed", + "deviceInfoPlusDescMaxCpuClockSpeed": "Max CPU clock speed.", + "deviceInfoPlusTitleNumberCpuCores": "CPU cores", + "deviceInfoPlusDescNumberCpuCores": "Number CPU cores.", + "deviceInfoPlusTitleBatteryCharge": "Battery charge", + "deviceInfoPlusDescBatteryCharge": "Battery level in percent 0-100.", + "deviceInfoPlusTitleMainCameraResolution": "Main camera", + "deviceInfoPlusDescMainCameraResolution": "Main camera resolution.", + "deviceInfoPlusTitleFrontalCameraResolution": "Frontal camera", + "deviceInfoPlusDescFrontalCameraResolution": "Frontal camera resolution.", + "deviceInfoPlusTitleRamTotalSize": "RAM total", + "deviceInfoPlusDescRamTotalSize": "RAM total size.", + "deviceInfoPlusTitleRamFreeSize": "RAM free", + "deviceInfoPlusDescRamFreeSize": "RAM free size.", + "deviceInfoPlusTitleScreenResolution": "Screen", + "deviceInfoPlusDescScreenResolution": "Screen resolution.", + "deviceInfoPlusTitleOsVersion": "Version OS", + "deviceInfoPlusDescOsVersion": "Full OS version.", + "deviceInfoPlusTitleDeviceModel": "Device", + "deviceInfoPlusDescDeviceModel": "Device name model.", + + "@_FLUTTER_LOCAL_NOTIFICATIONS": {}, + "flutterLocalNotificationsHintTitle": "Notification title", + "flutterLocalNotificationsHintBody": "Notification body", + "flutterLocalNotificationsBtn": "Send", + + "@_FLUTTER_SECURE_STORAGE": {}, + "flutterSecureStorageSuccess": "Data saved successfully", + "flutterSecureStorageTitleSave": "Save value", + "flutterSecureStorageTitleGet": "Get value", + "flutterSecureStorageFieldPass": "Password", + "flutterSecureStorageFieldKey": "Key", + "flutterSecureStorageFieldValue": "Value", + "flutterSecureStorageBtnSave": "Save value", + "flutterSecureStorageBtnGet": "Get value", + + "@_PACKAGE_INFO_PLUS": {}, + "packageInfoPlusTitlePackageName": "Package", + "packageInfoPlusDescPackageName": "Package name.", + "packageInfoPlusTitleApplicationName": "Name", + "packageInfoPlusDescApplicationName": "Application name.", + + "@_PATH_PROVIDER": {}, + "pathProviderTitleApplicationSupport": "Application Support", + "pathProviderDescApplicationSupport": "Directory where the application may place application support files.", + "pathProviderTitleTemporary": "Temporary", + "pathProviderDescTemporary": "Directory location where user-specific non-essential (cached) data should be written.", + "pathProviderTitleApplicationDocuments": "Documents", + "pathProviderDescApplicationDocuments": "Directory containing user document files.", + "pathProviderTitleDownloads": "Download", + "pathProviderDescDownloads": "Directory for user's downloaded files.", + "pathProviderTitlePictures": "Pictures", + "pathProviderDescPictures": "There is no concept of External in Aurora OS, but this interface allows you to get the StorageDirectory.pictures directory.", + "pathProviderTitleMusic": "Music", + "pathProviderDescMusic": "There is no concept of External in Aurora OS, but this interface allows you to get the StorageDirectory.music directory.", + "pathProviderTitleMovies": "Movies", + "pathProviderDescMovies": "There is no concept of External in Aurora OS, but this interface allows you to get the StorageDirectory.movies directory.", + + "@_SHARED_PREFERENCES": {}, + "sharedPreferencesTitleState": "State", + "sharedPreferencesTitleUpdate": "Update", + "sharedPreferencesFieldInt": "Int", + "sharedPreferencesFieldBool": "Bool", + "sharedPreferencesFieldDouble": "Double", + "sharedPreferencesFieldString": "String", + "sharedPreferencesFieldList": "List", + "sharedPreferencesFieldBtnClean": "Clean", + "sharedPreferencesFieldBtn": "Save", + "sharedPreferencesFieldError": "Please enter {value} value", + "@sharedPreferencesFieldError": { + "placeholders": { + "value": { + "type": "String", + "example": "int" + } + } + }, + + "@_WAKELOCK": {}, + "wakelockTitle": "Wakelock", + "wakelockDesc": "The plugin allows you to enable and toggle the screen wakelock, which prevents the screen from turning off automatically.", + + "@_XDGA_DIRECTORIES": {}, + "xdgaDirectoriesTitleCacheLocation": "App Data Location", + "xdgaDirectoriesDescCacheLocation": "Directory location where persistent application data can be stored.", + "xdgaDirectoriesTitleAppDataLocation": "Cache Location", + "xdgaDirectoriesDescAppDataLocation": "Directory location where user-specific non-essential (cached) data should be written.", + "xdgaDirectoriesTitleDocumentsLocation": "Documents Location", + "xdgaDirectoriesDescDocumentsLocation": "Directory containing user document files.", + "xdgaDirectoriesTitleDownloadLocation": "Download Location", + "xdgaDirectoriesDescDownloadLocation": "Directory for user's downloaded files.", + "xdgaDirectoriesTitleMusicLocation": "Music Location", + "xdgaDirectoriesDescMusicLocation": "Directory containing the user's music or other audio files.", + "xdgaDirectoriesTitlePicturesLocation": "Pictures Location", + "xdgaDirectoriesDescPicturesLocation": "Directory containing the user's pictures or photos.", + "xdgaDirectoriesTitleGenericDataLocation": "Generic Data Location", + "xdgaDirectoriesDescGenericDataLocation": "Directory location where persistent data shared across applications can be stored.", + "xdgaDirectoriesTitleMoviesLocation": "Movies Location", + "xdgaDirectoriesDescMoviesLocation": "Directory containing the user's movies and videos.", + + "@_COMMON": {}, + "commonClose": "Close", + "commonEmptyValue": "Empty", + "commonLoading": "Loading...", + + "@_HOME_SCREEN": {}, + "homePageTitle": "Flutter Aurora OS", + "homeWelcomeTitle": "Welcome!", + "homeWelcomeText": "In this application you can find {count} Flutter plugins supporting Aurora OS. If it happens that something is missing for you, you can write to us or add it yourself.", + "@homeWelcomeText": { + "placeholders": { + "count": { + "type": "int", + "example": "0" + } + } + }, + "homeListStateDependent": "platform dependent", + "homeListStateIndependent": "platform independent", + "homeListVersion": "Version: {version}", + "@homeListVersion": { + "placeholders": { + "version": { + "type": "String", + "example": "1.0.0" + } + } + }, + "homeSearchTitle": "Search...", + "homeSearch": "Search packages", + "homeFilter": "Filter", + "homeNotFoundTitle": "Not found", + "homeNotFoundSubtitle": "What you were looking for is not in the list of verified plugins, but this does not mean that it will not work, check it out and you may want to add it to this list of verified plugins." +} diff --git a/example/lib/l10n/app_ru.arb b/example/lib/l10n/app_ru.arb new file mode 100644 index 0000000..7c511af --- /dev/null +++ b/example/lib/l10n/app_ru.arb @@ -0,0 +1,195 @@ +{ + "@_PROVIDER": {}, + "providerTitle": "Provider", + "providerSubtitle": "Простой пример использования пакета provider", + + "@_RXDART": {}, + "rxdartTitle": "Rxdart", + "rxdartSubtitle": "Простой пример использования Rx для Dart", + + "@_TRANSLATOR": {}, + "translatorTitle": "Переводчик", + "translatorSubtitle": "Перевод en -> ru 'Hello!'", + "translatorText": "Hello!", + + "@_EQUATABLE": {}, + "equatableTitleDefault": "Класс по умолчанию, 46 строки", + "equatableTitleFreezed": "Класс c freezed, 26 строк", + "equatableSubtitle": "Методы: toString, operator ==, hashCode.", + + "@_FREEZED": {}, + "freezedTitleDefault": "Класс по умолчанию, 74 строки", + "freezedTitleFreezed": "Класс c freezed, 21 строка", + "freezedSubtitle": "Методы: fromJson, copyWith, toJson, toString, operator ==, hashCode.", + + "@_DARTZ": {}, + "dartzTitle": "Преобразовать размер", + "dartzDesc": "Преобразовать размерную сетку России в размерную сетку Европы.", + "dartzErrorReq": "Обязательное поле", + "dartzErrorInt": "Введите размер RUS (42–62)", + "dartzErrorFound": "Размер не найден (42–62)", + "dartzDefaultValue": "Укажите размер и нажмите 'Отправить'", + "dartzLabel": "Размер в RUS", + "dartzSubmit": "Отправить", + + "@_BATTERY_PLUS": {}, + "batteryPlusTitleBatteryLevel": "Уровень заряда батареи", + "batteryPlusDescBatteryLevel": "Уровень заряда батареи в процентах от 0 до 100.", + "batteryPlusTitleBatteryState": "Состояние батареи", + "batteryPlusDescBatteryState": "Состояния: full, charging, discharging, unknown.", + "batteryPlusTitleBatterySaveMode": "Save Mode", + "batteryPlusDescBatterySaveMode": "Проверка включен ли режим 'Save Mode'.", + "batteryPlusTitleBatteryStateLive": "Состояние батареи 'Live'", + "batteryPlusDescBatteryStateLive": "Изменение состояния батареи.", + + "@_FLUTTER_KEYBOARD_VISIBILITY": {}, + "flutterKeyboardVisibilityTitle": "Клавиатура", + "flutterKeyboardVisibilityDesc": "Сигнал при изменении состояния клавиатуры открыта/закрыта", + "flutterKeyboardVisibilityTitleHeight": "Высота клавиатуры", + "flutterKeyboardVisibilityDescHeight": "Сигнал при изменении высоты клавиатуры", + "flutterKeyboardVisibilityField": "Нажмите, чтобы сфокусироваться", + "flutterKeyboardVisibilityButton": "Снять фокус", + + "@_DEVICE_INFO_PLUS": {}, + "deviceInfoPlusTitleID": "ID", + "deviceInfoPlusDescID": "Идентификатор устройства.", + "deviceInfoPlusTitleName": "Имя", + "deviceInfoPlusDescName": "Имя устройства.", + "deviceInfoPlusTitleVersion": "Версия ОС", + "deviceInfoPlusDescVersion": "Короткое название версии ОС.", + "deviceInfoPlusTitlePrettyName": "Полное имя", + "deviceInfoPlusDescPrettyName": "Красивое имя ОС.", + "deviceInfoPlusTitleGNSS": "GNSS", + "deviceInfoPlusDescGNSS": "Проверить наличие GNSS.", + "deviceInfoPlusTitleNFC": "NFC", + "deviceInfoPlusDescNFC": "Проверить, есть ли NFC.", + "deviceInfoPlusTitleBluetooth": "Bluetooth", + "deviceInfoPlusDescBluetooth": "Проверьте, есть ли Bluetooth.", + "deviceInfoPlusTitleWlan": "WLAN", + "deviceInfoPlusDescWlan": "Проверьте, есть ли Wireless LAN.", + "deviceInfoPlusTitleMaxCpuClockSpeed": "Частота процессора", + "deviceInfoPlusDescMaxCpuClockSpeed": "Максимальная тактовая частота процессора.", + "deviceInfoPlusTitleNumberCpuCores": "Ядра ЦП", + "deviceInfoPlusDescNumberCpuCores": "Количество ядер ЦП.", + "deviceInfoPlusTitleBatteryCharge": "Заряд батареи", + "deviceInfoPlusDescBatteryCharge": "Уровень заряда батареи в процентах от 0 до 100.", + "deviceInfoPlusTitleMainCameraResolution": "Основная камера", + "deviceInfoPlusDescMainCameraResolution": "Разрешение основной камеры.", + "deviceInfoPlusTitleFrontalCameraResolution": "Фронтальная камера", + "deviceInfoPlusDescFrontalCameraResolution": "Разрешение фронтальной камеры.", + "deviceInfoPlusTitleRamTotalSize": "Всего ОЗУ", + "deviceInfoPlusDescRamTotalSize": "Общий размер ОЗУ.", + "deviceInfoPlusTitleRamFreeSize": "Свободно ОЗУ", + "deviceInfoPlusDescRamFreeSize": "Свободный размер ОЗУ.", + "deviceInfoPlusTitleScreenResolution": "Экран", + "deviceInfoPlusDescScreenResolution": "Разрешение экрана.", + "deviceInfoPlusTitleOsVersion": "Версия ОС", + "deviceInfoPlusDescOsVersion": "Полное название версия ОС.", + "deviceInfoPlusTitleDeviceModel": "Устройство", + "deviceInfoPlusDescDeviceModel": "Имя модели устройства.", + + "@_FLUTTER_LOCAL_NOTIFICATIONS": {}, + "flutterLocalNotificationsHintTitle": "Заголовок уведомления", + "flutterLocalNotificationsHintBody": "Текст уведомления", + "flutterLocalNotificationsBtn": "Отправить", + + "@_FLUTTER_SECURE_STORAGE": {}, + "flutterSecureStorageSuccess": "Данные успешно сохранены", + "flutterSecureStorageTitleSave": "Сохранить значение", + "flutterSecureStorageTitleGet": "Получить значение", + "flutterSecureStorageFieldPass": "Пароль", + "flutterSecureStorageFieldKey": "Ключ", + "flutterSecureStorageFieldValue": "Значение", + "flutterSecureStorageBtnSave": "Сохранить значение", + "flutterSecureStorageBtnGet": "Получить значение", + + "@_PACKAGE_INFO_PLUS": {}, + "packageInfoPlusTitlePackageName": "Пакет", + "packageInfoPlusDescPackageName": "Имя пакета.", + "packageInfoPlusTitleApplicationName": "Имя", + "packageInfoPlusDescApplicationName": "Имя приложения.", + + "@_PATH_PROVIDER": {}, + "pathProviderTitleApplicationSupport": "Поддержка приложений", + "pathProviderDescApplicationSupport": "Каталог, в котором приложение может размещать файлы поддержки приложений.", + "pathProviderTitleTemporary": "Временный", + "pathProviderDescTemporary": "Расположение каталога, куда должны быть записаны второстепенные (кешированные) данные пользователя.", + "pathProviderTitleApplicationDocuments": "Документы", + "pathProviderDescApplicationDocuments": "Каталог, содержащий файлы пользовательских документов.", + "pathProviderTitleDownloads": "Скачать", + "pathProviderDescDownloads": "Каталог для загруженных пользователем файлов.", + "pathProviderTitlePictures": "Изображения", + "pathProviderDescPictures": "В Aurora OS нет концепции External, но этот интерфейс позволяет получить каталог StorageDirectory.pictures.", + "pathProviderTitleMusic": "Музыка", + "pathProviderDescMusic": "В Aurora OS нет концепции External, но этот интерфейс позволяет получить каталог StorageDirectory.music.", + "pathProviderTitleMovies": "Фильмы", + "pathProviderDescMovies": "В Aurora OS нет концепции External, но этот интерфейс позволяет получить каталог StorageDirectory.movies.", + + "@_SHARED_PREFERENCES": {}, + "sharedPreferencesTitleState": "Состояние", + "sharedPreferencesTitleUpdate": "Обновить", + "sharedPreferencesFieldInt": "Int", + "sharedPreferencesFieldBool": "Bool", + "sharedPreferencesFieldDouble": "Double", + "sharedPreferencesFieldString": "String", + "sharedPreferencesFieldList": "Список", + "sharedPreferencesFieldBtnClean": "Очистить", + "sharedPreferencesFieldBtn": "Сохранить", + "sharedPreferencesFieldError": "Пожалуйста, введите {value} значение", + + "@_WAKELOCK": {}, + "wakelockTitle": "Wakelock", + "wakelockDesc": "Плагин позволяет включать и переключать блокировку экрана, которая предотвращает автоматическое выключение экрана.", + + "@_XDGA_DIRECTORIES": {}, + "xdgaDirectoriesTitleCacheLocation": "App Data Location", + "xdgaDirectoriesDescCacheLocation": "Расположение каталога, в котором могут храниться постоянные данные приложения.", + "xdgaDirectoriesTitleAppDataLocation": "Cache Location", + "xdgaDirectoriesDescAppDataLocation": "Расположение каталога, в котором должны быть записаны второстепенные (кэшированные) данные пользователя.", + "xdgaDirectoriesTitleDocumentsLocation": "Documents Location", + "xdgaDirectoriesDescDocumentsLocation": "Каталог, содержащий файлы документов пользователя.", + "xdgaDirectoriesTitleDownloadLocation": "Download Location", + "xdgaDirectoriesDescDownloadLocation": "Каталог для загруженных пользователем файлов.", + "xdgaDirectoriesTitleMusicLocation": "Music Location", + "xdgaDirectoriesDescMusicLocation": "Каталог, содержащий музыку пользователя или другие аудиофайлы.", + "xdgaDirectoriesTitlePicturesLocation": "Pictures Location", + "xdgaDirectoriesDescPicturesLocation": "Каталог, содержащий изображения или фотографии пользователя.", + "xdgaDirectoriesTitleGenericDataLocation": "Generic Data Location", + "xdgaDirectoriesDescGenericDataLocation": "Расположение каталога, в котором могут храниться постоянные данные, совместно используемые приложениями.", + "xdgaDirectoriesTitleMoviesLocation": "Movies Location", + "xdgaDirectoriesDescMoviesLocation": "Каталог, содержащий фильмы и видео пользователя.", + + "@_COMMON": {}, + "commonClose": "Закрыть", + "commonEmptyValue": "Пусто", + "commonLoading": "Загрузка...", + + "@_HOME_SCREEN": {}, + "homePageTitle": "Flutter ОС Аврора", + "homeWelcomeTitle": "Приветствую!", + "homeWelcomeText": "В этом приложении вы можете найти {count} плагинов Flutter, поддерживающих ОС Aurora. Если вдруг вам чего-то не хватает, вы можете написать нам или добавить самостоятельно.", + "@homeWelcomeText": { + "placeholders": { + "count": { + "type": "int", + "example": "0" + } + } + }, + "homeListStateDependent": "платформо-зависимый", + "homeListStateIndependent": "платформонезависимый", + "homeListVersion": "Версия: {version}", + "@homeListVersion": { + "placeholders": { + "version": { + "type": "String", + "example": "1.0.0" + } + } + }, + "homeSearchTitle": "Поиск...", + "homeSearch": "Поиск пакетов", + "homeNotFoundTitle": "Не найдено", + "homeNotFoundSubtitle": "То что вы искали нет в списке провереных плагинов, но это не означает что он работать не будет, проверьте его и возможно вы захотите добавить его в этот список проверенных плагинов.", + "homeFilter": "Фильтр" +} diff --git a/example/lib/main.dart b/example/lib/main.dart new file mode 100644 index 0000000..41f13e7 --- /dev/null +++ b/example/lib/main.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/app.dart'; +import 'package:flutter_example_packages/base/build/build.release.dart'; +import 'package:flutter_example_packages/base/di/app_di.dart'; + +void main() { + setupDI(BuildReleaseConfig()); + runApp(const MyApp()); +} diff --git a/example/lib/main.release.dart b/example/lib/main.release.dart new file mode 100644 index 0000000..cf01643 --- /dev/null +++ b/example/lib/main.release.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/app.dart'; +import 'package:flutter_example_packages/base/build/build.debug.dart'; +import 'package:flutter_example_packages/base/di/app_di.dart'; + +void main() { + setupDI(BuildDebugConfig()); + runApp(const MyApp()); +} diff --git a/example/lib/packages/battery_plus/model.dart b/example/lib/packages/battery_plus/model.dart new file mode 100644 index 0000000..6ab4b6a --- /dev/null +++ b/example/lib/packages/battery_plus/model.dart @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; +import 'package:battery_plus/battery_plus.dart'; + +/// Model for [BatteryPlusPage] +class BatteryPlusModel extends Model { + /// Get [ScopedModel] + static BatteryPlusModel of(BuildContext context) => ScopedModel.of(context); + + final _battery = Battery(); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Get battery level in percent 0-100 + Future getBatteryLevel() async { + try { + return await _battery.batteryLevel; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Get status + Future getBatteryState() async { + try { + return await _battery.batteryState; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Check is enable save mode + Future isInBatterySaveMode() async { + try { + return await _battery.isInBatterySaveMode; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Stream change state + Stream onBatteryStateChanged() async* { + try { + yield await _battery.batteryState; + await for (final state in _battery.onBatteryStateChanged) { + yield state; + } + } catch (e) { + _error = e.toString(); + notifyListeners(); + } + } +} diff --git a/example/lib/packages/battery_plus/package.dart b/example/lib/packages/battery_plus/package.dart new file mode 100644 index 0000000..7b3c9e1 --- /dev/null +++ b/example/lib/packages/battery_plus/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/battery_plus/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageBatteryPlus = PackagePage( + key: 'battery_plus', + descEN: ''' + A Flutter plugin to access various information about the + battery of the device the app is running on. + ''', + descRU: ''' + Плагин Flutter для доступа к различной информации о + аккумулятор устройства, на котором запущено приложение. + ''', + version: '4.0.1', + isPlatformDependent: true, + page: () => BatteryPlusPage(), + init: () { + GetIt.instance.registerFactory(() => BatteryPlusModel()); + }, +); diff --git a/example/lib/packages/battery_plus/page.dart b/example/lib/packages/battery_plus/page.dart new file mode 100644 index 0000000..bcf08c4 --- /dev/null +++ b/example/lib/packages/battery_plus/page.dart @@ -0,0 +1,85 @@ +/* + * 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/battery_plus/model.dart'; +import 'package:flutter_example_packages/packages/battery_plus/package.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_gen/gen_l10n/app_localizations.dart'; + +class BatteryPlusPage extends AppStatefulWidget { + BatteryPlusPage({ + super.key, + }); + + final Package package = packageBatteryPlus; + + @override + State createState() => _BatteryPlusPageState(); +} + +class _BatteryPlusPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockItem( + title: l10n.batteryPlusTitleBatteryLevel, + desc: l10n.batteryPlusDescBatteryLevel, + future: model.getBatteryLevel(), + builder: (value) => '$value%', + ), + BlockItem( + title: l10n.batteryPlusTitleBatteryState, + desc: l10n.batteryPlusDescBatteryState, + future: model.getBatteryState(), + builder: (value) => + value.toString().split('.').last.toUpperCase(), + ), + BlockItem( + title: l10n.batteryPlusTitleBatterySaveMode, + desc: l10n.batteryPlusDescBatterySaveMode, + future: model.isInBatterySaveMode(), + ), + BlockItem( + title: l10n.batteryPlusTitleBatteryStateLive, + desc: l10n.batteryPlusDescBatteryStateLive, + stream: model.onBatteryStateChanged(), + builder: (value) => + value.toString().split('.').last.toUpperCase(), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/build_runner/package.dart b/example/lib/packages/build_runner/package.dart new file mode 100644 index 0000000..942b083 --- /dev/null +++ b/example/lib/packages/build_runner/package.dart @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageBuildRunner = PackageDialog( + key: 'build_runner', + descEN: ''' + The build_runner package provides a concrete way of generating files using + Dart code. Files are always generated directly on disk, and rebuilds + are incremental - inspired by tools such as Bazel. + ''', + descRU: ''' + Пакет build_runner предоставляет конкретный способ создания файлов с + использованием кода Dart. Файлы всегда генерируются непосредственно на + диске и перестраиваются являются инкрементными — вдохновлены такими + инструментами, как Bazel. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '2.3.3', + isPlatformDependent: false, +); diff --git a/example/lib/packages/cached_network_image/model.dart b/example/lib/packages/cached_network_image/model.dart new file mode 100644 index 0000000..ebbd5b0 --- /dev/null +++ b/example/lib/packages/cached_network_image/model.dart @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [CachedNetworkImagePage] +class CachedNetworkImageModel extends Model { + /// Get [ScopedModel] + static CachedNetworkImageModel of(BuildContext context) => ScopedModel.of(context); +} diff --git a/example/lib/packages/cached_network_image/package.dart b/example/lib/packages/cached_network_image/package.dart new file mode 100644 index 0000000..cba869c --- /dev/null +++ b/example/lib/packages/cached_network_image/package.dart @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/cached_network_image/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageCachedNetworkImage = PackagePage( + key: 'cached_network_image', + descEN: ''' + A flutter library to show images from the internet + and keep them in the cache directory. + ''', + descRU: ''' + Библиотека флаттера для отображения изображений из + Интернета и хранения их в каталоге кеша. + ''', + version: '3.2.3', + isPlatformDependent: true, + page: () => CachedNetworkImagePage(), + init: () { + GetIt.instance.registerFactory( + () => CachedNetworkImageModel()); + }, +); diff --git a/example/lib/packages/cached_network_image/page.dart b/example/lib/packages/cached_network_image/page.dart new file mode 100644 index 0000000..0788492 --- /dev/null +++ b/example/lib/packages/cached_network_image/page.dart @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:cached_network_image/cached_network_image.dart'; +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/cached_network_image/model.dart'; +import 'package:flutter_example_packages/packages/cached_network_image/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/layouts/block_layout.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class CachedNetworkImagePage extends AppStatefulWidget { + CachedNetworkImagePage({ + super.key, + }); + + final Package package = packageCachedNetworkImage; + + @override + State createState() => _CachedNetworkImagePageState(); +} + +class _CachedNetworkImagePageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + SizedBox( + width: double.infinity, + height: 150, + child: Center( + child: CachedNetworkImage( + imageUrl: "https://via.placeholder.com/350x150", + placeholder: (context, url) => + const CircularProgressIndicator(), + errorWidget: (context, url, error) => + const Icon(Icons.error), + ), + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/crypto/package.dart b/example/lib/packages/crypto/package.dart new file mode 100644 index 0000000..fa019cb --- /dev/null +++ b/example/lib/packages/crypto/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageCrypto = PackageDialog( + key: 'crypto', + descEN: ''' + A set of cryptographic hashing functions for Dart. + ''', + descRU: ''' + Набор криптографических функций хеширования для Dart. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '3.0.2', + isPlatformDependent: false, +); diff --git a/example/lib/packages/cupertino_icons/package.dart b/example/lib/packages/cupertino_icons/package.dart new file mode 100644 index 0000000..b154ccc --- /dev/null +++ b/example/lib/packages/cupertino_icons/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageCupertinoIcons = PackageDialog( + key: 'cupertino_icons', + descEN: ''' + This is an asset repo containing the default set of icon assets + used by Flutter's Cupertino widgets. + ''', + descRU: ''' + Это репозиторий ресурсов, содержащий набор ресурсов значков по умолчанию + используется виджетами Flutter Cupertino. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '1.0.5', + isPlatformDependent: false, +); diff --git a/example/lib/packages/dartz/model.dart b/example/lib/packages/dartz/model.dart new file mode 100644 index 0000000..0174b47 --- /dev/null +++ b/example/lib/packages/dartz/model.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:dartz/dartz.dart'; +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [DartzPage] +class DartzModel extends Model { + /// Get [ScopedModel] + static DartzModel of(BuildContext context) => + ScopedModel.of(context); + + /// Example using Option from package dartz + Option getEURManSize(int size) { + if (size < 42) return none(); + if (size < 44) return some('XS'); + if (size < 46) return some('S'); + if (size < 48) return some('M'); + if (size < 50) return some('L'); + if (size < 54) return some('XL'); + if (size < 56) return some('XXL'); + if (size < 58) return some('XXXL'); + if (size <= 62) return some('XXXXL'); + return none(); + } +} diff --git a/example/lib/packages/dartz/package.dart b/example/lib/packages/dartz/package.dart new file mode 100644 index 0000000..214a2d9 --- /dev/null +++ b/example/lib/packages/dartz/package.dart @@ -0,0 +1,26 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageDartz = PackagePage( + key: 'dartz', + descEN: ''' + Functional programming in Dart. + ''', + descRU: ''' + Функциональное программирование в Dart. + ''', + version: '0.10.1', + isPlatformDependent: false, + page: () => DartzPage(), + init: () { + GetIt.instance.registerFactory(() => DartzModel()); + }, +); diff --git a/example/lib/packages/dartz/page.dart b/example/lib/packages/dartz/page.dart new file mode 100644 index 0000000..ad74e6a --- /dev/null +++ b/example/lib/packages/dartz/page.dart @@ -0,0 +1,146 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:async'; + +import 'package:flutter/foundation.dart' show kIsAurora; +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_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora.dart'; + +import 'model.dart'; +import 'package.dart'; + +class DartzPage extends AppStatefulWidget { + DartzPage({ + super.key, + }); + + final Package package = packageDartz; + + @override + State createState() => _DartzPageState(); +} + +class _DartzPageState extends AppState { + final TextEditingController _textController = TextEditingController(); + final _formKey = GlobalKey(); + String? _sizeEUR; + bool _isError = false; + + double _keyboardHeight = 0; + StreamSubscription? _streamSub; + final _controllerAurora = FlutterKeyboardVisibilityAurora(); + + @override + void initState() { + super.initState(); + if (kIsAurora) { + _streamSub = _controllerAurora.onChangeHeight.listen((event) { + setState(() { + _keyboardHeight = event; + }); + }); + } + } + + @override + void dispose() { + super.dispose(); + _streamSub?.cancel(); + } + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockItem( + title: l10n.dartzTitle, + desc: l10n.dartzDesc, + value: _sizeEUR ?? l10n.dartzDefaultValue, + ), + TextFormField( + controller: _textController, + keyboardType: TextInputType.number, + decoration: InputDecoration( + labelText: l10n.dartzLabel, + errorText: + _isError ? l10n.dartzErrorFound : null, + ), + validator: (value) { + if (value == null || value.isEmpty) { + return l10n.dartzErrorReq; + } + if (int.tryParse(value) == null) { + return l10n.dartzErrorInt; + } + return null; + }, + ), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: () async { + if (_formKey.currentState?.validate() == true) { + final sizeRU = int.parse(_textController.text); + model + .getEURManSize(sizeRU) + .map( + (classification) => setState(() { + _isError = false; + _sizeEUR = classification; + }), + ) + .getOrElse( + () => setState(() { + _sizeEUR = null; + _isError = true; + }), + ); + } + }, + child: TextBodyLarge( + l10n.dartzSubmit, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/device_info_plus/model.dart b/example/lib/packages/device_info_plus/model.dart new file mode 100644 index 0000000..3b7c11e --- /dev/null +++ b/example/lib/packages/device_info_plus/model.dart @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:device_info_plus_aurora/aurora_device_info.dart'; +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [DeviceInfoPlusPage] +class DeviceInfoPlusModel extends Model { + /// Get [ScopedModel] + static DeviceInfoPlusModel of(BuildContext context) => + ScopedModel.of(context); + + final _deviceInfoPlugin = DeviceInfoPlugin(); + + /// Get Aurora info + Future get _deviceInfo async => + await _deviceInfoPlugin.linuxInfo as AuroraDeviceInfo; + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Get ID name device + Future getID() async { + try { + return (await _deviceInfo).id; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Device name + Future getName() async { + try { + return (await _deviceInfo).name; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Version + Future getVersion() async { + try { + return (await _deviceInfo).version; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Device full name + Future getPrettyName() async { + try { + return (await _deviceInfo).prettyName; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Check has GNSS + Future hasGNSS() async { + try { + return (await _deviceInfo).hasGNSS; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Check has NFC + Future hasNFC() async { + try { + return (await _deviceInfo).hasNFC; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Check has Bluetooth + Future hasBluetooth() async { + try { + return (await _deviceInfo).hasBluetooth; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Check has Wlan + Future hasWlan() async { + try { + return (await _deviceInfo).hasWlan; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Max CPU clock speed + Future getMaxCpuClockSpeed() async { + try { + return (await _deviceInfo).maxCpuClockSpeed; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Number CPU cores + Future getNumberCpuCores() async { + try { + return (await _deviceInfo).numberCpuCores; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Get battery level in percent 0-100 + Future getBatteryChargePercentage() async { + try { + return (await _deviceInfo).batteryChargePercentage; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Camera resolution + Future getMainCameraResolution() async { + try { + return (await _deviceInfo).mainCameraResolution; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Frontal camera resolution + Future getFrontalCameraResolution() async { + try { + return (await _deviceInfo).frontalCameraResolution; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// RAM total size + Future getRamTotalSize() async { + try { + return (await _deviceInfo).ramTotalSize; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// RAM free size + Future getRamFreeSize() async { + try { + return (await _deviceInfo).ramFreeSize; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Screen resolution + Future getScreenResolution() async { + try { + return (await _deviceInfo).screenResolution; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Version @todo + Future getOsVersion() async { + try { + return (await _deviceInfo).osVersion; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Device model + Future getDeviceModel() async { + try { + return (await _deviceInfo).deviceModel; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Get map with info about external storage + Future?> getExternalStorage() async { + try { + return (await _deviceInfo).externalStorage; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Get map with info about internal storage + Future?> getInternalStorage() async { + try { + return (await _deviceInfo).internalStorage; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Get map with info about SIM cards + Future>?> getSimCards() async { + try { + return (await _deviceInfo).simCards; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } +} diff --git a/example/lib/packages/device_info_plus/package.dart b/example/lib/packages/device_info_plus/package.dart new file mode 100644 index 0000000..d8cc105 --- /dev/null +++ b/example/lib/packages/device_info_plus/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/device_info_plus/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageDeviceInfoPlus = PackagePage( + key: 'device_info_plus', + descEN: ''' + Get current device information from within the Flutter application. + ''', + descRU: ''' + Получите текущую информацию об устройстве из приложения Flutter. + ''', + version: '8.2.2', + isPlatformDependent: true, + page: () => DeviceInfoPlusPage(), + init: () { + GetIt.instance + .registerFactory(() => DeviceInfoPlusModel()); + }, +); diff --git a/example/lib/packages/device_info_plus/page.dart b/example/lib/packages/device_info_plus/page.dart new file mode 100644 index 0000000..903e399 --- /dev/null +++ b/example/lib/packages/device_info_plus/page.dart @@ -0,0 +1,150 @@ +/* + * 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/device_info_plus/model.dart'; +import 'package:flutter_example_packages/packages/device_info_plus/package.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_gen/gen_l10n/app_localizations.dart'; + +class DeviceInfoPlusPage extends AppStatefulWidget { + DeviceInfoPlusPage({ + super.key, + }); + + final Package package = packageDeviceInfoPlus; + + @override + State createState() => _DeviceInfoPlusPageState(); +} + +class _DeviceInfoPlusPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockItem( + title: l10n.deviceInfoPlusTitleID, + desc: l10n.deviceInfoPlusDescID, + future: model.getID(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleName, + desc: l10n.deviceInfoPlusDescName, + future: model.getName(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleVersion, + desc: l10n.deviceInfoPlusDescVersion, + future: model.getVersion(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitlePrettyName, + desc: l10n.deviceInfoPlusDescName, + future: model.getPrettyName(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleGNSS, + desc: l10n.deviceInfoPlusDescGNSS, + future: model.hasGNSS(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleNFC, + desc: l10n.deviceInfoPlusDescNFC, + future: model.hasNFC(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleBluetooth, + desc: l10n.deviceInfoPlusDescBluetooth, + future: model.hasBluetooth(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleWlan, + desc: l10n.deviceInfoPlusDescWlan, + future: model.hasWlan(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleMaxCpuClockSpeed, + desc: l10n.deviceInfoPlusDescMaxCpuClockSpeed, + future: model.getMaxCpuClockSpeed(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleNumberCpuCores, + desc: l10n.deviceInfoPlusDescNumberCpuCores, + future: model.getNumberCpuCores(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleBatteryCharge, + desc: l10n.deviceInfoPlusDescBatteryCharge, + future: model.getBatteryChargePercentage(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleMainCameraResolution, + desc: l10n.deviceInfoPlusDescMainCameraResolution, + future: model.getMainCameraResolution(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleFrontalCameraResolution, + desc: l10n.deviceInfoPlusDescFrontalCameraResolution, + future: model.getFrontalCameraResolution(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleRamTotalSize, + desc: l10n.deviceInfoPlusDescRamTotalSize, + future: model.getRamTotalSize(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleRamFreeSize, + desc: l10n.deviceInfoPlusDescRamFreeSize, + future: model.getRamFreeSize(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleScreenResolution, + desc: l10n.deviceInfoPlusDescScreenResolution, + future: model.getScreenResolution(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleOsVersion, + desc: l10n.deviceInfoPlusDescOsVersion, + future: model.getOsVersion(), + ), + BlockItem( + title: l10n.deviceInfoPlusTitleDeviceModel, + desc: l10n.deviceInfoPlusDescDeviceModel, + future: model.getDeviceModel(), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/equatable/model.dart b/example/lib/packages/equatable/model.dart new file mode 100644 index 0000000..42d7c4b --- /dev/null +++ b/example/lib/packages/equatable/model.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:flutter_example_packages/packages/equatable/user_entity.dart'; +import 'package:flutter_example_packages/packages/equatable/user_entity_equatable.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [EquatablePage] +class EquatableModel extends Model { + /// Get [ScopedModel] + static EquatableModel of(BuildContext context) => + ScopedModel.of(context); + + UserEntity userEntity = const UserEntity( + name: 'Default', + email: 'default@yandex.ru', + age: 12, + ); + + UserEntityEquatable userEntityEquatable= const UserEntityEquatable( + name: 'Equatable', + email: 'default@yandex.ru', + age: 12, + ); +} diff --git a/example/lib/packages/equatable/package.dart b/example/lib/packages/equatable/package.dart new file mode 100644 index 0000000..bb5d85d --- /dev/null +++ b/example/lib/packages/equatable/package.dart @@ -0,0 +1,28 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageEquatable = PackagePage( + key: 'equatable', + descEN: ''' + Being able to compare objects in Dart often involves having to override + the == operator as well as hashCode. + ''', + descRU: ''' + Возможность сравнивать объекты в Dart часто требует переопределения + оператора ==, а также hashCode. + ''', + version: '2.0.5', + isPlatformDependent: false, + page: () => EquatablePage(), + init: () { + GetIt.instance.registerFactory(() => EquatableModel()); + }, +); diff --git a/example/lib/packages/equatable/page.dart b/example/lib/packages/equatable/page.dart new file mode 100644 index 0000000..1df6614 --- /dev/null +++ b/example/lib/packages/equatable/page.dart @@ -0,0 +1,85 @@ +/* + * 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/theme/radius.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/layouts/block_layout.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class EquatablePage extends AppStatefulWidget { + EquatablePage({ + super.key, + }); + + final Package package = packageEquatable; + + @override + State createState() => _EquatablePageState(); +} + +class _EquatablePageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + TextTitleLarge(l10n.equatableTitleDefault), + const SizedBox(height: 8), + TextBodyMedium(l10n.equatableSubtitle), + const SizedBox(height: 14), + Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.blue.shade50, + borderRadius: AppRadius.small, + ), + child: Padding( + padding: const EdgeInsets.all(10), + child: TextBodyMedium(model.userEntity.toString()), + ), + ), + const SizedBox(height: 20), + TextTitleLarge(l10n.equatableTitleFreezed), + const SizedBox(height: 8), + TextBodyMedium(l10n.equatableSubtitle), + const SizedBox(height: 14), + Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.blue.shade50, + borderRadius: AppRadius.small, + ), + child: Padding( + padding: const EdgeInsets.all(10), + child: TextBodyMedium(model.userEntityEquatable.toString()), + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/equatable/user_entity.dart b/example/lib/packages/equatable/user_entity.dart new file mode 100644 index 0000000..28877f3 --- /dev/null +++ b/example/lib/packages/equatable/user_entity.dart @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/foundation.dart'; + +@immutable +class UserEntity { + const UserEntity({ + required this.name, + required this.email, + required this.age, + }); + + final String name; + final String email; + final int age; + + @override + String toString() { + return 'UserEntity(' + '$name,' + '$email,' + '$age' + ')'; + } + + @override + bool operator ==(dynamic other) { + return other is UserEntity && + other.name == name && + other.email == email && + other.age == age; + } + + @override + int get hashCode { + return Object.hash( + runtimeType, + name, + email, + age, + ); + } +} diff --git a/example/lib/packages/equatable/user_entity_equatable.dart b/example/lib/packages/equatable/user_entity_equatable.dart new file mode 100644 index 0000000..950203c --- /dev/null +++ b/example/lib/packages/equatable/user_entity_equatable.dart @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:equatable/equatable.dart'; +import 'package:flutter/foundation.dart'; + +@immutable +class UserEntityEquatable extends Equatable { + const UserEntityEquatable({ + required this.name, + required this.email, + required this.age, + }); + + final String name; + final String email; + final int age; + + @override + List get props => [name, email, age]; + + @override + bool get stringify => true; +} diff --git a/example/lib/packages/flutter_cache_manager/package.dart b/example/lib/packages/flutter_cache_manager/package.dart new file mode 100644 index 0000000..6cdede0 --- /dev/null +++ b/example/lib/packages/flutter_cache_manager/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageFlutterCacheManager = PackageDialog( + key: 'flutter_cache_manager', + descEN: ''' + CacheManager v2 introduced some breaking changes when configuring + a custom CacheManager. + ''', + descRU: ''' + В CacheManager v2 были внесены некоторые критические изменения при + настройке пользовательского CacheManager. + ''', + messageEN: ''' + This is a platform dependent plugin, used in a plugin + cached_network_image should work for you too. + ''', + messageRU: ''' + Это плагин зависимый от платформы, используется в плагине + cached_network_image, должен работать и у вас. + ''', + version: '3.3.0', + isPlatformDependent: true, +); diff --git a/example/lib/packages/flutter_keyboard_visibility/model.dart b/example/lib/packages/flutter_keyboard_visibility/model.dart new file mode 100644 index 0000000..a6ea279 --- /dev/null +++ b/example/lib/packages/flutter_keyboard_visibility/model.dart @@ -0,0 +1,58 @@ +/* + * 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'; +import 'package:flutter/foundation.dart' show kIsAurora; + +/// Model for [FlutterKeyboardVisibilityPage] +class FlutterKeyboardVisibilityModel extends Model { + /// Get [ScopedModel] + static FlutterKeyboardVisibilityModel of(BuildContext context) => + ScopedModel.of(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 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 onChangeKeyboardHeight() async* { + if (kIsAurora) { + try { + yield await _controllerAurora.height; + await for (final state in _controllerAurora.onChangeHeight) { + yield state; + } + } catch (e) { + _error = e.toString(); + notifyListeners(); + } + } else { + yield 0; + } + } +} diff --git a/example/lib/packages/flutter_keyboard_visibility/package.dart b/example/lib/packages/flutter_keyboard_visibility/package.dart new file mode 100644 index 0000000..289c603 --- /dev/null +++ b/example/lib/packages/flutter_keyboard_visibility/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'page.dart'; +import 'model.dart'; + +/// Package values +final packageFlutterKeyboardVisibility = PackagePage( + key: 'flutter_keyboard_visibility', + descEN: ''' + React to keyboard visibility changes. + ''', + descRU: ''' + Реагировать на изменения видимости клавиатуры. + ''', + version: '5.4.1', + isPlatformDependent: true, + page: () => FlutterKeyboardVisibilityPage(), + init: () { + GetIt.instance.registerFactory( + () => FlutterKeyboardVisibilityModel()); + }, +); diff --git a/example/lib/packages/flutter_keyboard_visibility/page.dart b/example/lib/packages/flutter_keyboard_visibility/page.dart new file mode 100644 index 0000000..501bf9c --- /dev/null +++ b/example/lib/packages/flutter_keyboard_visibility/page.dart @@ -0,0 +1,123 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:async'; + +import 'package:flutter/foundation.dart' show kIsAurora; +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_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 'model.dart'; +import 'package.dart'; + +class FlutterKeyboardVisibilityPage extends AppStatefulWidget { + FlutterKeyboardVisibilityPage({ + super.key, + }); + + final Package package = packageFlutterKeyboardVisibility; + + @override + State createState() => + _FlutterKeyboardVisibilityPageState(); +} + +class _FlutterKeyboardVisibilityPageState + extends AppState { + double _keyboardHeight = 0; + StreamSubscription? _streamSub; + final model = getIt(); + + @override + void initState() { + super.initState(); + if (kIsAurora) { + _streamSub = model.onChangeKeyboardHeight().listen((height) { + setState(() { + _keyboardHeight = height; + }); + }); + } + } + + @override + void dispose() { + super.dispose(); + _streamSub?.cancel(); + } + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + 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), + Visibility( + visible: kIsAurora, + child: 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(), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/flutter_local_notifications/model.dart b/example/lib/packages/flutter_local_notifications/model.dart new file mode 100644 index 0000000..31cf1d2 --- /dev/null +++ b/example/lib/packages/flutter_local_notifications/model.dart @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [FlutterLocalNotificationsPage] +class FlutterLocalNotificationsModel extends Model { + /// Get [ScopedModel] + static FlutterLocalNotificationsModel of(BuildContext context) => + ScopedModel.of(context); + + final FlutterLocalNotificationsPlugin notification = + FlutterLocalNotificationsPlugin(); + + final notificationID = 1; + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Show local notification + Future showNotification({ + required String title, + required String body, + }) async { + try { + // Cansel if already run + await notification.cancel(notificationID); + // Show notification + await notification.show( + notificationID, + title, + body, + null, + ); + } catch (e) { + _error = e.toString(); + notifyListeners(); + } + } +} diff --git a/example/lib/packages/flutter_local_notifications/package.dart b/example/lib/packages/flutter_local_notifications/package.dart new file mode 100644 index 0000000..ff8556d --- /dev/null +++ b/example/lib/packages/flutter_local_notifications/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/flutter_local_notifications/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageFlutterLocalNotifications = PackagePage( + key: 'flutter_local_notifications', + descEN: ''' + A cross platform plugin for displaying local notifications. + ''', + descRU: ''' + Кроссплатформенный плагин для отображения локальных уведомлений. + ''', + version: '14.1.1', + isPlatformDependent: true, + page: () => FlutterLocalNotificationsPage(), + init: () { + GetIt.instance.registerFactory( + () => FlutterLocalNotificationsModel()); + }, +); diff --git a/example/lib/packages/flutter_local_notifications/page.dart b/example/lib/packages/flutter_local_notifications/page.dart new file mode 100644 index 0000000..b9833d5 --- /dev/null +++ b/example/lib/packages/flutter_local_notifications/page.dart @@ -0,0 +1,96 @@ +/* + * 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_local_notifications/model.dart'; +import 'package:flutter_example_packages/packages/flutter_local_notifications/package.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 FlutterLocalNotificationsPage extends AppStatefulWidget { + FlutterLocalNotificationsPage({ + super.key, + }); + + final Package package = packageFlutterLocalNotifications; + + @override + State createState() => + _FlutterLocalNotificationsPageState(); +} + +class _FlutterLocalNotificationsPageState + extends AppState { + final TextEditingController _titleController = TextEditingController(); + final TextEditingController _bodyController = TextEditingController(); + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextField( + controller: _titleController, + decoration: InputDecoration( + hintText: l10n.flutterLocalNotificationsHintTitle, + ), + ), + const SizedBox(height: 16), + TextField( + controller: _bodyController, + decoration: InputDecoration( + hintText: l10n.flutterLocalNotificationsHintBody, + ), + ), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: () => model.showNotification( + title: _titleController.text.isEmpty + ? l10n.flutterLocalNotificationsHintTitle + : _titleController.text, + body: _bodyController.text.isEmpty + ? l10n.flutterLocalNotificationsHintBody + : _bodyController.text, + ), + child: TextBodyLarge( + l10n.flutterLocalNotificationsBtn, + color: Colors.white, + ), + ), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/flutter_markdown/model.dart b/example/lib/packages/flutter_markdown/model.dart new file mode 100644 index 0000000..bd5b831 --- /dev/null +++ b/example/lib/packages/flutter_markdown/model.dart @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [FlutterMarkdownPage] +class FlutterMarkdownModel extends Model { + /// Get [ScopedModel] + static FlutterMarkdownModel of(BuildContext context) => + ScopedModel.of(context); + + final String data = ''' +An h1 header +============ + +Paragraphs are separated by a blank line. + +2nd paragraph. *Italic*, **bold**, and `monospace`. Itemized lists +look like: + + * this one + * that one + * the other one + +Note that --- not considering the asterisk --- the actual text +content starts at 4-columns in. + +> Block quotes are +> written like so. +> +> They can span multiple paragraphs, +> if you like. + +Use 3 dashes for an em-dash. Use 2 dashes for ranges (ex., "it's all +in chapters 12--14"). Three dots ... will be converted to an ellipsis. +Unicode is supported. ☺ + +## Image + +![Minion](https://github.com/keygenqt/awesome-aurora/blob/master/docs/assets/images/common/aurora.png?raw=true) + '''; +} diff --git a/example/lib/packages/flutter_markdown/package.dart b/example/lib/packages/flutter_markdown/package.dart new file mode 100644 index 0000000..2caac89 --- /dev/null +++ b/example/lib/packages/flutter_markdown/package.dart @@ -0,0 +1,29 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageFlutterMarkdown = PackagePage( + key: 'flutter_markdown', + descEN: ''' + A markdown renderer for Flutter. It supports the original format, + but no inline HTML. + ''', + descRU: ''' + Рендерер уценки для Flutter. Он поддерживает исходный формат, + но не поддерживает встроенный HTML. + ''', + version: '0.6.15', + isPlatformDependent: false, + page: () => FlutterMarkdownPage(), + init: () { + GetIt.instance + .registerFactory(() => FlutterMarkdownModel()); + }, +); diff --git a/example/lib/packages/flutter_markdown/page.dart b/example/lib/packages/flutter_markdown/page.dart new file mode 100644 index 0000000..3c0ed59 --- /dev/null +++ b/example/lib/packages/flutter_markdown/page.dart @@ -0,0 +1,67 @@ +/* + * 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/widgets/base/export.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_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_markdown/flutter_markdown.dart'; + +import 'model.dart'; +import 'package.dart'; + +class FlutterMarkdownPage extends AppStatefulWidget { + FlutterMarkdownPage({ + super.key, + }); + + final Package package = packageFlutterMarkdown; + + @override + State createState() => _FlutterMarkdownPageState(); +} + +class _FlutterMarkdownPageState extends AppState { + final ScrollController _scrollController = ScrollController(); + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + return Column( + children: [ + Flexible( + flex: 0, + child: Padding( + padding: const EdgeInsets.only( + top: 20, + left: 20, + right: 20, + ), + child: BlockInfoPackage(widget.package), + ), + ), + Flexible( + flex: 1, + child: Markdown( + controller: _scrollController, + padding: const EdgeInsets.all(20.0), + data: model.data, + ), + ), + ], + ); + }, + ); + } +} diff --git a/example/lib/packages/flutter_secure_storage/model.dart b/example/lib/packages/flutter_secure_storage/model.dart new file mode 100644 index 0000000..c7f49f0 --- /dev/null +++ b/example/lib/packages/flutter_secure_storage/model.dart @@ -0,0 +1,109 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:convert'; + +import 'package:crypto/crypto.dart'; +import 'package:flutter/widgets.dart'; +import 'package:flutter_secure_storage/flutter_secure_storage.dart'; +import 'package:flutter_secure_storage_aurora/flutter_secure_storage_aurora.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [FlutterSecureStoragePage] +class FlutterSecureStorageModel extends Model { + /// Get [ScopedModel] + static FlutterSecureStorageModel of(BuildContext context) => + ScopedModel.of(context); + + final _secureStorage = const FlutterSecureStorage(); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Save success + bool _isSuccess = false; + + /// Public success + bool get isSuccess => _isSuccess; + + /// Value for read form secure storage + String _readValue = ""; + + /// Public read value + String get readValue => _readValue; + + // Get data from secure storage + Future read({ + required String key, + required String password, + }) async { + try { + // Update secret key + _updateByPassword(password); + // Read data + _readValue = await _secureStorage.read(key: key) ?? "Not found"; + } catch (e) { + _readValue = "Error password"; + } + notifyListeners(); + } + + // Write new data in secure storage + Future write({ + required String key, + required String value, + required String password, + }) async { + try { + // Update secret key + _updateByPassword(password); + // Clear old data + await _secureStorage.deleteAll(); + // Save new data + await _secureStorage.write(key: key, value: value); + // Show success + _isSuccess = true; + // Close success + Future.delayed(const Duration(milliseconds: 1500), () { + _isSuccess = false; + notifyListeners(); + }); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Update password + void _updateByPassword( + String password, + ) { + // https://pub.dev/packages/encrypt + // Encrypter(AES(key)) + // secure-random --length 16 --base 16 + // You can generate a secret key based on user data, as an example of a hash pin-code + FlutterSecureStorageAurora.setSecret( + _getPasswordFromString(password), + ); + } + + /// Generate secure key 32 length from string password + String _getPasswordFromString( + String password, + ) { + return md5.convert(utf8.encode(password)).toString(); + } + + /// Clear value if change values + void clearReadValue() { + _readValue = ""; + notifyListeners(); + } +} diff --git a/example/lib/packages/flutter_secure_storage/package.dart b/example/lib/packages/flutter_secure_storage/package.dart new file mode 100644 index 0000000..e3d7e0a --- /dev/null +++ b/example/lib/packages/flutter_secure_storage/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/flutter_secure_storage/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageFlutterSecureStorage = PackagePage( + key: 'flutter_secure_storage', + descEN: ''' + Flutter Secure Storage provides API to store data in secure storage. + ''', + descRU: ''' + Flutter Secure Storage предоставляет API для хранения данных в безопасном хранилище. + ''', + version: '8.0.0', + isPlatformDependent: true, + page: () => FlutterSecureStoragePage(), + init: () { + GetIt.instance.registerFactory( + () => FlutterSecureStorageModel()); + }, +); diff --git a/example/lib/packages/flutter_secure_storage/page.dart b/example/lib/packages/flutter_secure_storage/page.dart new file mode 100644 index 0000000..e106063 --- /dev/null +++ b/example/lib/packages/flutter_secure_storage/page.dart @@ -0,0 +1,214 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:async'; + +import 'package:flutter/foundation.dart' show kIsAurora; +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_secure_storage/model.dart'; +import 'package:flutter_example_packages/packages/flutter_secure_storage/package.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'; +import 'package:flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora.dart'; + +class FlutterSecureStoragePage extends AppStatefulWidget { + FlutterSecureStoragePage({ + super.key, + }); + + final Package package = packageFlutterSecureStorage; + + @override + State createState() => + _FlutterSecureStoragePageState(); +} + +class _FlutterSecureStoragePageState + extends AppState { + double _keyboardHeight = 0; + StreamSubscription? _streamSub; + final _controllerAurora = FlutterKeyboardVisibilityAurora(); + + bool _isValidSave = false; + final TextEditingController _passSaveController = TextEditingController(); + final TextEditingController _keySaveController = TextEditingController(); + final TextEditingController _valueSaveController = TextEditingController(); + + bool _isValidGet = false; + final TextEditingController _passGetController = TextEditingController(); + final TextEditingController _keyGetController = TextEditingController(); + final TextEditingController _valueGetController = TextEditingController(); + + void _validateSave() { + setState(() { + _isValidSave = _passSaveController.text.isNotEmpty && + _keySaveController.text.isNotEmpty && + _valueSaveController.text.isNotEmpty; + }); + } + + void _validateGet() { + setState(() { + _isValidGet = _passGetController.text.isNotEmpty && + _keyGetController.text.isNotEmpty; + }); + } + + @override + void initState() { + super.initState(); + if (kIsAurora) { + _streamSub = _controllerAurora.onChangeHeight.listen((event) { + setState(() { + _keyboardHeight = event; + }); + }); + } + } + + @override + void dispose() { + super.dispose(); + _streamSub?.cancel(); + } + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + title: widget.package.key, + builder: (context, child, model) { + // update read only value + _valueGetController.text = model.readValue; + // return widget + 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: [ + TextTitleLarge(l10n.flutterSecureStorageTitleSave), + const SizedBox(height: 14), + if (model.isSuccess) + BlockAlert( + l10n.flutterSecureStorageSuccess, + color: Colors.lightGreen, + ), + const SizedBox(height: 6), + TextField( + controller: _passSaveController, + decoration: InputDecoration( + labelText: l10n.flutterSecureStorageFieldPass, + ), + onChanged: (_) => _validateSave(), + ), + const SizedBox(height: 16), + TextField( + controller: _keySaveController, + decoration: InputDecoration( + labelText: l10n.flutterSecureStorageFieldKey, + ), + onChanged: (_) => _validateSave(), + ), + const SizedBox(height: 16), + TextField( + controller: _valueSaveController, + decoration: InputDecoration( + labelText: l10n.flutterSecureStorageFieldValue, + ), + onChanged: (_) => _validateSave(), + ), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _isValidSave + ? () => model.write( + key: _keySaveController.text, + value: _valueSaveController.text, + password: _passSaveController.text, + ) + : null, + child: TextBodyLarge( + l10n.flutterSecureStorageBtnSave, + color: Colors.white, + ), + ), + ), + const SizedBox(height: 30), + TextTitleLarge(l10n.flutterSecureStorageTitleGet), + const SizedBox(height: 16), + TextField( + controller: _passGetController, + decoration: InputDecoration( + labelText: l10n.flutterSecureStorageFieldPass, + ), + onChanged: (_) { + _validateGet(); + model.clearReadValue(); + }, + ), + const SizedBox(height: 16), + TextField( + controller: _keyGetController, + decoration: InputDecoration( + labelText: l10n.flutterSecureStorageFieldKey, + ), + onChanged: (_) { + _validateGet(); + model.clearReadValue(); + } + ), + const SizedBox(height: 16), + TextField( + enabled: false, + readOnly: true, + controller: _valueGetController, + decoration: InputDecoration( + labelText: l10n.flutterSecureStorageFieldValue, + ), + ), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _isValidGet + ? () => model.read( + key: _keyGetController.text, + password: _passGetController.text, + ) + : null, + child: TextBodyLarge( + l10n.flutterSecureStorageBtnGet, + color: Colors.white, + ), + ), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/freezed/model.dart b/example/lib/packages/freezed/model.dart new file mode 100644 index 0000000..c431b93 --- /dev/null +++ b/example/lib/packages/freezed/model.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:flutter_example_packages/packages/freezed/user_entity.dart'; +import 'package:flutter_example_packages/packages/freezed/user_entity_freezed.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [FreezedPage] +class FreezedModel extends Model { + /// Get [ScopedModel] + static FreezedModel of(BuildContext context) => + ScopedModel.of(context); + + UserEntity userEntity = UserEntity.fromJson(const { + 'name': 'Default', + 'email': 'default@yandex.ru', + 'age': 12, + }); + + UserEntityFreezed userEntityFreezed = UserEntityFreezed.fromJson(const { + 'name': 'Default', + 'email': 'default@yandex.ru', + 'age': 12, + }); +} diff --git a/example/lib/packages/freezed/package.dart b/example/lib/packages/freezed/package.dart new file mode 100644 index 0000000..b94bc2d --- /dev/null +++ b/example/lib/packages/freezed/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; +import 'page.dart'; + +/// Package values +final packageFreezed = PackagePage( + key: 'freezed', + descEN: ''' + Code generator for data-classes/unions/pattern-matching/cloning. + ''', + descRU: ''' + Генератор кода для классов данных/объединений/сопоставления + с образцом/клонирования. + ''', + version: '2.3.3', + isPlatformDependent: false, + page: () => FreezedPage(), + init: () { + GetIt.instance.registerFactory(() => FreezedModel()); + }, +); diff --git a/example/lib/packages/freezed/page.dart b/example/lib/packages/freezed/page.dart new file mode 100644 index 0000000..3177f78 --- /dev/null +++ b/example/lib/packages/freezed/page.dart @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:convert'; + +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/theme/radius.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/layouts/block_layout.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +import 'model.dart'; +import 'package.dart'; + +class FreezedPage extends AppStatefulWidget { + FreezedPage({ + super.key, + }); + + final Package package = packageFreezed; + + @override + State createState() => _FreezedPageState(); +} + +class _FreezedPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + TextTitleLarge(l10n.freezedTitleDefault), + const SizedBox(height: 8), + TextBodyMedium(l10n.freezedSubtitle), + const SizedBox(height: 14), + Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.blue.shade50, + borderRadius: AppRadius.small, + ), + child: Padding( + padding: const EdgeInsets.all(10), + child: TextBodyMedium( + const JsonEncoder.withIndent(' ').convert( + model.userEntity.copyWith(name: 'My name').toJson()), + ), + ), + ), + const SizedBox(height: 20), + TextTitleLarge(l10n.freezedTitleFreezed), + const SizedBox(height: 8), + TextBodyMedium(l10n.freezedSubtitle), + const SizedBox(height: 14), + Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.blue.shade50, + borderRadius: AppRadius.small, + ), + child: Padding( + padding: const EdgeInsets.all(10), + child: TextBodyMedium( + const JsonEncoder.withIndent(' ').convert(model + .userEntityFreezed + .copyWith(name: 'My name') + .toJson()), + ), + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/freezed/user_entity.dart b/example/lib/packages/freezed/user_entity.dart new file mode 100644 index 0000000..d852223 --- /dev/null +++ b/example/lib/packages/freezed/user_entity.dart @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/foundation.dart'; + +@immutable +class UserEntity { + const UserEntity({ + required this.name, + required this.email, + required this.age, + }); + + factory UserEntity.fromJson(Map json) { + return UserEntity( + name: json['name'] as String, + email: json['email'] as String, + age: json['age'] as int, + ); + } + + final String name; + final String email; + final int age; + + UserEntity copyWith({ + String? name, + String? email, + int? age, + }) { + return UserEntity( + name: name ?? this.name, + email: email ?? this.email, + age: age ?? this.age, + ); + } + + Map toJson() { + return { + 'name': name, + 'email': email, + 'age': age, + }; + } + + @override + String toString() { + return 'UserEntity(' + 'name: $name' + 'email: $email' + 'age: $age' + ')'; + } + + @override + bool operator ==(dynamic other) { + return other is UserEntity && + other.name == name && + other.email == email && + other.age == age; + } + + @override + int get hashCode { + return Object.hash( + runtimeType, + name, + email, + age, + ); + } +} diff --git a/example/lib/packages/freezed/user_entity_freezed.dart b/example/lib/packages/freezed/user_entity_freezed.dart new file mode 100644 index 0000000..7dd2917 --- /dev/null +++ b/example/lib/packages/freezed/user_entity_freezed.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'user_entity_freezed.freezed.dart'; +part 'user_entity_freezed.g.dart'; + +@freezed +class UserEntityFreezed with _$UserEntityFreezed { + const factory UserEntityFreezed({ + required String name, + required String email, + required int age, + }) = _UserEntityFreezed; + + factory UserEntityFreezed.fromJson(Map json) => + _$UserEntityFreezedFromJson(json); +} diff --git a/example/lib/packages/freezed_annotation/package.dart b/example/lib/packages/freezed_annotation/package.dart new file mode 100644 index 0000000..7fbc8cd --- /dev/null +++ b/example/lib/packages/freezed_annotation/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageFreezedAnnotation = PackageDialog( + key: 'freezed_annotation', + descEN: ''' + Annotations for freezed. This package does nothing without freezed. + ''', + descRU: ''' + Аннотации для freezed. Этот пакет ничего не делает без freezed. + ''', + messageEN: ''' + This is a platform independent plugin used in this application in the demo + of the freezed plugin. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении в + демострации работы плагина freezed. + ''', + version: '2.2.0', + isPlatformDependent: false, +); diff --git a/example/lib/packages/get_it/package.dart b/example/lib/packages/get_it/package.dart new file mode 100644 index 0000000..3a148ac --- /dev/null +++ b/example/lib/packages/get_it/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageGetIt = PackageDialog( + key: 'get_it', + descEN: ''' + This is a simple Service Locator for Dart and Flutter projects with some + additional goodies highly inspired by Splat. + ''', + descRU: ''' + Это простой сервис-локатор для проектов Dart и Flutter с некоторыми + дополнительные вкусности, вдохновленные Splat. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '7.6.0', + isPlatformDependent: false, +); diff --git a/example/lib/packages/google_fonts/package.dart b/example/lib/packages/google_fonts/package.dart new file mode 100644 index 0000000..e3529da --- /dev/null +++ b/example/lib/packages/google_fonts/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageGoogleFonts = PackageDialog( + key: 'google_fonts', + descEN: ''' + A Flutter package to use fonts from fonts.google.com. + ''', + descRU: ''' + Пакет Flutter для использования шрифтов с fonts.google.com. + ''', + messageEN: ''' + This is a platform dependent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин зависимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '4.0.4', + isPlatformDependent: true, +); diff --git a/example/lib/packages/intl/package.dart b/example/lib/packages/intl/package.dart new file mode 100644 index 0000000..92e801a --- /dev/null +++ b/example/lib/packages/intl/package.dart @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageIntl = PackageDialog( + key: 'intl', + descEN: ''' + Provides internationalization and localization facilities, + including message translation, plurals and genders, + date/number formatting and parsing, and bidirectional text. + ''', + descRU: ''' + Предоставляет средства интернационализации и локализации, + включая перевод сообщений, множественное число и пол, + форматирование и разбор даты/числа, а также двунаправленный текст. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '0.17.0', + isPlatformDependent: false, +); diff --git a/example/lib/packages/json_annotation/package.dart b/example/lib/packages/json_annotation/package.dart new file mode 100644 index 0000000..28eeecc --- /dev/null +++ b/example/lib/packages/json_annotation/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageJsonAnnotation = PackageDialog( + key: 'json_annotation', + descEN: ''' + Defines the annotations used by json_serializable to create code for + JSON serialization and deserialization. + ''', + descRU: ''' + Определяет аннотации, используемые json_serializable для создания кода для + JSON Serialization и Deserialization. + ''', + messageEN: ''' + This is a platform independent plugin used in this application in the demo + of the freezed plugin. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении в + демострации работы плагина freezed. + ''', + version: '4.8.0', + isPlatformDependent: false, +); diff --git a/example/lib/packages/json_serializable/package.dart b/example/lib/packages/json_serializable/package.dart new file mode 100644 index 0000000..bbd0ab5 --- /dev/null +++ b/example/lib/packages/json_serializable/package.dart @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageJsonSerializable = PackageDialog( + key: 'json_serializable', + descEN: ''' + Provides Dart Build System builders for handling JSON. + ''', + descRU: ''' + Предоставляет Dart Build System System для обработки JSON. + ''', + messageEN: ''' + This is a platform independent plugin used in this application in the demo + of the freezed plugin. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении в + демострации работы плагина freezed. + ''', + version: '6.6.1', + isPlatformDependent: false, +); diff --git a/example/lib/packages/package_info_plus/model.dart b/example/lib/packages/package_info_plus/model.dart new file mode 100644 index 0000000..264783c --- /dev/null +++ b/example/lib/packages/package_info_plus/model.dart @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; +import 'package:package_info_plus/package_info_plus.dart'; + +/// Model for [PackageInfoPlusPage] +class PackageInfoPlusModel extends Model { + /// Get [ScopedModel] + static PackageInfoPlusModel of(BuildContext context) => ScopedModel.of(context); + + /// Get [PackageInfo] + Future get _packageInfo async => + await PackageInfo.fromPlatform(); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Get package + Future getPackageName() async { + try { + return (await _packageInfo).packageName; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Get application name + Future getApplicationName() async { + try { + return (await _packageInfo).appName; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } +} diff --git a/example/lib/packages/package_info_plus/package.dart b/example/lib/packages/package_info_plus/package.dart new file mode 100644 index 0000000..bab909d --- /dev/null +++ b/example/lib/packages/package_info_plus/package.dart @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/package_info_plus/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packagePackageInfoPlus = PackagePage( + key: 'package_info_plus', + descEN: ''' + This Flutter plugin provides an API for querying information about + an application package. + ''', + descRU: ''' + Этот плагин Flutter предоставляет API для запроса информации о + пакете приложения. + ''', + version: '3.1.2', + isPlatformDependent: true, + page: () => PackageInfoPlusPage(), + init: () { + GetIt.instance + .registerFactory(() => PackageInfoPlusModel()); + }, +); diff --git a/example/lib/packages/package_info_plus/page.dart b/example/lib/packages/package_info_plus/page.dart new file mode 100644 index 0000000..1dfa78c --- /dev/null +++ b/example/lib/packages/package_info_plus/page.dart @@ -0,0 +1,70 @@ +/* + * 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/package_info_plus/model.dart'; +import 'package:flutter_example_packages/packages/package_info_plus/package.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_gen/gen_l10n/app_localizations.dart'; + +class PackageInfoPlusPage extends AppStatefulWidget { + PackageInfoPlusPage({ + super.key, + }); + + final Package package = packagePackageInfoPlus; + + @override + State createState() => _PackageInfoPlusPageState(); +} + +class _PackageInfoPlusPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockItem( + title: l10n.packageInfoPlusTitlePackageName, + desc: l10n.packageInfoPlusDescPackageName, + future: model.getPackageName(), + ), + BlockItem( + title: l10n.packageInfoPlusTitleApplicationName, + desc: l10n.packageInfoPlusDescApplicationName, + future: model.getApplicationName(), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/packages.dart b/example/lib/packages/packages.dart new file mode 100644 index 0000000..8abef57 --- /dev/null +++ b/example/lib/packages/packages.dart @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package.dart'; +import 'package:flutter_example_packages/packages/battery_plus/package.dart'; +import 'package:flutter_example_packages/packages/build_runner/package.dart'; +import 'package:flutter_example_packages/packages/cached_network_image/package.dart'; +import 'package:flutter_example_packages/packages/cupertino_icons/package.dart'; +import 'package:flutter_example_packages/packages/dartz/package.dart'; +import 'package:flutter_example_packages/packages/device_info_plus/package.dart'; +import 'package:flutter_example_packages/packages/equatable/package.dart'; +import 'package:flutter_example_packages/packages/flutter_cache_manager/package.dart'; +import 'package:flutter_example_packages/packages/flutter_local_notifications/package.dart'; +import 'package:flutter_example_packages/packages/flutter_markdown/package.dart'; +import 'package:flutter_example_packages/packages/flutter_secure_storage/package.dart'; +import 'package:flutter_example_packages/packages/freezed/package.dart'; +import 'package:flutter_example_packages/packages/freezed_annotation/package.dart'; +import 'package:flutter_example_packages/packages/get_it/package.dart'; +import 'package:flutter_example_packages/packages/google_fonts/package.dart'; +import 'package:flutter_example_packages/packages/intl/package.dart'; +import 'package:flutter_example_packages/packages/json_annotation/package.dart'; +import 'package:flutter_example_packages/packages/json_serializable/package.dart'; +import 'package:flutter_example_packages/packages/package_info_plus/package.dart'; +import 'package:flutter_example_packages/packages/path_provider/package.dart'; +import 'package:flutter_example_packages/packages/photo_view/package.dart'; +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/rxdart/package.dart'; +import 'package:flutter_example_packages/packages/scoped_model/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/translator/package.dart'; +import 'package:flutter_example_packages/packages/universal_io/package.dart'; +import 'package:flutter_example_packages/packages/wakelock/package.dart'; +import 'package:flutter_example_packages/packages/xdga_directories/package.dart'; + +import 'crypto/package.dart'; +import 'flutter_keyboard_visibility/package.dart'; + +/// List app packages +final packages = [ + packageBatteryPlus, + packageBuildRunner, + packageCachedNetworkImage, + packageCrypto, + packageCupertinoIcons, + packageDartz, + packageDeviceInfoPlus, + packageEquatable, + packageFlutterCacheManager, + packageFlutterKeyboardVisibility, + packageFlutterLocalNotifications, + packageFlutterMarkdown, + packageFlutterSecureStorage, + packageFreezed, + packageFreezedAnnotation, + packageGetIt, + packageGoogleFonts, + packageIntl, + packageJsonAnnotation, + packageJsonSerializable, + packagePackageInfoPlus, + packagePathProvider, + packagePhotoView, + packageProvider, + packageQrFlutter, + packageRxdart, + packageScopedModel, + packageSharedPreferences, + packageSqflite, + packageTranslator, + packageUniversalIO, + packageWakelock, + packageXdgaDirectories, +]; diff --git a/example/lib/packages/path_provider/model.dart b/example/lib/packages/path_provider/model.dart new file mode 100644 index 0000000..a59a663 --- /dev/null +++ b/example/lib/packages/path_provider/model.dart @@ -0,0 +1,108 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:path_provider/path_provider.dart' as provider; +import 'package:scoped_model/scoped_model.dart'; +import 'package:universal_io/io.dart'; + +/// Model for [PathProviderPage] +class PathProviderModel extends Model { + /// Get [ScopedModel] + static PathProviderModel of(BuildContext context) => + ScopedModel.of(context); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Directory where the application may place application support files. + Future getApplicationSupportDirectory() async { + try { + return await provider.getApplicationSupportDirectory(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Directory location where user-specific non-essential (cached) data should be written. + Future getTemporaryDirectory() async { + try { + return await provider.getTemporaryDirectory(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Directory containing user document files. + Future getApplicationDocumentsDirectory() async { + try { + return await provider.getApplicationDocumentsDirectory(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Directory for user's downloaded files. + Future getDownloadsDirectory() async { + try { + return await provider.getDownloadsDirectory(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// There is no concept of External in Aurora OS, but this interface allows you to get the StorageDirectory.pictures directory. + Future?> getExternalStorageDirectoriesPictures() async { + try { + return await provider.getExternalStorageDirectories( + type: StorageDirectory.pictures, + ); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// There is no concept of External in Aurora OS, but this interface allows you to get the StorageDirectory.music directory. + Future?> getExternalStorageDirectoriesMusic() async { + try { + return await provider.getExternalStorageDirectories( + type: StorageDirectory.music, + ); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// There is no concept of External in Aurora OS, but this interface allows you to get the StorageDirectory.movies directory. + Future?> getExternalStorageDirectoriesMovies() async { + try { + return await provider.getExternalStorageDirectories( + type: StorageDirectory.movies, + ); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } +} diff --git a/example/lib/packages/path_provider/package.dart b/example/lib/packages/path_provider/package.dart new file mode 100644 index 0000000..237661e --- /dev/null +++ b/example/lib/packages/path_provider/package.dart @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/path_provider/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packagePathProvider = PackagePage( + key: 'path_provider', + descEN: ''' + A Flutter plugin for finding commonly used locations on the filesystem. + Supports Android, iOS, Linux, macOS, Windows and Aurora OS. + Not all methods are supported on all platforms. + ''', + descRU: ''' + Плагин Flutter для поиска часто используемых мест в файловой системе. + Поддерживает Android, iOS, Linux, macOS, Windows и ОС Aurora. + Не все методы поддерживаются на всех платформах. + ''', + version: '2.0.15', + isPlatformDependent: true, + page: () => PathProviderPage(), + init: () { + GetIt.instance + .registerFactory(() => PathProviderModel()); + }, +); diff --git a/example/lib/packages/path_provider/page.dart b/example/lib/packages/path_provider/page.dart new file mode 100644 index 0000000..2606b15 --- /dev/null +++ b/example/lib/packages/path_provider/page.dart @@ -0,0 +1,93 @@ +/* + * 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/path_provider/model.dart'; +import 'package:flutter_example_packages/packages/path_provider/package.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_gen/gen_l10n/app_localizations.dart'; + +class PathProviderPage extends AppStatefulWidget { + PathProviderPage({super.key}); + + final Package package = packagePathProvider; + + @override + State createState() => _PathProviderPageState(); +} + +class _PathProviderPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockItem( + title: l10n.pathProviderTitleApplicationSupport, + desc: l10n.pathProviderDescApplicationSupport, + future: model.getApplicationSupportDirectory(), + ), + BlockItem( + title: l10n.pathProviderTitleTemporary, + desc: l10n.pathProviderDescTemporary, + future: model.getTemporaryDirectory(), + ), + BlockItem( + title: l10n.pathProviderTitleApplicationDocuments, + desc: l10n.pathProviderDescApplicationDocuments, + future: model.getApplicationDocumentsDirectory(), + ), + BlockItem( + title: l10n.pathProviderTitleDownloads, + desc: l10n.pathProviderDescDownloads, + future: model.getDownloadsDirectory(), + ), + BlockItem( + title: l10n.pathProviderTitlePictures, + desc: l10n.pathProviderDescPictures, + future: model.getExternalStorageDirectoriesPictures(), + ), + BlockItem( + title: l10n.pathProviderTitleMusic, + desc: l10n.pathProviderDescMusic, + future: model.getExternalStorageDirectoriesMusic(), + ), + BlockItem( + title: l10n.pathProviderTitleMovies, + desc: l10n.pathProviderDescMovies, + future: model.getExternalStorageDirectoriesMovies(), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/photo_view/model.dart b/example/lib/packages/photo_view/model.dart new file mode 100644 index 0000000..b3a2e88 --- /dev/null +++ b/example/lib/packages/photo_view/model.dart @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [PhotoViewPage] +class PhotoViewModel extends Model { + /// Get [ScopedModel] + static PhotoViewModel of(BuildContext context) => ScopedModel.of(context); +} diff --git a/example/lib/packages/photo_view/package.dart b/example/lib/packages/photo_view/package.dart new file mode 100644 index 0000000..ed7ecbe --- /dev/null +++ b/example/lib/packages/photo_view/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/photo_view/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packagePhotoView = PackagePage( + key: 'photo_view', + descEN: ''' + A simple zoomable image/content widget for Flutter. + ''', + descRU: ''' + Простой масштабируемый виджет изображения/контента для Flutter. + ''', + version: '0.14.0', + isPlatformDependent: false, + page: () => PhotoViewPage(), + init: () { + GetIt.instance.registerFactory( + () => PhotoViewModel()); + }, +); diff --git a/example/lib/packages/photo_view/page.dart b/example/lib/packages/photo_view/page.dart new file mode 100644 index 0000000..e5c3aed --- /dev/null +++ b/example/lib/packages/photo_view/page.dart @@ -0,0 +1,86 @@ +/* + * 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/photo_view/model.dart'; +import 'package:flutter_example_packages/packages/photo_view/package.dart'; +import 'package:flutter_example_packages/theme/radius.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/layouts/block_layout.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:photo_view/photo_view.dart'; + +class PhotoViewPage extends AppStatefulWidget { + PhotoViewPage({ + super.key, + }); + + final Package package = packagePhotoView; + + @override + State createState() => _PhotoViewPageState(); +} + +class _PhotoViewPageState extends AppState { + double _heightPhotoView = 1; + final _keyPhotoView = GlobalKey(); + + @override + void onDidChangeMetrics() { + setState(() { + _heightPhotoView = _getHeightPhotoView(); + }); + } + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + ClipRRect( + borderRadius: AppRadius.small, + child: SizedBox( + key: _keyPhotoView, + width: double.infinity, + height: _heightPhotoView, + child: PhotoView( + imageProvider: + const AssetImage("assets/images/large_image.jpg"), + ), + ), + ), + ], + ), + ), + ); + }, + ); + } + + double _getHeightPhotoView() { + if (_keyPhotoView.currentContext != null) { + RenderBox? box = + _keyPhotoView.currentContext?.findRenderObject() as RenderBox; + Offset position = + box.localToGlobal(Offset.zero); //this is global position + return MediaQuery.of(context).size.height - position.dy - 20; + } + return 1; + } +} diff --git a/example/lib/packages/provider/model.dart b/example/lib/packages/provider/model.dart new file mode 100644 index 0000000..adbbfe9 --- /dev/null +++ b/example/lib/packages/provider/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [ProviderPage] +class ProviderModel extends Model { + /// Get [ScopedModel] + static ProviderModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/provider/package.dart b/example/lib/packages/provider/package.dart new file mode 100644 index 0000000..845f16e --- /dev/null +++ b/example/lib/packages/provider/package.dart @@ -0,0 +1,28 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageProvider = PackagePage( + key: 'provider', + descEN: ''' + A wrapper around InheritedWidget to make them easier to use and more + reusable. + ''', + descRU: ''' + Оболочка вокруг InheritedWidget, чтобы сделать их более простыми в + использовании и более удобными для повторного использования. + ''', + version: '6.0.5', + isPlatformDependent: false, + page: () => ProviderPage(), + init: () { + GetIt.instance.registerFactory(() => ProviderModel()); + }, +); diff --git a/example/lib/packages/provider/page.dart b/example/lib/packages/provider/page.dart new file mode 100644 index 0000000..ebae7fa --- /dev/null +++ b/example/lib/packages/provider/page.dart @@ -0,0 +1,63 @@ +/* + * 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/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:provider/provider.dart'; + +import 'model.dart'; +import 'package.dart'; + +class ProviderPage extends AppStatefulWidget { + ProviderPage({ + super.key, + }); + + final Package package = packageProvider; + + @override + State createState() => _ProviderPageState(); +} + +class _ProviderPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return FutureProvider( + initialData: 0, + create: (context) => Future.value(12345), // Set value + child: BlockLayout( + model: getIt(), + 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), + BlockItem( + title: l10n.providerTitle, + desc: l10n.providerSubtitle, + value: context.watch(), // Get value + ), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/example/lib/packages/qr_flutter/model.dart b/example/lib/packages/qr_flutter/model.dart new file mode 100644 index 0000000..7c4b38f --- /dev/null +++ b/example/lib/packages/qr_flutter/model.dart @@ -0,0 +1,13 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [QrFlutterPage] +class QrFlutterModel extends Model { + /// Get [ScopedModel] + static QrFlutterModel of(BuildContext context) => + ScopedModel.of(context); +} diff --git a/example/lib/packages/qr_flutter/package.dart b/example/lib/packages/qr_flutter/package.dart new file mode 100644 index 0000000..59000c0 --- /dev/null +++ b/example/lib/packages/qr_flutter/package.dart @@ -0,0 +1,28 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageQrFlutter = PackagePage( + key: 'qr_flutter', + descEN: ''' + QR.Flutter is a Flutter library for simple and fast QR code rendering + via a Widget or custom painter. + ''', + descRU: ''' + ПQR.Flutter — это библиотека Flutter для простого и быстрого рендеринга + QR-кода с помощью виджета или пользовательского рисовальщика. + ''', + version: '4.0.0', + isPlatformDependent: false, + page: () => QrFlutterPage(), + init: () { + GetIt.instance.registerFactory(() => QrFlutterModel()); + }, +); diff --git a/example/lib/packages/qr_flutter/page.dart b/example/lib/packages/qr_flutter/page.dart new file mode 100644 index 0000000..ee10c68 --- /dev/null +++ b/example/lib/packages/qr_flutter/page.dart @@ -0,0 +1,60 @@ +/* + * 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/widgets/base/export.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_gen/gen_l10n/app_localizations.dart'; +import 'package:qr_flutter/qr_flutter.dart'; + +import 'model.dart'; +import 'package.dart'; + +class QrFlutterPage extends AppStatefulWidget { + QrFlutterPage({ + super.key, + }); + + final Package package = packageQrFlutter; + + @override + State createState() => _QrFlutterPageState(); +} + +class _QrFlutterPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + Center( + child: QrImage( + data: '1234567890', + version: QrVersions.auto, + size: 200.0, + ), + ) + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/rxdart/model.dart b/example/lib/packages/rxdart/model.dart new file mode 100644 index 0000000..94d01b7 --- /dev/null +++ b/example/lib/packages/rxdart/model.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:rxdart/rxdart.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [RxdartPage] +class RxdartModel extends Model { + /// Get [ScopedModel] + static RxdartModel of(BuildContext context) => + ScopedModel.of(context); + + final listObjects = [1, 'First', 2, 'Second', 3, 'Third', null]; + + /// Example of using rxdart + Future> getNumberList() { + return Stream.fromIterable(listObjects) + .doOnEach((notification) { + debugPrint(notification.toString()); + }) + .whereNotNull() + .whereType() + .toList(); + } +} diff --git a/example/lib/packages/rxdart/package.dart b/example/lib/packages/rxdart/package.dart new file mode 100644 index 0000000..861c863 --- /dev/null +++ b/example/lib/packages/rxdart/package.dart @@ -0,0 +1,26 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageRxdart = PackagePage( + key: 'rxdart', + descEN: ''' + RxDart extends the capabilities of Dart Streams and StreamControllers. + ''', + descRU: ''' + RxDart расширяет возможности Dart Streams и StreamControllers. + ''', + version: '0.27.7', + isPlatformDependent: false, + page: () => RxdartPage(), + init: () { + GetIt.instance.registerFactory(() => RxdartModel()); + }, +); diff --git a/example/lib/packages/rxdart/page.dart b/example/lib/packages/rxdart/page.dart new file mode 100644 index 0000000..60eb8c6 --- /dev/null +++ b/example/lib/packages/rxdart/page.dart @@ -0,0 +1,58 @@ +/* + * 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/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 'model.dart'; +import 'package.dart'; + +class RxdartPage extends AppStatefulWidget { + RxdartPage({ + super.key, + }); + + final Package package = packageRxdart; + + @override + State createState() => _RxdartPageState(); +} + +class _RxdartPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + BlockItem( + title: l10n.rxdartTitle, + desc: l10n.rxdartSubtitle, + future: model.getNumberList(), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/scoped_model/package.dart b/example/lib/packages/scoped_model/package.dart new file mode 100644 index 0000000..7189f4d --- /dev/null +++ b/example/lib/packages/scoped_model/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageScopedModel = PackageDialog( + key: 'scoped_model', + descEN: ''' + A set of utilities that allow you to easily pass a data Model + from a parent Widget down to its descendants. + ''', + descRU: ''' + Набор утилит, позволяющих легко передать Модель данных + от родительского виджета до его потомков. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '2.0.0', + isPlatformDependent: false, +); diff --git a/example/lib/packages/shared_preferences/model.dart b/example/lib/packages/shared_preferences/model.dart new file mode 100644 index 0000000..aa6cd81 --- /dev/null +++ b/example/lib/packages/shared_preferences/model.dart @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; +import 'package:shared_preferences/shared_preferences.dart'; + +/// Model for [SharedPreferencesPage] +class SharedPreferencesModel extends Model { + /// Get [ScopedModel] + static SharedPreferencesModel of(BuildContext context) => + ScopedModel.of(context); + + /// Get Aurora info + Future get _prefs async => + await SharedPreferences.getInstance(); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Read shared preferences + Map? _readValues; + + /// Public values + Map? get readValues => _readValues; + + /// Save int value + Future setValueInt(int value) async { + try { + await (await _prefs).setInt('int', value); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Save bool value + Future setValueBool(bool value) async { + try { + await (await _prefs).setBool('bool', value); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Save double value + Future setValueDouble(double value) async { + try { + await (await _prefs).setDouble('double', value); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Save string value + Future setValueString(String value) async { + try { + await (await _prefs).setString('string', value); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Save list value + Future setValueList(List value) async { + try { + await (await _prefs).setStringList('list', value); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Clear all data + Future clear() async { + try { + await (await _prefs).clear(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } + + /// Read values + Future reloadValues() async { + try { + final prefs = await _prefs; + _readValues = { + 'int': prefs.getInt('int'), + 'bool': prefs.getBool('bool'), + 'double': prefs.getDouble('double'), + 'string': prefs.getString('string'), + 'list': prefs.getStringList('list'), + }; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } +} diff --git a/example/lib/packages/shared_preferences/package.dart b/example/lib/packages/shared_preferences/package.dart new file mode 100644 index 0000000..c405053 --- /dev/null +++ b/example/lib/packages/shared_preferences/package.dart @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/shared_preferences/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageSharedPreferences = PackagePage( + key: 'shared_preferences', + descEN: ''' + Wraps platform-specific persistent storage for simple data. + ''', + descRU: ''' + Обертывает постоянное хранилище для конкретных платформ для простых данных. + ''', + version: '2.1.2', + isPlatformDependent: true, + page: () => SharedPreferencesPage(), + init: () { + GetIt.instance.registerFactory( + () => SharedPreferencesModel()); + }, +); diff --git a/example/lib/packages/shared_preferences/page.dart b/example/lib/packages/shared_preferences/page.dart new file mode 100644 index 0000000..d926aaa --- /dev/null +++ b/example/lib/packages/shared_preferences/page.dart @@ -0,0 +1,261 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'dart:async'; +import 'dart:convert'; + +import 'package:flutter/foundation.dart' show kIsAurora; +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/shared_preferences/model.dart'; +import 'package:flutter_example_packages/packages/shared_preferences/package.dart'; +import 'package:flutter_example_packages/theme/colors.dart'; +import 'package:flutter_example_packages/theme/radius.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'; +import 'package:flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora.dart'; + +class SharedPreferencesPage extends AppStatefulWidget { + SharedPreferencesPage({ + super.key, + }); + + final Package package = packageSharedPreferences; + + @override + State createState() => _SharedPreferencesPageState(); +} + +class _SharedPreferencesPageState extends AppState { + double _keyboardHeight = 0; + StreamSubscription? _streamSub; + final _controllerAurora = FlutterKeyboardVisibilityAurora(); + final ScrollController _scrollController = ScrollController(); + final model = getIt(); + + bool _formIsValid = true; + final _formKey = GlobalKey(); + + final TextEditingController _intController = + TextEditingController(text: '100'); + final TextEditingController _boolController = + TextEditingController(text: 'true'); + final TextEditingController _doubleController = + TextEditingController(text: '100.5'); + final TextEditingController _stringController = + TextEditingController(text: 'My text'); + final TextEditingController _listController = + TextEditingController(text: 'First, Second, Third'); + + @override + void initState() { + super.initState(); + model.reloadValues(); + if (kIsAurora) { + _streamSub = _controllerAurora.onChangeHeight.listen((event) { + setState(() { + _keyboardHeight = event; + }); + }); + } + } + + @override + void dispose() { + super.dispose(); + _streamSub?.cancel(); + } + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: model, + title: widget.package.key, + builder: (context, child, model) { + return SingleChildScrollView( + controller: _scrollController, + 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) + Form( + key: _formKey, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextTitleLarge(l10n.sharedPreferencesTitleState), + const SizedBox(height: 14), + Container( + width: double.infinity, + decoration: BoxDecoration( + color: Colors.blue.shade50, + borderRadius: AppRadius.small, + ), + child: Padding( + padding: const EdgeInsets.all(10), + child: TextBodyMedium( + const JsonEncoder.withIndent(' ') + .convert(model.readValues), + ), + ), + ), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: OutlinedButton( + onPressed: () async { + // reload data + await model.clear(); + // reload data + await model.reloadValues(); + // disable keyboard + FocusManager.instance.primaryFocus?.unfocus(); + // scroll to top + _scrollController.animateTo( + 0, + duration: const Duration(milliseconds: 500), + curve: Curves.ease, + ); + }, + child: TextBodyLarge( + l10n.sharedPreferencesFieldBtnClean, + color: AppColors.secondary, + ), + ), + ), + const SizedBox(height: 20), + TextTitleLarge(l10n.sharedPreferencesTitleUpdate), + const SizedBox(height: 14), + TextFormField( + controller: _intController, + keyboardType: TextInputType.number, + decoration: InputDecoration( + labelText: l10n.sharedPreferencesFieldInt, + ), + validator: (value) { + if (int.tryParse(value ?? '') == null) { + return l10n.sharedPreferencesFieldError('int'); + } + return null; + }, + onChanged: (_) => setState(() { + _formIsValid = + _formKey.currentState?.validate() ?? true; + }), + ), + const SizedBox(height: 16), + TextFormField( + controller: _boolController, + decoration: InputDecoration( + labelText: l10n.sharedPreferencesFieldBool, + ), + validator: (value) { + if (value != 'true' && value != 'false') { + return l10n.sharedPreferencesFieldError('bool'); + } + return null; + }, + onChanged: (_) => setState(() { + _formIsValid = + _formKey.currentState?.validate() ?? true; + }), + ), + const SizedBox(height: 16), + TextFormField( + controller: _doubleController, + keyboardType: TextInputType.number, + decoration: InputDecoration( + labelText: l10n.sharedPreferencesFieldDouble, + ), + validator: (value) { + if (double.tryParse(value ?? '') == null) { + return l10n.sharedPreferencesFieldError('double'); + } + return null; + }, + onChanged: (_) => setState(() { + _formIsValid = + _formKey.currentState?.validate() ?? true; + }), + ), + const SizedBox(height: 16), + TextFormField( + controller: _stringController, + decoration: InputDecoration( + labelText: l10n.sharedPreferencesFieldString, + ), + ), + const SizedBox(height: 16), + TextFormField( + controller: _listController, + decoration: InputDecoration( + labelText: l10n.sharedPreferencesFieldList, + ), + ), + const SizedBox(height: 20), + SizedBox( + width: double.infinity, + child: ElevatedButton( + onPressed: _formIsValid + ? () async { + // add int + await model.setValueInt( + int.parse(_intController.text)); + // add bool + await model.setValueBool( + _boolController.text == 'true'); + // add double + await model.setValueDouble( + double.parse(_doubleController.text)); + // add string + await model + .setValueString(_stringController.text); + // add list + await model.setValueList( + _listController.text.split(', ')); + // reload data + await model.reloadValues(); + // disable keyboard + FocusManager.instance.primaryFocus + ?.unfocus(); + // scroll to top + _scrollController.animateTo( + 0, + duration: + const Duration(milliseconds: 500), + curve: Curves.ease, + ); + } + : null, + child: TextBodyLarge( + l10n.sharedPreferencesFieldBtn, + color: Colors.white, + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/sqflite/package.dart b/example/lib/packages/sqflite/package.dart new file mode 100644 index 0000000..9235b02 --- /dev/null +++ b/example/lib/packages/sqflite/package.dart @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageSqflite = PackageDialog( + key: 'sqflite', + descEN: ''' + SQLite plugin for Flutter. Supports iOS, Android, MacOS and Aurora OS. + ''', + descRU: ''' + Плагин SQLite для Flutter. Поддерживает iOS, Android, MacOS и ОС Aurora. + ''', + messageEN: ''' + Platform dependent plugin. Preview of work in development. + ''', + messageRU: ''' + Платформо-зависимый плагин. Превью работы в разработке. + ''', + version: '2.2.6', + isPlatformDependent: true, +); diff --git a/example/lib/packages/translator/model.dart b/example/lib/packages/translator/model.dart new file mode 100644 index 0000000..a3e2500 --- /dev/null +++ b/example/lib/packages/translator/model.dart @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; +import 'package:translator/translator.dart'; + +/// Model for [TranslatorPage] +class TranslatorModel extends Model { + /// Get [ScopedModel] + static TranslatorModel of(BuildContext context) => + ScopedModel.of(context); + + final translator = GoogleTranslator(); + + Future translate( + String value, + ) async { + return await translator.translate(value, from: 'en', to: 'ru'); + } +} diff --git a/example/lib/packages/translator/package.dart b/example/lib/packages/translator/package.dart new file mode 100644 index 0000000..e60879c --- /dev/null +++ b/example/lib/packages/translator/package.dart @@ -0,0 +1,26 @@ +/* + * 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 'model.dart'; +import 'page.dart'; + +/// Package values +final packageTranslator = PackagePage( + key: 'translator', + descEN: ''' + Free Google Translate API for Dart. + ''', + descRU: ''' + Бесплатный API Google Translate для Dart. + ''', + version: '0.1.7', + isPlatformDependent: false, + page: () => TranslatorPage(), + init: () { + GetIt.instance.registerFactory(() => TranslatorModel()); + }, +); diff --git a/example/lib/packages/translator/page.dart b/example/lib/packages/translator/page.dart new file mode 100644 index 0000000..dee8e34 --- /dev/null +++ b/example/lib/packages/translator/page.dart @@ -0,0 +1,59 @@ +/* + * 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/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 'model.dart'; +import 'package.dart'; + +class TranslatorPage extends AppStatefulWidget { + TranslatorPage({ + super.key, + }); + + final Package package = packageTranslator; + + @override + State createState() => _TranslatorPageState(); +} + +class _TranslatorPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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), + BlockItem( + title: l10n.translatorTitle, + desc: l10n.translatorSubtitle, + future: model.translate(l10n.translatorText), + builder: (value) => value.text, + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/universal_io/package.dart b/example/lib/packages/universal_io/package.dart new file mode 100644 index 0000000..ea0b867 --- /dev/null +++ b/example/lib/packages/universal_io/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_dialog.dart'; + +/// Package values +final packageUniversalIO = PackageDialog( + key: 'universal_io', + descEN: ''' + A cross-platform dart:io that works on all platforms, + including browsers. + ''', + descRU: ''' + Кроссплатформенный dart:io, который работает на всех платформах, + включая браузеры. + ''', + messageEN: ''' + This is a platform independent plugin used in this app, should work + for you too. + ''', + messageRU: ''' + Это плагин независимый от платформы, используется в этом приложении, + должен работать и у вас. + ''', + version: '2.2.0', + isPlatformDependent: false, +); diff --git a/example/lib/packages/wakelock/model.dart b/example/lib/packages/wakelock/model.dart new file mode 100644 index 0000000..dfecfb4 --- /dev/null +++ b/example/lib/packages/wakelock/model.dart @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; +import 'package:wakelock/wakelock.dart'; + +/// Model for [WakelockPage] +class WakelockModel extends Model { + /// Get [ScopedModel] + static WakelockModel of(BuildContext context) => + ScopedModel.of(context); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// Check is enable Wakelock + Future isEnable() async { + try { + return await Wakelock.enabled; + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// Set state Wakelock + Future setStateWakelock(bool enable) async { + try { + await Wakelock.toggle(enable: enable); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + } +} diff --git a/example/lib/packages/wakelock/package.dart b/example/lib/packages/wakelock/package.dart new file mode 100644 index 0000000..bf678cd --- /dev/null +++ b/example/lib/packages/wakelock/package.dart @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/wakelock/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageWakelock = PackagePage( + key: 'wakelock', + descEN: ''' + Plugin that allows you to keep the device screen awake, i.e. + prevent the screen from sleeping. + ''', + descRU: ''' + Плагин, который позволяет держать экран устройства в активном состоянии, + т. е. предотвращать переход экрана в спящий режим. + ''', + version: '0.6.2', + isPlatformDependent: true, + page: () => WakelockPage(), + init: () { + GetIt.instance.registerFactory(() => WakelockModel()); + }, +); diff --git a/example/lib/packages/wakelock/page.dart b/example/lib/packages/wakelock/page.dart new file mode 100644 index 0000000..50fc722 --- /dev/null +++ b/example/lib/packages/wakelock/page.dart @@ -0,0 +1,89 @@ +/* + * 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/wakelock/model.dart'; +import 'package:flutter_example_packages/packages/wakelock/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 WakelockPage extends AppStatefulWidget { + WakelockPage({ + super.key, + }); + + final Package package = packageWakelock; + + @override + State createState() => _WakelockPageState(); +} + +class _WakelockPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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( + future: model.isEnable(), + builder: (BuildContext context, + AsyncSnapshot 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.setStateWakelock(value); + }, + ), + ); + }, + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/packages/xdga_directories/model.dart b/example/lib/packages/xdga_directories/model.dart new file mode 100644 index 0000000..7511ab5 --- /dev/null +++ b/example/lib/packages/xdga_directories/model.dart @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:scoped_model/scoped_model.dart'; +import 'package:xdga_directories/xdga_directories.dart' as xdga; + +/// Model for [XdgaDirectoriesPage] +class XdgaDirectoriesModel extends Model { + /// Get [ScopedModel] + static XdgaDirectoriesModel of(BuildContext context) => + ScopedModel.of(context); + + /// Error + String? _error; + + /// Public error + String? get error => _error; + + /// Public is error + bool get isError => _error != null; + + /// QStandardPaths::CacheLocation + String? getCacheLocation() { + try { + return xdga.getCacheLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::AppDataLocation + String? getAppDataLocation() { + try { + return xdga.getAppDataLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::DocumentsLocation + String? getDocumentsLocation() { + try { + return xdga.getDocumentsLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::DownloadLocation + String? getDownloadLocation() { + try { + return xdga.getDownloadLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::MusicLocation + String? getMusicLocation() { + try { + return xdga.getMusicLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::PicturesLocation + String? getPicturesLocation() { + try { + return xdga.getPicturesLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::GenericDataLocation + String? getGenericDataLocation() { + try { + return xdga.getGenericDataLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } + + /// QStandardPaths::MoviesLocation + String? getMoviesLocation() { + try { + return xdga.getMoviesLocation(); + } catch (e) { + _error = e.toString(); + } + notifyListeners(); + return null; + } +} diff --git a/example/lib/packages/xdga_directories/package.dart b/example/lib/packages/xdga_directories/package.dart new file mode 100644 index 0000000..56c4c30 --- /dev/null +++ b/example/lib/packages/xdga_directories/package.dart @@ -0,0 +1,29 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/xdga_directories/page.dart'; +import 'package:get_it/get_it.dart'; + +import 'model.dart'; + +/// Package values +final packageXdgaDirectories = PackagePage( + key: 'xdga_directories', + descEN: ''' + A Dart package for reading XDG directory configuration information + on Aurora OS. + ''', + descRU: ''' + Пакет Dart для чтения информации о конфигурации каталога XDG + на ОС Аврора. + ''', + version: '0.0.1', + isPlatformDependent: true, + page: () => XdgaDirectoriesPage(), + init: () { + GetIt.instance + .registerFactory(() => XdgaDirectoriesModel()); + }, +); diff --git a/example/lib/packages/xdga_directories/page.dart b/example/lib/packages/xdga_directories/page.dart new file mode 100644 index 0000000..83b4a87 --- /dev/null +++ b/example/lib/packages/xdga_directories/page.dart @@ -0,0 +1,100 @@ +/* + * 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/xdga_directories/model.dart'; +import 'package:flutter_example_packages/packages/xdga_directories/package.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_gen/gen_l10n/app_localizations.dart'; + +class XdgaDirectoriesPage extends AppStatefulWidget { + XdgaDirectoriesPage({ + super.key, + }); + + final Package package = packageXdgaDirectories; + + @override + State createState() => _XdgaDirectoriesPageState(); +} + +class _XdgaDirectoriesPageState extends AppState { + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: getIt(), + 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) + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + BlockItem( + title: l10n.xdgaDirectoriesTitleCacheLocation, + desc: l10n.xdgaDirectoriesDescCacheLocation, + value: model.getCacheLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitleAppDataLocation, + desc: l10n.xdgaDirectoriesDescAppDataLocation, + value: model.getAppDataLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitleDocumentsLocation, + desc: l10n.xdgaDirectoriesDescDocumentsLocation, + value: model.getDocumentsLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitleDownloadLocation, + desc: l10n.xdgaDirectoriesDescDownloadLocation, + value: model.getDownloadLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitleMusicLocation, + desc: l10n.xdgaDirectoriesDescMusicLocation, + value: model.getMusicLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitlePicturesLocation, + desc: l10n.xdgaDirectoriesDescPicturesLocation, + value: model.getPicturesLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitleGenericDataLocation, + desc: l10n.xdgaDirectoriesDescGenericDataLocation, + value: model.getGenericDataLocation(), + ), + BlockItem( + title: l10n.xdgaDirectoriesTitleMoviesLocation, + desc: l10n.xdgaDirectoriesDescMoviesLocation, + value: model.getMoviesLocation(), + ), + ], + ), + ], + ), + ), + ); + }, + ); + } +} diff --git a/example/lib/pages/home/model.dart b/example/lib/pages/home/model.dart new file mode 100644 index 0000000..f0518b6 --- /dev/null +++ b/example/lib/pages/home/model.dart @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/widgets.dart'; +import 'package:flutter_example_packages/base/package/package.dart'; +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/packages/packages.dart' as list; +import 'package:flutter_example_packages/pages/home/widgets/home_app_bar.dart'; +import 'package:scoped_model/scoped_model.dart'; + +/// Model for [HomePage] +class HomeModel extends Model { + /// Get [ScopedModel] + static HomeModel of(BuildContext context) => + ScopedModel.of(context); + + /// Get all list packages + final List packages = list.packages; + + /// Filtered list packages + List _filteredPackages = list.packages; + + /// Public filtered list packages + List get filteredPackages => _filteredPackages; + + /// Get count packages + int get fullSize => packages.length; + + /// Check is search + bool get isSearch => _search.isNotEmpty; + + /// Search text + String _search = ""; + + /// Filter list packages + PlatformFilter _filter = PlatformFilter.disable; + + /// Update state filtered + void updateFilterState( + String search, + PlatformFilter filter, + ) { + _search = search; + _filter = filter; + _filteredPackages = _filterPackages(); + notifyListeners(); + } + + /// Filter list packages + List _filterPackages() { + return packages.where((element) { + bool result = true; + switch (_filter) { + case PlatformFilter.dependent: + result = element.isPlatformDependent == true; + break; + case PlatformFilter.independent: + result = element.isPlatformDependent == false; + break; + case PlatformFilter.demo: + result = element is PackagePage; + break; + case PlatformFilter.disable: + break; + } + if (_search.isNotEmpty) { + if (!element.key.contains(_search)) { + result = false; + } + } + return result; + }).toList(); + } +} diff --git a/example/lib/pages/home/page.dart b/example/lib/pages/home/page.dart new file mode 100644 index 0000000..98e6022 --- /dev/null +++ b/example/lib/pages/home/page.dart @@ -0,0 +1,179 @@ +/* + * 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/extensions/keys_ext.dart'; +import 'package:flutter_example_packages/pages/home/model.dart'; +import 'package:flutter_example_packages/pages/home/widgets/home_app_bar.dart'; +import 'package:flutter_example_packages/pages/home/widgets/package_list_item.dart'; +import 'package:flutter_example_packages/theme/colors.dart'; +import 'package:flutter_example_packages/widgets/base/app_state.dart'; +import 'package:flutter_example_packages/widgets/base/app_stateful_widget.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 HomePage extends AppStatefulWidget { + const HomePage({ + super.key, + }); + + @override + State createState() => _HomePageState(); +} + +class _HomePageState extends AppState { + double _hH = 0; + final _header = GlobalKey(); + final HomeModel _model = getIt(); + final ScrollController _controllerListView = ScrollController(); + + @override + void onDidChangeMetrics() { + setState(() { + _hH = _header.getHeight() ?? 0; + }); + } + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return BlockLayout( + model: _model, + builder: (context, child, model) { + return Scaffold( + backgroundColor: Colors.blueGrey, + appBar: HomeAppBar( + onChangeFiltered: (String search, PlatformFilter filter) { + if (model.filteredPackages.isNotEmpty) { + _controllerListView.jumpTo(0); + } + model.updateFilterState(search, filter); + }, + ), + body: GestureDetector( + onTap: () { + FocusScope.of(context).requestFocus(FocusNode()); + }, + child: Stack( + children: [ + Visibility( + visible: !model.isSearch, + child: Container( + height: _hH > 0 ? _hH : 0, + color: AppColors.primary, + width: double.infinity, + child: Center( + child: Align( + alignment: FractionalOffset.bottomRight, + child: Padding( + padding: const EdgeInsets.symmetric( + horizontal: 10, + vertical: 40, + ), + child: Opacity( + opacity: 0.2, + child: Image.asset( + 'assets/images/logo-head.png', + width: 250, + ), + ), + ), + ), + ), + ), + ), + Visibility( + visible: !model.isSearch, + child: Container( + key: _header, + width: double.infinity, + padding: EdgeInsets.only( + left: 20, + right: 20, + top: + media.orientation == Orientation.portrait ? 30 : 10, + bottom: + media.orientation == Orientation.portrait ? 90 : 70, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextHeadlineMedium( + l10n.homeWelcomeTitle, + color: Colors.white, + ), + SizedBox( + height: media.orientation == Orientation.portrait + ? 40 + : 20, + ), + TextTitleMedium( + l10n.homeWelcomeText(model.fullSize), + color: Colors.white, + ) + ], + ), + ), + ), + if (model.filteredPackages.isNotEmpty) + ListView.builder( + keyboardDismissBehavior: + ScrollViewKeyboardDismissBehavior.onDrag, + controller: _controllerListView, + padding: EdgeInsets.only( + top: _hH > 0 && !model.isSearch ? _hH - 20 : 0), + itemCount: model.filteredPackages.length, + itemBuilder: (context, index) { + return PackageListItemWidget( + index: index, + item: model.filteredPackages[index], + ); + }, + ), + if (model.filteredPackages.isEmpty) + Container( + width: double.infinity, + height: double.infinity, + color: Colors.white, + child: Padding( + padding: const EdgeInsets.only( + left: 20, + right: 20, + top: 20, + bottom: 0, + ), + child: Center( + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextTitleLarge( + l10n.homeNotFoundTitle, + textAlign: TextAlign.center, + ), + const SizedBox(height: 40), + TextBodyMedium( + l10n.homeNotFoundSubtitle, + textAlign: TextAlign.center, + ), + ], + ), + ), + ), + ), + ), + ], + ), + ), + ); + }); + } +} diff --git a/example/lib/pages/home/widgets/home_app_bar.dart b/example/lib/pages/home/widgets/home_app_bar.dart new file mode 100644 index 0000000..0450387 --- /dev/null +++ b/example/lib/pages/home/widgets/home_app_bar.dart @@ -0,0 +1,172 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/base/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +enum PlatformFilter { + disable, + dependent, + independent, + demo, +} + +class HomeAppBar extends AppStatefulWidget implements PreferredSizeWidget { + const HomeAppBar({ + super.key, + required this.onChangeFiltered, + }); + + final void Function(String, PlatformFilter) onChangeFiltered; + + @override + State createState() => _HomeAppBarState(); + + @override + Size get preferredSize => const Size.fromHeight(60.0); +} + +class _HomeAppBarState extends AppState { + String? _search; + PlatformFilter _filter = PlatformFilter.disable; + + final _searchController = TextEditingController(); + final _searchFocus = FocusNode(); + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + final theme = Theme.of(context); + return AppBar( + centerTitle: true, + shape: const Border(bottom: BorderSide(width: 0)), + leading: _search != null + ? Padding( + padding: const EdgeInsets.all(8.0), + child: ClipOval( + child: Material( + color: Colors.blueGrey, + child: IconButton( + icon: const Icon(Icons.close), + tooltip: l10n.homeSearch, + onPressed: () { + setState(() { + _search = null; + widget.onChangeFiltered.call("", _filter); + _searchController.clear(); + }); + }, + ), + ), + ), + ) + : null, + title: _search != null + ? TextField( + focusNode: _searchFocus, + controller: _searchController, + style: theme.textTheme.titleLarge?.copyWith(color: Colors.white), + cursorColor: Colors.white, + decoration: InputDecoration( + hintText: l10n.homeSearchTitle, + hintStyle: + theme.textTheme.titleLarge?.copyWith(color: Colors.white54), + border: InputBorder.none, + contentPadding: const EdgeInsets.all(0), + ), + onChanged: (value) { + _search = value; + widget.onChangeFiltered.call(value, _filter); + }, + ) + : null, + actions: [ + if (_search == null) + Padding( + padding: const EdgeInsets.all(8.0), + child: SizedBox( + width: 40, + height: 40, + child: ClipOval( + child: Material( + color: Colors.blueGrey, + child: IconButton( + icon: const Icon(Icons.search), + tooltip: l10n.homeSearch, + onPressed: () { + setState(() { + _search = ""; + _searchFocus.requestFocus(); + }); + }, + ), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.all(8.0), + child: SizedBox( + width: 40, + height: 40, + child: ClipOval( + child: Material( + color: () { + switch (_filter) { + case PlatformFilter.disable: + return Colors.blueGrey; + case PlatformFilter.dependent: + return Colors.deepOrangeAccent; + case PlatformFilter.independent: + return Colors.blueAccent; + case PlatformFilter.demo: + return Colors.green; + } + }.call(), + child: IconButton( + icon: () { + switch (_filter) { + case PlatformFilter.disable: + return const Icon(Icons.filter_list_off); + case PlatformFilter.dependent: + return const Icon(Icons.filter_list); + case PlatformFilter.independent: + return const Icon(Icons.filter_list); + case PlatformFilter.demo: + return const Icon(Icons.visibility); + } + }.call(), + tooltip: l10n.homeFilter, + onPressed: () { + setState(() { + switch (_filter) { + case PlatformFilter.disable: + _filter = PlatformFilter.dependent; + break; + case PlatformFilter.dependent: + _filter = PlatformFilter.independent; + break; + case PlatformFilter.independent: + _filter = PlatformFilter.demo; + break; + case PlatformFilter.demo: + _filter = PlatformFilter.disable; + break; + } + widget.onChangeFiltered.call(_search ?? "", _filter); + }); + }, + ), + ), + ), + ), + ), + ], + ); + } +} diff --git a/example/lib/pages/home/widgets/package_info_dialog.dart b/example/lib/pages/home/widgets/package_info_dialog.dart new file mode 100644 index 0000000..944770b --- /dev/null +++ b/example/lib/pages/home/widgets/package_info_dialog.dart @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/base/package/package_dialog.dart'; +import 'package:flutter_example_packages/theme/radius.dart'; +import 'package:flutter_example_packages/widgets/base/export.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class PackageInfoDialog extends AppStatelessWidget { + const PackageInfoDialog({ + super.key, + required this.package, + }); + + final PackageDialog package; + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return Dialog( + shape: RoundedRectangleBorder(borderRadius: AppRadius.small), + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextTitleLarge(package.key), + const SizedBox(height: 15), + TextBodyMedium(package.message), + const SizedBox(height: 10), + Row( + children: [ + const Spacer(), + OutlinedButton( + style: OutlinedButton.styleFrom( + fixedSize: const Size.fromHeight(33), + ), + onPressed: () { + Navigator.of(context).pop(); + }, + child: Text(l10n.commonClose), + ), + ], + ), + ], + ), + ), + ); + } +} diff --git a/example/lib/pages/home/widgets/package_list_item.dart b/example/lib/pages/home/widgets/package_list_item.dart new file mode 100644 index 0000000..e243271 --- /dev/null +++ b/example/lib/pages/home/widgets/package_list_item.dart @@ -0,0 +1,177 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/base/package/package.dart'; +import 'package:flutter_example_packages/base/package/package_dialog.dart'; +import 'package:flutter_example_packages/base/package/package_page.dart'; +import 'package:flutter_example_packages/pages/home/widgets/package_info_dialog.dart'; +import 'package:flutter_example_packages/theme/colors.dart'; +import 'package:flutter_example_packages/theme/radius.dart'; +import 'package:flutter_example_packages/widgets/base/export.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +class PackageListItemWidget extends AppStatelessWidget { + const PackageListItemWidget({ + super.key, + required this.index, + required this.item, + }); + + final int index; + final Package item; + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return Stack( + children: [ + Visibility( + visible: index != 0, + child: Container( + height: 10, + width: double.infinity, + transform: Matrix4.translationValues(0.0, -10, 0.0), + color: Colors.blueGrey, + ), + ), + Container( + decoration: BoxDecoration( + color: Colors.blueGrey, + borderRadius: index == 0 + ? const BorderRadius.only( + topLeft: Radius.circular(20), + topRight: Radius.circular(20), + ) + : null, + ), + child: Padding( + padding: index == 0 + ? const EdgeInsets.only(left: 20, right: 20, top: 20, bottom: 0) + : const EdgeInsets.symmetric(horizontal: 20), + child: Column( + children: [ + Stack( + children: [ + Padding( + padding: const EdgeInsets.only(top: 10), + child: Stack( + children: [ + SizedBox( + width: double.infinity, + child: Card( + color: Colors.white, + child: Padding( + padding: const EdgeInsets.all(20), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextTitleLarge(item.key), + const SizedBox(height: 10), + TextBodyMedium( + item.desc, + color: Colors.black.withOpacity(0.6), + ), + const SizedBox(height: 12), + Divider( + height: 1, + color: AppColors.primary.withOpacity(0.2), + ), + const SizedBox(height: 12), + Row( + children: [ + Visibility( + visible: item is PackagePage, + child: Row( + children: const [ + Icon( + Icons.visibility, + size: 16, + color: Colors.green, + ), + SizedBox(width: 6), + ], + ), + ), + TextBodySmall( + l10n.homeListVersion(item.version), + color: AppColors.primary + .withOpacity(0.7), + ), + ], + ), + ], + ), + ), + ), + ), + Positioned.fill( + child: Material( + color: Colors.transparent, + child: InkWell( + customBorder: RoundedRectangleBorder( + borderRadius: AppRadius.small, + ), + hoverColor: Colors.transparent, + onTap: () { + if (item is PackagePage) { + Navigator.pushNamed( + context, '/${item.key}'); + } else if (item is PackageDialog) { + showDialog( + context: context, + builder: (BuildContext context) { + return PackageInfoDialog( + package: item as PackageDialog, + ); + }); + } + }, + ), + ), + ), + ], + ), + ), + Align( + alignment: FractionalOffset.topRight, + child: Container( + margin: const EdgeInsets.only(right: 16), + decoration: BoxDecoration( + color: item.isPlatformDependent + ? Colors.deepOrangeAccent + : Colors.blueAccent, + borderRadius: AppRadius.small, + ), + child: Padding( + padding: const EdgeInsets.only( + left: 6, + top: 6, + right: 6, + bottom: 6, + ), + child: TextBodySmall( + item.isPlatformDependent + ? l10n.homeListStateDependent + : l10n.homeListStateIndependent, + color: Colors.white, + ), + ), + ), + ), + ], + ), + const SizedBox(height: 20), + ], + ), + ), + ), + ], + ); + } +} diff --git a/example/lib/theme/colors.dart b/example/lib/theme/colors.dart new file mode 100644 index 0000000..0b87bf2 --- /dev/null +++ b/example/lib/theme/colors.dart @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; + +class AppColors { + static const Color primary = Color(0xFF080614); + static const Color secondary = Colors.blueGrey; + static const Color warning = Color(0xFFfb7d4a); +} diff --git a/example/lib/theme/radius.dart b/example/lib/theme/radius.dart new file mode 100644 index 0000000..73d566f --- /dev/null +++ b/example/lib/theme/radius.dart @@ -0,0 +1,11 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; + +class AppRadius { + static final large = BorderRadius.circular(24.0); + static final medium = BorderRadius.circular(16.0); + static final small = BorderRadius.circular(8.0); +} diff --git a/example/lib/theme/theme.dart b/example/lib/theme/theme.dart new file mode 100644 index 0000000..7ce48a7 --- /dev/null +++ b/example/lib/theme/theme.dart @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/theme/colors.dart'; +import 'package:flutter_example_packages/theme/radius.dart'; +import 'package:google_fonts/google_fonts.dart'; + +final theme = ThemeData.light(); + +final appTheme = ThemeData( + colorScheme: theme.colorScheme.copyWith( + primary: AppColors.primary, + secondary: AppColors.secondary, + ), + + /// [Card] + cardTheme: CardTheme( + clipBehavior: Clip.antiAlias, + margin: const EdgeInsets.all(0), + color: AppColors.primary.withOpacity(0.4), + elevation: 0, + shape: RoundedRectangleBorder( + borderRadius: AppRadius.small, + ), + ), + + /// [TextField] + inputDecorationTheme: theme.inputDecorationTheme.copyWith( + contentPadding: const EdgeInsets.symmetric( + vertical: 14, + horizontal: 16, + ), + border: const OutlineInputBorder(), + ), + + /// [ElevatedButton] + elevatedButtonTheme: ElevatedButtonThemeData( + style: ElevatedButton.styleFrom( + backgroundColor: AppColors.secondary, + minimumSize: const Size.fromHeight(45), + ), + ), + + /// [OutlinedButton] + outlinedButtonTheme: OutlinedButtonThemeData( + style: OutlinedButton.styleFrom( + foregroundColor: AppColors.secondary, + fixedSize: const Size.fromHeight(45), + side: const BorderSide(color: AppColors.secondary), + ), + ), + + /// [Text] + textTheme: TextTheme( + headlineLarge: GoogleFonts.roboto( + fontSize: 44, + fontWeight: FontWeight.bold, + ), + headlineMedium: GoogleFonts.roboto( + fontSize: 30, + fontWeight: FontWeight.bold, + ), + headlineSmall: GoogleFonts.roboto( + fontSize: 24, + fontWeight: FontWeight.bold, + ), + titleLarge: GoogleFonts.roboto( + fontSize: 20, + height: 1.3, + ), + titleMedium: GoogleFonts.roboto( + fontSize: 18, + height: 1.3, + ), + titleSmall: GoogleFonts.roboto( + fontSize: 14, + height: 1.3, + ), + bodyLarge: GoogleFonts.openSans( + fontSize: 18, + height: 1.3, + ), + bodyMedium: GoogleFonts.openSans( + fontSize: 16, + height: 1.3, + ), + bodySmall: GoogleFonts.openSans( + fontSize: 12, + height: 1.3, + ), + ), +); diff --git a/example/lib/widgets/base/app_state.dart b/example/lib/widgets/base/app_state.dart new file mode 100644 index 0000000..5034616 --- /dev/null +++ b/example/lib/widgets/base/app_state.dart @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +abstract class AppState extends State + with WidgetsBindingObserver { + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ); + + void onPostFrameCallback() {} + void onDidChangeMetrics() {} + + void _delayedChangeMetrics() { + for (int i = 0; i <= 5; i++) { + Future.delayed(Duration(milliseconds: 100 * i), () { + if (mounted) { + onDidChangeMetrics(); + } + }); + } + } + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addObserver(this); + WidgetsBinding.instance.addPostFrameCallback((_) { + _delayedChangeMetrics(); + }); + } + + @override + void didChangeMetrics() { + _delayedChangeMetrics(); + } + + @override + void dispose() { + WidgetsBinding.instance.removeObserver(this); + super.dispose(); + } + + @override + Widget build(BuildContext context) => buildWide( + context, + MediaQuery.of(context), + AppLocalizations.of(context)!, + ); +} diff --git a/example/lib/widgets/base/app_stateful_widget.dart b/example/lib/widgets/base/app_stateful_widget.dart new file mode 100644 index 0000000..9830ed7 --- /dev/null +++ b/example/lib/widgets/base/app_stateful_widget.dart @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; + +abstract class AppStatefulWidget extends StatefulWidget { + const AppStatefulWidget({super.key}); +} diff --git a/example/lib/widgets/base/app_stateless_widget.dart b/example/lib/widgets/base/app_stateless_widget.dart new file mode 100644 index 0000000..658f2c7 --- /dev/null +++ b/example/lib/widgets/base/app_stateless_widget.dart @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +abstract class AppStatelessWidget extends StatelessWidget { + const AppStatelessWidget({super.key}); + + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ); + + void onPostFrameCallback() {} + + @override + Widget build(BuildContext context) => buildWide( + context, + MediaQuery.of(context), + AppLocalizations.of(context)!, + ); +} diff --git a/example/lib/widgets/base/export.dart b/example/lib/widgets/base/export.dart new file mode 100644 index 0000000..34f4070 --- /dev/null +++ b/example/lib/widgets/base/export.dart @@ -0,0 +1,9 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +library base; + +export 'package:flutter_example_packages/widgets/base/app_state.dart'; +export 'package:flutter_example_packages/widgets/base/app_stateful_widget.dart'; +export 'package:flutter_example_packages/widgets/base/app_stateless_widget.dart'; diff --git a/example/lib/widgets/blocks/block_alert.dart b/example/lib/widgets/blocks/block_alert.dart new file mode 100644 index 0000000..90dd385 --- /dev/null +++ b/example/lib/widgets/blocks/block_alert.dart @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/theme/radius.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; + +/// Alert +class BlockAlert extends StatelessWidget { + const BlockAlert( + this.text, { + super.key, + this.color = Colors.redAccent, + this.padding = const EdgeInsets.only(bottom: 20), + }); + + final EdgeInsets padding; + final Color color; + final String? text; + + @override + Widget build(BuildContext context) { + return Visibility( + visible: text != null, + child: Padding( + padding: padding, + child: Container( + width: double.infinity, + padding: const EdgeInsets.all(10), + decoration: BoxDecoration( + color: color, + borderRadius: AppRadius.small, + ), + child: TextBodyMedium( + '$text', + color: Colors.white, + ), + ), + ), + ); + } +} diff --git a/example/lib/widgets/blocks/block_info_package.dart b/example/lib/widgets/blocks/block_info_package.dart new file mode 100644 index 0000000..f7353f0 --- /dev/null +++ b/example/lib/widgets/blocks/block_info_package.dart @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/base/package/package.dart'; +import 'package:flutter_example_packages/theme/radius.dart'; +import 'package:flutter_example_packages/widgets/base/export.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +/// Block info package in page +class BlockInfoPackage extends AppStatelessWidget { + const BlockInfoPackage( + this.package, { + super.key, + }); + + final Package package; + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return Container( + padding: const EdgeInsets.all(12), + margin: const EdgeInsets.only(bottom: 20), + decoration: BoxDecoration( + color: Colors.grey.shade200, + borderRadius: AppRadius.small, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextBodyMedium(package.desc), + const SizedBox(height: 8), + Divider( + height: 1, + color: Colors.grey.shade400, + ), + const SizedBox(height: 8), + Row( + children: [ + const Icon(Icons.verified, size: 14, color: Colors.green), + const SizedBox(width: 6), + TextBodySmall(package.version), + const SizedBox(width: 10), + Icon( + Icons.auto_awesome_motion, + size: 14, + color: package.isPlatformDependent + ? Colors.deepOrange + : Colors.blueAccent, + ), + const SizedBox(width: 6), + TextBodySmall( + package.isPlatformDependent + ? l10n.homeListStateDependent + : l10n.homeListStateIndependent, + ), + ], + ), + ], + ), + ); + } +} diff --git a/example/lib/widgets/blocks/block_item.dart b/example/lib/widgets/blocks/block_item.dart new file mode 100644 index 0000000..09d6b46 --- /dev/null +++ b/example/lib/widgets/blocks/block_item.dart @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/base/export.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; + +/// Block list item +class BlockItem extends AppStatelessWidget { + const BlockItem({ + super.key, + this.title, + this.desc, + this.value, + this.future, + this.stream, + this.builder, + }); + + final String? title; + final String? desc; + final T? value; + final Stream? stream; + final Future? future; + final Function(T)? builder; + + AsyncWidgetBuilder get widgetBuilder => + (BuildContext context, AsyncSnapshot snapshot) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Visibility( + visible: title != null, + child: Column( + children: [ + TextTitleLarge(title ?? ''), + const SizedBox(height: 8), + ], + ), + ), + Visibility( + visible: desc != null, + child: Column( + children: [ + TextBodyMedium(desc ?? ''), + const SizedBox(height: 8), + ], + ), + ), + if (snapshot.hasData) + TextBodyMedium( + builder == null + ? snapshot.data.toString() + : builder?.call(snapshot.data as T), + fontWeight: FontWeight.bold, + ), + if (!snapshot.hasData) + const SizedBox( + width: 16, + height: 16, + child: CircularProgressIndicator( + color: Colors.blueAccent, + strokeWidth: 2, + ), + ), + const SizedBox(height: 20), + ], + ); + }; + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + if (stream != null) { + return StreamBuilder( + stream: stream, + builder: widgetBuilder, + ); + } + if (future != null) { + return FutureBuilder( + future: future, + builder: widgetBuilder, + ); + } + return FutureBuilder( + future: Future.value(value), + builder: widgetBuilder, + ); + } +} diff --git a/example/lib/widgets/layouts/block_layout.dart b/example/lib/widgets/layouts/block_layout.dart new file mode 100644 index 0000000..b6affa4 --- /dev/null +++ b/example/lib/widgets/layouts/block_layout.dart @@ -0,0 +1,65 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/theme/colors.dart'; +import 'package:flutter_example_packages/widgets/base/export.dart'; +import 'package:flutter_example_packages/widgets/texts/export.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:scoped_model/scoped_model.dart'; + +class BlockLayout extends AppStatelessWidget { + const BlockLayout({ + super.key, + this.title, + required this.model, + required this.builder, + }); + + final T model; + final String? title; + final Widget Function(BuildContext context, Widget? child, T model) builder; + + @override + Widget buildWide( + BuildContext context, + MediaQueryData media, + AppLocalizations l10n, + ) { + return ScopedModel( + model: model, + child: ScopedModelDescendant( + builder: (context, child, model) { + return Scaffold( + appBar: title == null + ? null + : AppBar( + leading: Padding( + padding: const EdgeInsets.all(8.0), + child: ClipOval( + child: Material( + color: Colors.blueGrey, + child: IconButton( + icon: const Icon(Icons.arrow_back), + tooltip: 'Back', + onPressed: () { + Navigator.of(context).pop(); + }, + ), + ), + ), + ), + backgroundColor: AppColors.primary, + title: TextTitleLarge( + title!, + color: Colors.white, + ), + ), + body: builder.call(context, child, model), + ); + }, + ), + ); + } +} diff --git a/example/lib/widgets/layouts/page_layout.dart b/example/lib/widgets/layouts/page_layout.dart new file mode 100644 index 0000000..2bafe59 --- /dev/null +++ b/example/lib/widgets/layouts/page_layout.dart @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; + +class PageLayout extends StatefulWidget { + const PageLayout({ + super.key, + required this.child, + }); + + final Widget child; + + @override + State createState() => _PageLayoutState(); +} + +class _PageLayoutState extends State { + @override + Widget build(BuildContext context) { + return Localizations.override( + context: context, + child: Builder( + builder: (context) { + return widget.child; + }, + ), + ); + } +} diff --git a/example/lib/widgets/texts/export.dart b/example/lib/widgets/texts/export.dart new file mode 100644 index 0000000..a98add8 --- /dev/null +++ b/example/lib/widgets/texts/export.dart @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +library texts; + +export 'package:flutter_example_packages/widgets/texts/text_body_large.dart'; +export 'package:flutter_example_packages/widgets/texts/text_body_medium.dart'; +export 'package:flutter_example_packages/widgets/texts/text_body_small.dart'; +export 'package:flutter_example_packages/widgets/texts/text_headline_large.dart'; +export 'package:flutter_example_packages/widgets/texts/text_headline_medium.dart'; +export 'package:flutter_example_packages/widgets/texts/text_headline_small.dart'; +export 'package:flutter_example_packages/widgets/texts/text_title_large.dart'; +export 'package:flutter_example_packages/widgets/texts/text_title_medium.dart'; +export 'package:flutter_example_packages/widgets/texts/text_title_small.dart'; diff --git a/example/lib/widgets/texts/text_base.dart b/example/lib/widgets/texts/text_base.dart new file mode 100644 index 0000000..8249b26 --- /dev/null +++ b/example/lib/widgets/texts/text_base.dart @@ -0,0 +1,35 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; + +class TextBase extends StatelessWidget { + const TextBase( + this.data, { + super.key, + this.color, + this.textAlign, + this.fontWeight, + }); + + final String data; + final Color? color; + final TextAlign? textAlign; + final FontWeight? fontWeight; + + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.bodyMedium; + } + + @override + Widget build(BuildContext context) { + return Text( + data, + style: getStyle(context)?.copyWith(color: color ?? Colors.black).copyWith( + fontWeight: fontWeight, + ), + textAlign: textAlign, + ); + } +} diff --git a/example/lib/widgets/texts/text_body_large.dart b/example/lib/widgets/texts/text_body_large.dart new file mode 100644 index 0000000..63f7950 --- /dev/null +++ b/example/lib/widgets/texts/text_body_large.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextBodyLarge extends TextBase { + const TextBodyLarge(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.bodyLarge; + } +} diff --git a/example/lib/widgets/texts/text_body_medium.dart b/example/lib/widgets/texts/text_body_medium.dart new file mode 100644 index 0000000..ed305a4 --- /dev/null +++ b/example/lib/widgets/texts/text_body_medium.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextBodyMedium extends TextBase { + const TextBodyMedium(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.bodyMedium; + } +} diff --git a/example/lib/widgets/texts/text_body_small.dart b/example/lib/widgets/texts/text_body_small.dart new file mode 100644 index 0000000..307aac8 --- /dev/null +++ b/example/lib/widgets/texts/text_body_small.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextBodySmall extends TextBase { + const TextBodySmall(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.bodySmall; + } +} diff --git a/example/lib/widgets/texts/text_headline_large.dart b/example/lib/widgets/texts/text_headline_large.dart new file mode 100644 index 0000000..93469de --- /dev/null +++ b/example/lib/widgets/texts/text_headline_large.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextHeadlineLarge extends TextBase { + const TextHeadlineLarge(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.headlineLarge; + } +} diff --git a/example/lib/widgets/texts/text_headline_medium.dart b/example/lib/widgets/texts/text_headline_medium.dart new file mode 100644 index 0000000..3642c84 --- /dev/null +++ b/example/lib/widgets/texts/text_headline_medium.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextHeadlineMedium extends TextBase { + const TextHeadlineMedium(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.headlineMedium; + } +} diff --git a/example/lib/widgets/texts/text_headline_small.dart b/example/lib/widgets/texts/text_headline_small.dart new file mode 100644 index 0000000..01edb01 --- /dev/null +++ b/example/lib/widgets/texts/text_headline_small.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextHeadlineSmall extends TextBase { + const TextHeadlineSmall(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.headlineSmall; + } +} diff --git a/example/lib/widgets/texts/text_title_large.dart b/example/lib/widgets/texts/text_title_large.dart new file mode 100644 index 0000000..cf715c1 --- /dev/null +++ b/example/lib/widgets/texts/text_title_large.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextTitleLarge extends TextBase { + const TextTitleLarge(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.titleLarge; + } +} diff --git a/example/lib/widgets/texts/text_title_medium.dart b/example/lib/widgets/texts/text_title_medium.dart new file mode 100644 index 0000000..3815048 --- /dev/null +++ b/example/lib/widgets/texts/text_title_medium.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextTitleMedium extends TextBase { + const TextTitleMedium(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.titleMedium; + } +} diff --git a/example/lib/widgets/texts/text_title_small.dart b/example/lib/widgets/texts/text_title_small.dart new file mode 100644 index 0000000..35692a8 --- /dev/null +++ b/example/lib/widgets/texts/text_title_small.dart @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2023. Open Mobile Platform LLC. + * License: Proprietary. + */ +import 'package:flutter/material.dart'; +import 'package:flutter_example_packages/widgets/texts/text_base.dart'; + +class TextTitleSmall extends TextBase { + const TextTitleSmall(super.data, { + super.key, + super.color, + super.textAlign, + super.fontWeight, + }); + + @override + TextStyle? getStyle(BuildContext context) { + return Theme.of(context).textTheme.titleSmall; + } +} diff --git a/example/pubspec.lock b/example/pubspec.lock new file mode 100644 index 0000000..84df1d0 --- /dev/null +++ b/example/pubspec.lock @@ -0,0 +1,1136 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + url: "https://pub.dartlang.org" + source: hosted + version: "50.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.0" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.1" + asn1lib: + dependency: transitive + description: + name: asn1lib + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.9.0" + battery_plus: + dependency: "direct main" + description: + name: battery_plus + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.1" + battery_plus_aurora: + dependency: "direct main" + description: + path: "packages/battery_plus/battery_plus_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + battery_plus_platform_interface: + dependency: transitive + description: + name: battery_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.2" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.3" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "7.2.7" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "8.6.1" + cached_network_image: + dependency: "direct main" + description: + name: cached_network_image + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.3" + cached_network_image_platform_interface: + dependency: transitive + description: + name: cached_network_image_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + cached_network_image_web: + dependency: transitive + description: + name: cached_network_image_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + clock: + dependency: transitive + description: + name: clock + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "4.4.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.16.0" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + crypto: + dependency: "direct main" + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.2" + cupertino_icons: + dependency: "direct main" + description: + name: cupertino_icons + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.5" + dartz: + dependency: "direct main" + description: + name: dartz + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.1" + dbus: + dependency: transitive + description: + name: dbus + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.8" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + url: "https://pub.dartlang.org" + source: hosted + version: "8.2.2" + device_info_plus_aurora: + dependency: "direct main" + description: + path: "packages/device_info_plus/device_info_plus_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "7.0.0" + encrypt: + dependency: transitive + description: + name: encrypt + url: "https://pub.dartlang.org" + source: hosted + version: "5.0.1" + equatable: + dependency: "direct main" + description: + name: equatable + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + fake_async: + dependency: transitive + description: + name: fake_async + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + ffi: + dependency: transitive + description: + name: ffi + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.4" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + flutter: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_blurhash: + dependency: transitive + description: + name: flutter_blurhash + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.0" + flutter_cache_manager: + dependency: "direct main" + description: + name: flutter_cache_manager + url: "https://pub.dartlang.org" + source: hosted + version: "3.3.1" + flutter_keyboard_visibility: + dependency: "direct main" + description: + name: flutter_keyboard_visibility + url: "https://pub.dartlang.org" + source: hosted + version: "5.4.1" + flutter_keyboard_visibility_aurora: + dependency: "direct main" + description: + path: "packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + flutter_keyboard_visibility_linux: + dependency: transitive + description: + name: flutter_keyboard_visibility_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_macos: + dependency: transitive + description: + name: flutter_keyboard_visibility_macos + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_keyboard_visibility_platform_interface: + dependency: transitive + description: + name: flutter_keyboard_visibility_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_keyboard_visibility_web: + dependency: transitive + description: + name: flutter_keyboard_visibility_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_keyboard_visibility_windows: + dependency: transitive + description: + name: flutter_keyboard_visibility_windows + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + flutter_lints: + dependency: "direct dev" + description: + name: flutter_lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + flutter_local_notifications: + dependency: "direct main" + description: + name: flutter_local_notifications + url: "https://pub.dartlang.org" + source: hosted + version: "14.1.2" + flutter_local_notifications_aurora: + dependency: "direct main" + description: + path: "packages/flutter_local_notifications/flutter_local_notifications_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + flutter_local_notifications_linux: + dependency: transitive + description: + name: flutter_local_notifications_linux + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0+1" + flutter_local_notifications_platform_interface: + dependency: transitive + description: + name: flutter_local_notifications_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "7.0.0+1" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_markdown: + dependency: "direct main" + description: + name: flutter_markdown + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.15" + flutter_secure_storage: + dependency: "direct main" + description: + name: flutter_secure_storage + url: "https://pub.dartlang.org" + source: hosted + version: "8.0.0" + flutter_secure_storage_aurora: + dependency: "direct main" + description: + path: "packages/flutter_secure_storage/flutter_secure_storage_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + flutter_secure_storage_linux: + dependency: transitive + description: + name: flutter_secure_storage_linux + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.3" + flutter_secure_storage_macos: + dependency: transitive + description: + name: flutter_secure_storage_macos + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.0" + flutter_secure_storage_platform_interface: + dependency: transitive + description: + name: flutter_secure_storage_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + flutter_secure_storage_web: + dependency: transitive + description: + name: flutter_secure_storage_web + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + flutter_secure_storage_windows: + dependency: transitive + description: + name: flutter_secure_storage_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + flutter_test: + dependency: "direct dev" + description: flutter + source: sdk + version: "0.0.0" + flutter_web_plugins: + dependency: transitive + description: flutter + source: sdk + version: "0.0.0" + freezed: + dependency: "direct dev" + description: + name: freezed + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.3" + freezed_annotation: + dependency: "direct main" + description: + name: freezed_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" + get_it: + dependency: "direct main" + description: + name: get_it + url: "https://pub.dartlang.org" + source: hosted + version: "7.6.0" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + google_fonts: + dependency: "direct main" + description: + name: google_fonts + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.4" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.5" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.2" + intl: + dependency: "direct main" + description: + name: intl + url: "https://pub.dartlang.org" + source: hosted + version: "0.17.0" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.4" + json_annotation: + dependency: "direct main" + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "4.8.0" + json_serializable: + dependency: "direct dev" + description: + name: json_serializable + url: "https://pub.dartlang.org" + source: hosted + version: "6.6.1" + lints: + dependency: transitive + description: + name: lints + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + markdown: + dependency: transitive + description: + name: markdown + url: "https://pub.dartlang.org" + source: hosted + version: "7.0.1" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.12" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.0" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + nested: + dependency: transitive + description: + name: nested + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + package_info_plus: + dependency: "direct main" + description: + name: package_info_plus + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.2" + package_info_plus_aurora: + dependency: "direct main" + description: + path: "packages/package_info_plus/package_info_plus_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + package_info_plus_platform_interface: + dependency: transitive + description: + name: package_info_plus_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.8.2" + path_provider: + dependency: "direct main" + description: + name: path_provider + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.15" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.27" + path_provider_aurora: + dependency: "direct main" + description: + path: "packages/path_provider/path_provider_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + path_provider_foundation: + dependency: transitive + description: + name: path_provider_foundation + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.3" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.11" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.7" + petitparser: + dependency: transitive + description: + name: petitparser + url: "https://pub.dartlang.org" + source: hosted + version: "5.1.0" + photo_view: + dependency: "direct main" + description: + name: photo_view + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.0" + platform: + dependency: transitive + description: + name: platform + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + plugin_platform_interface: + dependency: transitive + description: + name: plugin_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + pointycastle: + dependency: transitive + description: + name: pointycastle + url: "https://pub.dartlang.org" + source: hosted + version: "3.7.3" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "4.2.4" + provider: + dependency: "direct main" + description: + name: provider + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.5" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.4" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.3" + qr: + dependency: transitive + description: + name: qr + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + qr_flutter: + dependency: "direct main" + description: + name: qr_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "4.0.0" + rxdart: + dependency: "direct main" + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.27.7" + scoped_model: + dependency: "direct main" + description: + name: scoped_model + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + shared_preferences: + dependency: "direct main" + description: + name: shared_preferences + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + shared_preferences_aurora: + dependency: "direct main" + description: + path: "packages/shared_preferences/shared_preferences_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + shared_preferences_foundation: + dependency: transitive + description: + name: shared_preferences_foundation + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + shared_preferences_linux: + dependency: transitive + description: + name: shared_preferences_linux + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + shared_preferences_platform_interface: + dependency: transitive + description: + name: shared_preferences_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + shared_preferences_web: + dependency: transitive + description: + name: shared_preferences_web + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + shared_preferences_windows: + dependency: transitive + description: + name: shared_preferences_windows + url: "https://pub.dartlang.org" + source: hosted + version: "2.3.0" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.1" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + sky_engine: + dependency: transitive + description: flutter + source: sdk + version: "0.0.99" + source_gen: + dependency: transitive + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + source_helper: + dependency: transitive + description: + name: source_helper + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.3" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.0" + sqflite: + dependency: transitive + description: + name: sqflite + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.8+4" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.5+1" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.1" + synchronized: + dependency: transitive + description: + name: synchronized + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.12" + timezone: + dependency: transitive + description: + name: timezone + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.2" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.1" + translator: + dependency: "direct main" + description: + name: translator + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.7" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.2" + universal_io: + dependency: "direct main" + description: + name: universal_io + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.0" + upower: + dependency: transitive + description: + name: upower + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.0" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.7" + vector_math: + dependency: transitive + description: + name: vector_math + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.2" + wakelock: + dependency: "direct main" + description: + name: wakelock + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.2" + wakelock_aurora: + dependency: "direct main" + description: + path: "packages/wakelock/wakelock_aurora" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + wakelock_macos: + dependency: transitive + description: + name: wakelock_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.0" + wakelock_platform_interface: + dependency: transitive + description: + name: wakelock_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" + wakelock_web: + dependency: transitive + description: + name: wakelock_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.4.0" + wakelock_windows: + dependency: transitive + description: + name: wakelock_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.1" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "2.4.0" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" + xdga_directories: + dependency: "direct main" + description: + path: "packages/xdga_directories" + ref: flutter_example_packages + resolved-ref: b2be3b38dcf55c327ebcfb5cb887993cb247dcff + url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" + source: git + version: "0.0.1" + xml: + dependency: transitive + description: + name: xml + url: "https://pub.dartlang.org" + source: hosted + version: "6.1.0" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" +sdks: + dart: ">=2.18.6 <3.0.0" + flutter: ">=3.3.0" diff --git a/example/pubspec.yaml b/example/pubspec.yaml new file mode 100644 index 0000000..f881644 --- /dev/null +++ b/example/pubspec.yaml @@ -0,0 +1,164 @@ +# Copyright (c) 2023. Open Mobile Platform LLC. +# License: Proprietary. + +name: flutter_example_packages +description: Examples of the flutter plugins for Aurora OS. + +publish_to: "none" + +version: 1.0.0+1 + +environment: + sdk: ">=2.18.6 <3.0.0" + +dependencies: + flutter: + sdk: flutter + flutter_localizations: + sdk: flutter + ## https://pub.dev/packages/cupertino_icons + cupertino_icons: ^1.0.5 + ## https://pub.dev/packages/google_fonts + google_fonts: ^4.0.4 + ## https://pub.dev/packages/scoped_model + scoped_model: ^2.0.0 + ## https://pub.dev/packages/get_it + get_it: ^7.6.0 + ## https://pub.dev/packages/intl + intl: ^0.17.0 + ## https://pub.dev/packages/universal_io + universal_io: ^2.2.0 + ## https://pub.dev/packages/crypto + crypto: ^3.0.2 + ## https://pub.dev/packages/cached_network_image + cached_network_image: ^3.2.3 + ## https://pub.dev/packages/flutter_cache_manager + flutter_cache_manager: ^3.3.0 + ## https://pub.dev/packages/photo_view + photo_view: ^0.14.0 + ## https://pub.dev/packages/dartz + dartz: ^0.10.1 + ## https://pub.dev/packages/provider + provider: ^6.0.5 + ## https://pub.dev/packages/equatable + equatable: ^2.0.5 + ## https://pub.dev/packages/qr_flutter + qr_flutter: ^4.0.0 + ## https://pub.dev/packages/rxdart + rxdart: ^0.27.7 + ## https://pub.dev/packages/translator + translator: ^0.1.7 + ## https://pub.dev/packages/flutter_markdown + flutter_markdown: ^0.6.15 + ## https://pub.dev/packages/freezed_annotation + freezed_annotation: ^2.2.0 + ## https://pub.dev/packages/json_annotation + json_annotation: ^4.8.0 + + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/xdga_directories + xdga_directories: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/xdga_directories + + ## https://pub.dev/packages/battery_plus + battery_plus: ^4.0.1 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/battery_plus/battery_plus_aurora + battery_plus_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/battery_plus/battery_plus_aurora + + ## https://pub.dev/packages/device_info_plus + device_info_plus: ^8.2.2 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/device_info_plus/device_info_plus_aurora + device_info_plus_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/device_info_plus/device_info_plus_aurora + + ## https://pub.dev/packages/flutter_local_notifications + flutter_local_notifications: ^14.1.1 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/flutter_local_notifications/flutter_local_notifications_aurora + flutter_local_notifications_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/flutter_local_notifications/flutter_local_notifications_aurora + + ## https://pub.dev/packages/flutter_secure_storage + flutter_secure_storage: ^8.0.0 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/flutter_secure_storage/flutter_secure_storage_aurora + flutter_secure_storage_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/flutter_secure_storage/flutter_secure_storage_aurora + + ## https://pub.dev/packages/package_info_plus + package_info_plus: 3.1.2 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/flutter_example_packages/packages/package_info_plus/package_info_plus_aurora + package_info_plus_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/package_info_plus/package_info_plus_aurora + + ## https://pub.dev/packages/path_provider + path_provider: ^2.0.15 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/path_provider/path_provider_aurora + path_provider_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/path_provider/path_provider_aurora + + ## https://pub.dev/packages/shared_preferences + shared_preferences: ^2.1.2 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/shared_preferences/shared_preferences_aurora + shared_preferences_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/shared_preferences/shared_preferences_aurora + + ## https://pub.dev/packages/wakelock + wakelock: ^0.6.2 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/wakelock/wakelock_aurora + wakelock_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/wakelock/wakelock_aurora + + ## https://pub.dev/packages/flutter_keyboard_visibility + flutter_keyboard_visibility: ^5.4.1 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora + flutter_keyboard_visibility_aurora: + git: + url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git + ref: flutter_example_packages + path: packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora + +dev_dependencies: + flutter_test: + sdk: + flutter + ## https://pub.dev/packages/flutter_lints @todo + flutter_lints: ^2.0.0 + ## https://pub.dev/packages/build_runner + build_runner: ^2.3.3 + ## https://pub.dev/packages/freezed + freezed: ^2.3.3 + ## https://pub.dev/packages/json_serializable + json_serializable: ^6.6.1 + +flutter: + generate: true + uses-material-design: true + assets: + - assets/ + - assets/images/ diff --git a/packages/battery_plus/battery_plus_aurora/data/preview.png b/packages/battery_plus/battery_plus_aurora/data/preview.png deleted file mode 100644 index 924f871..0000000 Binary files a/packages/battery_plus/battery_plus_aurora/data/preview.png and /dev/null differ diff --git a/packages/battery_plus/battery_plus_aurora/example/README.md b/packages/battery_plus/battery_plus_aurora/example/README.md deleted file mode 100644 index 9110259..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# battery_plus_aurora_example - -Demonstrates how to use the battery_plus_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/battery_plus/battery_plus_aurora/example/analysis_options.yaml b/packages/battery_plus/battery_plus_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/CMakeLists.txt b/packages/battery_plus/battery_plus_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index 048467b..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.battery_plus_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/desktop/com.example.battery_plus_aurora_example.desktop b/packages/battery_plus/battery_plus_aurora/example/aurora/desktop/com.example.battery_plus_aurora_example.desktop deleted file mode 100644 index a6aeb93..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/aurora/desktop/com.example.battery_plus_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=battery_plus_aurora_example -Comment=Demonstrates how to use the battery_plus_aurora plugin. -Icon=com.example.battery_plus_aurora_example -Exec=/usr/bin/com.example.battery_plus_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=battery_plus_aurora_example diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/108x108.png b/packages/battery_plus/battery_plus_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/128x128.png b/packages/battery_plus/battery_plus_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/172x172.png b/packages/battery_plus/battery_plus_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/86x86.png b/packages/battery_plus/battery_plus_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/battery_plus/battery_plus_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/battery_plus/battery_plus_aurora/example/aurora/rpm/com.example.battery_plus_aurora_example.spec b/packages/battery_plus/battery_plus_aurora/example/aurora/rpm/com.example.battery_plus_aurora_example.spec deleted file mode 100644 index a06d8f3..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/aurora/rpm/com.example.battery_plus_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.battery_plus_aurora_example -Summary: Demonstrates how to use the battery_plus_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/battery_plus/battery_plus_aurora/example/lib/main.dart b/packages/battery_plus/battery_plus_aurora/example/lib/main.dart deleted file mode 100644 index 4d6723f..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/lib/main.dart +++ /dev/null @@ -1,164 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:battery_plus/battery_plus.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - final _battery = Battery(); - String? _error; - int? _batteryLevel; - String? _batteryState; - bool? _isInBatterySaveMode; - - @override - void initState() { - super.initState(); - initPlatformState(); - } - - // Platform messages are asynchronous, so we initialize in an async method. - Future initPlatformState() async { - try { - // Get current battery level - final batteryLevel = await _battery.batteryLevel; - // Get current battery state - final batteryState = await _battery.batteryState; - // Check is enable SaveMode - final isInBatterySaveMode = await _battery.isInBatterySaveMode; - - // Be informed when the state (full, charging, discharging) changes - _battery.onBatteryStateChanged.listen((BatteryState state) { - debugPrint(state.toString()); - }); - - setState(() { - _batteryLevel = batteryLevel; - _batteryState = batteryState.name; - _isInBatterySaveMode = isInBatterySaveMode; - }); - } on Exception catch (e) { - setState(() { - _error = e.toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 20); - const spaceSmall = SizedBox(height: 10); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example battery_plus'), - ), - body: Stack( - children: [ - // Error message - Visibility( - visible: _error != null, - child: Center( - child: Padding( - padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.redAccent, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: Text( - _error ?? '', - style: textStyleWhite, - ), - ), - ), - ), - ), - // List directories path - Visibility( - visible: _error == null, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: - BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of battery_plus', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - const Text( - 'Battery Level', - style: textStyleTitle, - ), - spaceSmall, - Text( - "$_batteryLevel%", - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Battery State', - style: textStyleTitle, - ), - spaceSmall, - Text( - _batteryState.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Is In Battery SaveMode', - style: textStyleTitle, - ), - spaceSmall, - Text( - _isInBatterySaveMode.toString(), - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/packages/battery_plus/battery_plus_aurora/example/pubspec.lock b/packages/battery_plus/battery_plus_aurora/example/pubspec.lock deleted file mode 100644 index 0c1972b..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/pubspec.lock +++ /dev/null @@ -1,243 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - battery_plus: - dependency: "direct main" - description: - name: battery_plus - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.1" - battery_plus_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - battery_plus_platform_interface: - dependency: transitive - description: - name: battery_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.2" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - dbus: - dependency: transitive - description: - name: dbus - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.8" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - upower: - dependency: transitive - description: - name: upower - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.0" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/battery_plus/battery_plus_aurora/example/pubspec.yaml b/packages/battery_plus/battery_plus_aurora/example/pubspec.yaml deleted file mode 100644 index 42def81..0000000 --- a/packages/battery_plus/battery_plus_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: battery_plus_aurora_example -description: Demonstrates how to use the battery_plus_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - battery_plus: ^4.0.1 - battery_plus_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/battery_plus/battery_plus_aurora/lib/battery_plus_aurora.dart b/packages/battery_plus/battery_plus_aurora/lib/battery_plus_aurora.dart index 94040d0..4eaf451 100644 --- a/packages/battery_plus/battery_plus_aurora/lib/battery_plus_aurora.dart +++ b/packages/battery_plus/battery_plus_aurora/lib/battery_plus_aurora.dart @@ -6,16 +6,13 @@ import 'package:battery_plus_aurora/com_nokia_mce_request.dart'; import 'package:battery_plus_aurora/com_nokia_mce_signal.dart'; import 'package:dbus/dbus.dart'; import 'package:battery_plus_platform_interface/battery_plus_platform_interface.dart'; -import 'package:flutter/foundation.dart'; import 'dart:async' show Stream; import 'package:async/async.dart' show StreamGroup; class BatteryPlusAurora extends BatteryPlatform { /// Register this dart class as the platform implementation for aurora static void registerWith() { - if (TargetPlatform.aurora == defaultTargetPlatform) { - BatteryPlatform.instance = BatteryPlusAurora(); - } + BatteryPlatform.instance = BatteryPlusAurora(); } /// Returns the current battery level in percent. diff --git a/packages/battery_plus/battery_plus_aurora/pubspec.yaml b/packages/battery_plus/battery_plus_aurora/pubspec.yaml index 87fb4e2..5759bc0 100644 --- a/packages/battery_plus/battery_plus_aurora/pubspec.yaml +++ b/packages/battery_plus/battery_plus_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: diff --git a/packages/device_info_plus/device_info_plus_aurora/README.md b/packages/device_info_plus/device_info_plus_aurora/README.md index b85db91..7df523e 100644 --- a/packages/device_info_plus/device_info_plus_aurora/README.md +++ b/packages/device_info_plus/device_info_plus_aurora/README.md @@ -37,7 +37,7 @@ Therefore, you have to include `device_info_plus_aurora` alongside `device_info_ ```yaml dependencies: - device_info_plus: ^9.0.1 + device_info_plus: ^8.2.2 device_info_plus_aurora: path: # path to folder with plugin ``` diff --git a/packages/device_info_plus/device_info_plus_aurora/data/preview.png b/packages/device_info_plus/device_info_plus_aurora/data/preview.png deleted file mode 100644 index b7d356e..0000000 Binary files a/packages/device_info_plus/device_info_plus_aurora/data/preview.png and /dev/null differ diff --git a/packages/device_info_plus/device_info_plus_aurora/example/README.md b/packages/device_info_plus/device_info_plus_aurora/example/README.md deleted file mode 100644 index ae0d7d1..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# device_info_plus_aurora - -Demonstrates how to use the device_info_plus plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/device_info_plus/device_info_plus_aurora/example/analysis_options.yaml b/packages/device_info_plus/device_info_plus_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/.gitignore b/packages/device_info_plus/device_info_plus_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/CMakeLists.txt b/packages/device_info_plus/device_info_plus_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index ef6d32e..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.device_info_plus_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/desktop/com.example.device_info_plus_aurora_example.desktop b/packages/device_info_plus/device_info_plus_aurora/example/aurora/desktop/com.example.device_info_plus_aurora_example.desktop deleted file mode 100644 index 88c8b51..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/aurora/desktop/com.example.device_info_plus_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=device_info_plus_aurora_example -Comment=Demonstrates how to use the device_info_plus_aurora plugin. -Icon=com.example.device_info_plus_aurora_example -Exec=/usr/bin/com.example.device_info_plus_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions=DeviceInfo -OrganizationName=com.example -ApplicationName=device_info_plus_aurora_example diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/108x108.png b/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/128x128.png b/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/172x172.png b/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/86x86.png b/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/device_info_plus/device_info_plus_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/main.cpp b/packages/device_info_plus/device_info_plus_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/device_info_plus/device_info_plus_aurora/example/aurora/rpm/com.example.device_info_plus_aurora_example.spec b/packages/device_info_plus/device_info_plus_aurora/example/aurora/rpm/com.example.device_info_plus_aurora_example.spec deleted file mode 100644 index 8706033..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/aurora/rpm/com.example.device_info_plus_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.device_info_plus_aurora_example -Summary: Demonstrates how to use the device_info_plus_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/device_info_plus/device_info_plus_aurora/example/lib/main.dart b/packages/device_info_plus/device_info_plus_aurora/example/lib/main.dart deleted file mode 100644 index 26c9b63..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/lib/main.dart +++ /dev/null @@ -1,389 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:device_info_plus_aurora/aurora_device_info.dart'; -import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:device_info_plus/device_info_plus.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - String? _error; - String? _id; - String? _name; - String? _version; - String? _prettyName; - bool? _hasGNSS; - bool? _hasNFC; - bool? _hasBluetooth; - bool? _hasWlan; - int? _maxCpuClockSpeed; - int? _numberCpuCores; - int? _batteryChargePercentage; - double? _mainCameraResolution; - double? _frontalCameraResolution; - int? _ramTotalSize; - int? _ramFreeSize; - String? _screenResolution; - String? _osVersion; - String? _deviceModel; - Map? _externalStorage; - Map? _internalStorage; - List>? _simCards; - - @override - void initState() { - super.initState(); - initPlatformState(); - } - - // Platform messages are asynchronous, so we initialize in an async method. - Future initPlatformState() async { - final deviceInfoPlugin = DeviceInfoPlugin(); - - try { - final deviceInfo = await deviceInfoPlugin.linuxInfo as AuroraDeviceInfo; - setState(() { - _id = deviceInfo.id; - _name = deviceInfo.name; - _version = deviceInfo.version; - _prettyName = deviceInfo.prettyName; - _hasGNSS = deviceInfo.hasGNSS; - _hasNFC = deviceInfo.hasNFC; - _hasBluetooth = deviceInfo.hasBluetooth; - _hasWlan = deviceInfo.hasWlan; - _maxCpuClockSpeed = deviceInfo.maxCpuClockSpeed; - _numberCpuCores = deviceInfo.numberCpuCores; - _batteryChargePercentage = deviceInfo.batteryChargePercentage; - _mainCameraResolution = deviceInfo.mainCameraResolution; - _frontalCameraResolution = deviceInfo.frontalCameraResolution; - _ramTotalSize = deviceInfo.ramTotalSize; - _ramFreeSize = deviceInfo.ramFreeSize; - _screenResolution = deviceInfo.screenResolution; - _osVersion = deviceInfo.osVersion; - _deviceModel = deviceInfo.deviceModel; - _externalStorage = deviceInfo.externalStorage; - _internalStorage = deviceInfo.internalStorage; - _simCards = deviceInfo.simCards; - }); - } on Exception catch (e) { - setState(() { - _error = e.toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 20); - const spaceSmall = SizedBox(height: 10); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example device_info_plus'), - ), - body: Stack( - children: [ - // Error message - Visibility( - visible: _error != null, - child: Center( - child: Padding( - padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.redAccent, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: Text( - _error ?? '', - style: textStyleWhite, - ), - ), - ), - ), - ), - // List directories path - Visibility( - visible: _error == null, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: - BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of device_info_plus', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - const Text( - 'ID', - style: textStyleTitle, - ), - spaceSmall, - Text( - _id.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Name', - style: textStyleTitle, - ), - spaceSmall, - Text( - _name.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Version', - style: textStyleTitle, - ), - spaceSmall, - Text( - _version.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Pretty Name', - style: textStyleTitle, - ), - spaceSmall, - Text( - _prettyName.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Has GNSS', - style: textStyleTitle, - ), - spaceSmall, - Text( - _hasGNSS.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Has NFC', - style: textStyleTitle, - ), - spaceSmall, - Text( - _hasNFC.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Has Bluetooth', - style: textStyleTitle, - ), - spaceSmall, - Text( - _hasBluetooth.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Has Wlan', - style: textStyleTitle, - ), - spaceSmall, - Text( - _hasWlan.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Max Cpu Clock Speed', - style: textStyleTitle, - ), - spaceSmall, - Text( - _maxCpuClockSpeed.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Number Cpu Cores', - style: textStyleTitle, - ), - spaceSmall, - Text( - _numberCpuCores.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Battery Charge Percentage', - style: textStyleTitle, - ), - spaceSmall, - Text( - _batteryChargePercentage.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Main Camera Resolution', - style: textStyleTitle, - ), - spaceSmall, - Text( - _mainCameraResolution.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Frontal Camera Resolution', - style: textStyleTitle, - ), - spaceSmall, - Text( - _frontalCameraResolution.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Ram Total Size', - style: textStyleTitle, - ), - spaceSmall, - Text( - _ramTotalSize.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Ram Free Size', - style: textStyleTitle, - ), - spaceSmall, - Text( - _ramFreeSize.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Screen Resolution', - style: textStyleTitle, - ), - spaceSmall, - Text( - _screenResolution.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'OS Version', - style: textStyleTitle, - ), - spaceSmall, - Text( - _osVersion.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Device Model', - style: textStyleTitle, - ), - spaceSmall, - Text( - _deviceModel.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'External Storage Info', - style: textStyleTitle, - ), - spaceSmall, - Text( - _externalStorage.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Internal Storage Info', - style: textStyleTitle, - ), - spaceSmall, - Text( - _internalStorage.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'SIM Cards Info', - style: textStyleTitle, - ), - spaceSmall, - Text( - _simCards.toString(), - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/packages/device_info_plus/device_info_plus_aurora/example/pubspec.lock b/packages/device_info_plus/device_info_plus_aurora/example/pubspec.lock deleted file mode 100644 index 98de599..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/pubspec.lock +++ /dev/null @@ -1,257 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - dbus: - dependency: transitive - description: - name: dbus - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.8" - device_info_plus: - dependency: "direct main" - description: - name: device_info_plus - url: "https://pub.dartlang.org" - source: hosted - version: "9.0.2" - device_info_plus_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - device_info_plus_platform_interface: - dependency: transitive - description: - name: device_info_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "7.0.0" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.4" - win32_registry: - dependency: transitive - description: - name: win32_registry - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/device_info_plus/device_info_plus_aurora/example/pubspec.yaml b/packages/device_info_plus/device_info_plus_aurora/example/pubspec.yaml deleted file mode 100644 index 4ccd339..0000000 --- a/packages/device_info_plus/device_info_plus_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: device_info_plus_aurora_example -description: Demonstrates how to use the device_info_plus_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - device_info_plus: ^9.0.1 - device_info_plus_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/device_info_plus/device_info_plus_aurora/lib/device_info_plus_aurora.dart b/packages/device_info_plus/device_info_plus_aurora/lib/device_info_plus_aurora.dart index df96320..1324047 100644 --- a/packages/device_info_plus/device_info_plus_aurora/lib/device_info_plus_aurora.dart +++ b/packages/device_info_plus/device_info_plus_aurora/lib/device_info_plus_aurora.dart @@ -8,17 +8,12 @@ import 'package:device_info_plus_aurora/ru_omp_deviceinfo_features.dart'; import 'package:device_info_plus_aurora/ru_omp_deviceinfo_sim.dart'; import 'package:device_info_plus_aurora/ru_omp_deviceinfo_storages.dart'; import 'package:device_info_plus_platform_interface/device_info_plus_platform_interface.dart'; -import 'package:flutter/foundation.dart'; import 'aurora_device_info.dart'; class DeviceInfoPlusAurora extends DeviceInfoPlatform { /// Register this dart class as the platform implementation for aurora static void registerWith() { - if (TargetPlatform.aurora == defaultTargetPlatform) { - DeviceInfoPlatform.instance = DeviceInfoPlusAurora(); - } else { - DeviceInfoPlatform.instance = DeviceInfoPlusLinuxPlugin(); - } + DeviceInfoPlatform.instance = DeviceInfoPlusAurora(); } @override diff --git a/packages/device_info_plus/device_info_plus_aurora/pubspec.yaml b/packages/device_info_plus/device_info_plus_aurora/pubspec.yaml index 7953d23..6944e40 100644 --- a/packages/device_info_plus/device_info_plus_aurora/pubspec.yaml +++ b/packages/device_info_plus/device_info_plus_aurora/pubspec.yaml @@ -7,13 +7,13 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: sdk: flutter dbus: ^0.7.8 - device_info_plus: ^9.0.1 + device_info_plus: ^8.2.2 plugin_platform_interface: ^2.0.2 device_info_plus_platform_interface: ^7.0.0 diff --git a/packages/battery_plus/battery_plus_aurora/example/.gitignore b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.gitignore similarity index 55% rename from packages/battery_plus/battery_plus_aurora/example/.gitignore rename to packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.gitignore index 3db3823..96486fd 100644 --- a/packages/battery_plus/battery_plus_aurora/example/.gitignore +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.gitignore @@ -22,26 +22,9 @@ migrate_working_dir/ #.vscode/ # Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock **/doc/api/ -**/ios/Flutter/.last_build_id .dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies .packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter +build/ diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.metadata b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.metadata new file mode 100644 index 0000000..641645c --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.metadata @@ -0,0 +1,30 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled. + +version: + revision: 135454af32477f815a7525073027a3ff9eff1bfd + channel: aurora + +project_type: plugin + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 135454af32477f815a7525073027a3ff9eff1bfd + base_revision: 135454af32477f815a7525073027a3ff9eff1bfd + - platform: aurora + create_revision: 135454af32477f815a7525073027a3ff9eff1bfd + base_revision: 135454af32477f815a7525073027a3ff9eff1bfd + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/c_cpp_properties.json b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..13d0b90 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/c_cpp_properties.json @@ -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 +} diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/settings.json b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/settings.json new file mode 100644 index 0000000..d9db8dd --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/.vscode/settings.json @@ -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" + } +} diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/README.md b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/README.md new file mode 100644 index 0000000..39405a2 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/README.md @@ -0,0 +1,45 @@ +# flutter_keyboard_visibility_aurora + +The Aurora implementation of [flutter_keyboard_visibility](https://pub.dev/packages/flutter_keyboard_visibility). + +## Usage +This package is not an _endorsed_ implementation of `flutter_keyboard_visibility`. +Therefore, you have to include `flutter_local_notifications_aurora` alongside `flutter_keyboard_visibility` as dependencies in your `pubspec.yaml` file. + +**pubspec.yaml** + +```yaml +dependencies: + flutter_keyboard_visibility: 5.4.1 + flutter_keyboard_visibility_aurora: + path: # path to folder with plugin +``` + +***.dart** + +```dart +/// Default plugin component +final _controller = KeyboardVisibilityController(); + +/// Custom platform component with keyboard height +final _controllerAurora = FlutterKeyboardVisibilityAurora(); + +/// Stream change visibility +Stream onChangeKeyboard() async* { + yield _controller.isVisible; + + await for (final state in _controller.onChange) { + yield state; + } +} + +/// Stream change height +Stream onChangeKeyboardHeight() async* { + yield await _controllerAurora.height; + + await for (final state in _controllerAurora.onChangeHeight) { + yield state; + } +} +``` + diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/analysis_options.yaml b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/analysis_options.yaml new file mode 100644 index 0000000..f9b3034 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/analysis_options.yaml @@ -0,0 +1 @@ +include: package:flutter_lints/flutter.yaml diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/CMakeLists.txt b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/CMakeLists.txt new file mode 100644 index 0000000..00df708 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/CMakeLists.txt @@ -0,0 +1,23 @@ +cmake_minimum_required(VERSION 3.10) + +set(PROJECT_NAME flutter_keyboard_visibility_aurora) +set(PLUGIN_NAME flutter_keyboard_visibility_aurora_platform_plugin) + +project(${PROJECT_NAME} LANGUAGES CXX) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) + +set(CMAKE_CXX_FLAGS "-Wall -Wextra -Wno-psabi") +set(CMAKE_CXX_FLAGS_RELEASE "-O3") + +find_package(PkgConfig REQUIRED) +pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) + +add_library(${PLUGIN_NAME} SHARED flutter_keyboard_visibility_aurora_plugin.cpp) + +set_target_properties(${PLUGIN_NAME} PROPERTIES CXX_VISIBILITY_PRESET hidden) +target_link_libraries(${PLUGIN_NAME} PRIVATE PkgConfig::FlutterEmbedder) + +target_include_directories(${PLUGIN_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) +target_compile_definitions(${PLUGIN_NAME} PRIVATE PLUGIN_IMPL) diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/flutter_keyboard_visibility_aurora_plugin.cpp b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/flutter_keyboard_visibility_aurora_plugin.cpp new file mode 100644 index 0000000..f95a4a8 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/flutter_keyboard_visibility_aurora_plugin.cpp @@ -0,0 +1,83 @@ +#include +#include +#include +#include +#include + +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); +} diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora_plugin.h b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora_plugin.h new file mode 100644 index 0000000..980fa93 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/flutter_keyboard_visibility_aurora_plugin.h @@ -0,0 +1,22 @@ +#ifndef FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_H +#define FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_H + +#include +#include + +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 */ diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/globals.h b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/globals.h new file mode 100644 index 0000000..69bb59e --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/aurora/include/flutter_keyboard_visibility_aurora/globals.h @@ -0,0 +1,10 @@ +#ifndef FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_GLOBALS_H +#define FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_GLOBALS_H + +#ifdef PLUGIN_IMPL +#define PLUGIN_EXPORT __attribute__((visibility("default"))) +#else +#define PLUGIN_EXPORT +#endif + +#endif /* FLUTTER_PLUGIN_FLUTTER_KEYBOARD_VISIBILITY_AURORA_PLUGIN_GLOBALS_H */ diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora.dart b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora.dart new file mode 100644 index 0000000..c3522c2 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora.dart @@ -0,0 +1,26 @@ +import 'package:flutter_keyboard_visibility_platform_interface/flutter_keyboard_visibility_platform_interface.dart'; + +import 'flutter_keyboard_visibility_aurora_platform_interface.dart'; + +class FlutterKeyboardVisibilityAurora + extends FlutterKeyboardVisibilityPlatform { + /// Factory method that initializes the FlutterKeyboardVisibility plugin + /// platform with an instance of the plugin for Aurora OS. + static void registerWith() { + FlutterKeyboardVisibilityPlatform.instance = + FlutterKeyboardVisibilityAurora(); + } + + /// Emits changes to keyboard visibility from the platform. + @override + Stream get onChange => + FlutterKeyboardVisibilityAuroraPlatform.instance.onChangeVisibility(); + + /// Emits changes to keyboard height from the platform. + Stream get onChangeHeight => + FlutterKeyboardVisibilityAuroraPlatform.instance.onChangeHeight(); + + /// Get keyboard height. + Future get height => + FlutterKeyboardVisibilityAuroraPlatform.instance.getKeyboardHeight(); +} diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_method_channel.dart b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_method_channel.dart new file mode 100644 index 0000000..ac1d10b --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_method_channel.dart @@ -0,0 +1,33 @@ +import 'package:flutter/services.dart'; + +import 'flutter_keyboard_visibility_aurora_platform_interface.dart'; + +/// An implementation of [FlutterKeyboardVisibilityAuroraPlatform] that uses method channels. +class MethodChannelFlutterKeyboardVisibilityAurora + extends FlutterKeyboardVisibilityAuroraPlatform { + final methodChannel = + const MethodChannel('flutter_keyboard_visibility_aurora'); + + @override + Future getKeyboardHeight() async { + return await methodChannel.invokeMethod('getKeyboardHeight') ?? 0.0; + } + + @override + Stream onChangeVisibility() async* { + await for (final event + in const EventChannel('flutter_keyboard_visibility_aurora_state') + .receiveBroadcastStream()) { + yield event == true; + } + } + + @override + Stream onChangeHeight() async* { + await for (final event + in const EventChannel('flutter_keyboard_visibility_aurora_height') + .receiveBroadcastStream()) { + yield event as double; + } + } +} diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_platform_interface.dart b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_platform_interface.dart new file mode 100644 index 0000000..0d430a6 --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/lib/flutter_keyboard_visibility_aurora_platform_interface.dart @@ -0,0 +1,37 @@ +import 'package:plugin_platform_interface/plugin_platform_interface.dart'; + +import 'flutter_keyboard_visibility_aurora_method_channel.dart'; + +abstract class FlutterKeyboardVisibilityAuroraPlatform extends PlatformInterface { + /// Constructs a FlutterKeyboardVisibilityAuroraPlatform. + FlutterKeyboardVisibilityAuroraPlatform() : super(token: _token); + + static final Object _token = Object(); + + static FlutterKeyboardVisibilityAuroraPlatform _instance = MethodChannelFlutterKeyboardVisibilityAurora(); + + /// The default instance of [FlutterKeyboardVisibilityAuroraPlatform] to use. + /// + /// Defaults to [MethodChannelFlutterKeyboardVisibilityAurora]. + static FlutterKeyboardVisibilityAuroraPlatform get instance => _instance; + + /// Platform-specific implementations should set this with their own + /// platform-specific class that extends [FlutterKeyboardVisibilityAuroraPlatform] when + /// they register themselves. + static set instance(FlutterKeyboardVisibilityAuroraPlatform instance) { + PlatformInterface.verifyToken(instance, _token); + _instance = instance; + } + + Future getKeyboardHeight() { + throw UnimplementedError('getKeyboardHeight() has not been implemented.'); + } + + Stream onChangeVisibility() { + throw UnimplementedError('onChangeVisibility() has not been implemented.'); + } + + Stream onChangeHeight() { + throw UnimplementedError('onChangeHeight() has not been implemented.'); + } +} diff --git a/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/pubspec.yaml b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/pubspec.yaml new file mode 100644 index 0000000..c472a3c --- /dev/null +++ b/packages/flutter_keyboard_visibility/flutter_keyboard_visibility_aurora/pubspec.yaml @@ -0,0 +1,25 @@ +name: flutter_keyboard_visibility_aurora +description: A new Flutter plugin project. +version: 0.0.1 + +environment: + sdk: '>=2.18.6 <3.0.0' + flutter: ">=3.0.0" + +dependencies: + flutter: + sdk: flutter + plugin_platform_interface: ^2.0.2 + flutter_keyboard_visibility_platform_interface: ^2.0.0 + +dev_dependencies: + flutter_test: + sdk: flutter + flutter_lints: ^2.0.0 + +flutter: + plugin: + platforms: + aurora: + dartPluginClass: FlutterKeyboardVisibilityAurora + pluginClass: FlutterKeyboardVisibilityAuroraPlugin diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/data/preview.gif b/packages/flutter_local_notifications/flutter_local_notifications_aurora/data/preview.gif deleted file mode 100644 index f2975bf..0000000 Binary files a/packages/flutter_local_notifications/flutter_local_notifications_aurora/data/preview.gif and /dev/null differ diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/.gitignore b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/README.md b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/README.md deleted file mode 100644 index e1c48db..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# flutter_local_notifications_aurora_example - -Demonstrates how to use the flutter_local_notifications_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.gif) diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/analysis_options.yaml b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/.gitignore b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/CMakeLists.txt b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index 786144b..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.flutter_local_notifications_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/desktop/com.example.flutter_local_notifications_aurora_example.desktop b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/desktop/com.example.flutter_local_notifications_aurora_example.desktop deleted file mode 100644 index d2a6a7e..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/desktop/com.example.flutter_local_notifications_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Flutter Notification -Comment=Demonstrates how to use the flutter_local_notifications_aurora plugin. -Icon=com.example.flutter_local_notifications_aurora_example -Exec=/usr/bin/com.example.flutter_local_notifications_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=flutter_local_notifications_aurora_example diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/108x108.png b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/128x128.png b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/172x172.png b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/86x86.png b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/main.cpp b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/rpm/com.example.flutter_local_notifications_aurora_example.spec b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/rpm/com.example.flutter_local_notifications_aurora_example.spec deleted file mode 100644 index 640103e..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/aurora/rpm/com.example.flutter_local_notifications_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.flutter_local_notifications_aurora_example -Summary: Demonstrates how to use the flutter_local_notifications_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/lib/main.dart b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/lib/main.dart deleted file mode 100644 index c7f8d84..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/lib/main.dart +++ /dev/null @@ -1,94 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:flutter_local_notifications/flutter_local_notifications.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - final notificationID = 1; - final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = - FlutterLocalNotificationsPlugin(); - - @override - void initState() { - super.initState(); - } - - Future _showNotification() async { - await flutterLocalNotificationsPlugin.show( - notificationID, - "Title notification", - "My long body text notification", - null, - ); - } - - Future _cancelNotification() async { - await flutterLocalNotificationsPlugin.cancel(notificationID); - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const spaceMedium = SizedBox(height: 20); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example flutter_local_notifications'), - ), - body: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of flutter_local_notifications', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - ElevatedButton( - onPressed: _showNotification, - child: const Text('Show notification'), - ), - - spaceMedium, - - ElevatedButton( - onPressed: _cancelNotification, - child: const Text('Cancel notification'), - ) - ], - ), - ), - ), - ), - ), - ); - } -} diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/pubspec.lock b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/pubspec.lock deleted file mode 100644 index 55b2525..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/pubspec.lock +++ /dev/null @@ -1,329 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - dbus: - dependency: transitive - description: - name: dbus - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.8" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_local_notifications: - dependency: "direct main" - description: - name: flutter_local_notifications - url: "https://pub.dartlang.org" - source: hosted - version: "14.1.1" - flutter_local_notifications_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - flutter_local_notifications_linux: - dependency: transitive - description: - name: flutter_local_notifications_linux - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.0+1" - flutter_local_notifications_platform_interface: - dependency: transitive - description: - name: flutter_local_notifications_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "7.0.0+1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - http: - dependency: transitive - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - package_info_plus_aurora: - dependency: transitive - description: - path: "packages/package_info_plus/package_info_plus_aurora" - ref: dev - resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.0" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - timezone: - dependency: transitive - description: - name: timezone - url: "https://pub.dartlang.org" - source: hosted - version: "0.9.2" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.4" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/pubspec.yaml b/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/pubspec.yaml deleted file mode 100644 index 0dd0b40..0000000 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: flutter_local_notifications_aurora_example -description: Demonstrates how to use the flutter_local_notifications_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - flutter_local_notifications: ^14.0.0+2 - flutter_local_notifications_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/flutter_local_notifications/flutter_local_notifications_aurora/pubspec.yaml b/packages/flutter_local_notifications/flutter_local_notifications_aurora/pubspec.yaml index 3508107..318b97c 100644 --- a/packages/flutter_local_notifications/flutter_local_notifications_aurora/pubspec.yaml +++ b/packages/flutter_local_notifications/flutter_local_notifications_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: @@ -15,11 +15,13 @@ dependencies: dbus: ^0.7.8 plugin_platform_interface: ^2.0.2 flutter_local_notifications_platform_interface: ^7.0.0 - package_info_plus: ^4.0.0 + ## https://pub.dev/packages/package_info_plus + package_info_plus: 3.1.2 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/package_info_plus/package_info_plus_aurora package_info_plus_aurora: git: url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git - ref: dev + ref: flutter_example_packages path: packages/package_info_plus/package_info_plus_aurora dev_dependencies: diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/data/preview.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/data/preview.png deleted file mode 100644 index 5108a25..0000000 Binary files a/packages/flutter_secure_storage/flutter_secure_storage_aurora/data/preview.png and /dev/null differ diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md deleted file mode 100644 index 2e79332..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# flutter_secure_storage_aurora_example - -Demonstrates how to use the flutter_secure_storage_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index 44c0ad2..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.flutter_secure_storage_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop deleted file mode 100644 index 6441560..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/desktop/com.example.flutter_secure_storage_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=flutter_secure_storage_aurora_example -Comment=Demonstrates how to use the flutter_secure_storage_aurora plugin. -Icon=com.example.flutter_secure_storage_aurora_example -Exec=/usr/bin/com.example.flutter_secure_storage_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=flutter_secure_storage_aurora_example diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/108x108.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/128x128.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/172x172.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/86x86.png b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/main.cpp b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec deleted file mode 100644 index 278fb13..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/aurora/rpm/com.example.flutter_secure_storage_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.flutter_secure_storage_aurora_example -Summary: Demonstrates how to use the flutter_secure_storage_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart deleted file mode 100644 index fb7cf59..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/lib/main.dart +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:flutter_secure_storage/flutter_secure_storage.dart'; -import 'package:flutter_secure_storage_aurora/flutter_secure_storage_aurora.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - final _flutterSecureStorage = const FlutterSecureStorage(); - String? _error; - String? _data; - String? _all; - - @override - void initState() { - super.initState(); - initPlatformState(); - } - - Future initPlatformState() async { - try { - // https://pub.dev/packages/encrypt - // Encrypter(AES(key)) - // secure-random --length 16 --base 16 - // You can generate a secret key based on user data, as an example of a hash pincode - FlutterSecureStorageAurora.setSecret('5872747ed1ceda363808efb8b2b18b20'); - - const key = 'my_key'; - const data = 'Something secret'; - - // Write value - await _flutterSecureStorage.write(key: key, value: data); - - // Read value - String? value = await _flutterSecureStorage.read(key: key); - - // Read all values - Map allValues = await _flutterSecureStorage.readAll(); - - setState(() { - _data = value; - _all = allValues.toString(); - }); - } on Exception catch (e) { - setState(() { - _error = e.toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 20); - const spaceSmall = SizedBox(height: 10); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example flutter_secure_storage'), - ), - body: Stack( - children: [ - // Error message - Visibility( - visible: _error != null, - child: Center( - child: Padding( - padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.redAccent, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: Text( - _error ?? '', - style: textStyleWhite, - ), - ), - ), - ), - ), - // List directories path - Visibility( - visible: _error == null, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of flutter_secure_storage', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - const Text( - 'After write/read secret data', - style: textStyleTitle, - ), - spaceSmall, - Text( - _data.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'All data', - style: textStyleTitle, - ), - spaceSmall, - Text( - _all.toString(), - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock deleted file mode 100644 index dc902b2..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.lock +++ /dev/null @@ -1,380 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.1" - asn1lib: - dependency: transitive - description: - name: asn1lib - url: "https://pub.dartlang.org" - source: hosted - version: "1.4.0" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - convert: - dependency: transitive - description: - name: convert - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.1" - crypto: - dependency: transitive - description: - name: crypto - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.2" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - encrypt: - dependency: transitive - description: - name: encrypt - url: "https://pub.dartlang.org" - source: hosted - version: "5.0.1" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_secure_storage: - dependency: "direct main" - description: - name: flutter_secure_storage - url: "https://pub.dartlang.org" - source: hosted - version: "8.0.0" - flutter_secure_storage_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - flutter_secure_storage_linux: - dependency: transitive - description: - name: flutter_secure_storage_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.3" - flutter_secure_storage_macos: - dependency: transitive - description: - name: flutter_secure_storage_macos - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.0" - flutter_secure_storage_platform_interface: - dependency: transitive - description: - name: flutter_secure_storage_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" - flutter_secure_storage_web: - dependency: transitive - description: - name: flutter_secure_storage_web - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - flutter_secure_storage_windows: - dependency: transitive - description: - name: flutter_secure_storage_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.0" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - path_provider: - dependency: transitive - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.15" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.27" - path_provider_aurora: - dependency: transitive - description: - path: "packages/path_provider/path_provider_aurora" - ref: dev - resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.3" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.11" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.7" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - pointycastle: - dependency: transitive - description: - name: pointycastle - url: "https://pub.dartlang.org" - source: hosted - version: "3.7.3" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "2.6.1" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - xdga_directories: - dependency: transitive - description: - path: "packages/xdga_directories" - ref: dev - resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml deleted file mode 100644 index 50e5e47..0000000 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: flutter_secure_storage_aurora_example -description: Demonstrates how to use the flutter_secure_storage_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - flutter_secure_storage: ^8.0.0 - flutter_secure_storage_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart index e7e4f29..a56ce05 100644 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/lib/flutter_secure_storage_aurora.dart @@ -3,7 +3,6 @@ * License: Proprietary. */ import 'package:flutter_secure_storage_platform_interface/flutter_secure_storage_platform_interface.dart'; -import 'package:flutter/foundation.dart'; import 'package:path_provider_aurora/path_provider_aurora.dart'; import 'null_secret_exception.dart'; import 'flutter_secure_storage_aurora_api.dart'; @@ -23,11 +22,8 @@ class FlutterSecureStorageAurora extends FlutterSecureStoragePlatform { ); } - static void registerWith() async { - if (TargetPlatform.aurora == defaultTargetPlatform) { - PathProviderAurora.registerWith(); - FlutterSecureStoragePlatform.instance = FlutterSecureStorageAurora(); - } + static void registerWith() { + FlutterSecureStoragePlatform.instance = FlutterSecureStorageAurora(); } static FlutterSecureStorageAuroraApi _getAPI() { diff --git a/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml b/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml index a6bebce..7c8a38b 100644 --- a/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml +++ b/packages/flutter_secure_storage/flutter_secure_storage_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: @@ -16,11 +16,13 @@ dependencies: plugin_platform_interface: ^2.0.2 flutter_secure_storage_platform_interface: ^1.0.1 path: ^1.8.2 - path_provider: ^2.0.14 + ## https://pub.dev/packages/path_provider + path_provider: ^2.0.15 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/path_provider/path_provider_aurora path_provider_aurora: git: url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git - ref: dev + ref: flutter_example_packages path: packages/path_provider/path_provider_aurora dev_dependencies: diff --git a/packages/package_info_plus/package_info_plus_aurora/README.md b/packages/package_info_plus/package_info_plus_aurora/README.md index c4f2f56..6da57d6 100644 --- a/packages/package_info_plus/package_info_plus_aurora/README.md +++ b/packages/package_info_plus/package_info_plus_aurora/README.md @@ -11,7 +11,7 @@ Therefore, you have to include `package_info_plus_aurora` alongside `package_inf ```yaml dependencies: - package_info_plus: 4.0.0 + package_info_plus: 3.1.2 package_info_plus_aurora: path: # path to folder with plugin ``` diff --git a/packages/package_info_plus/package_info_plus_aurora/aurora/package_info_plus_aurora_plugin.cpp b/packages/package_info_plus/package_info_plus_aurora/aurora/package_info_plus_aurora_plugin.cpp index 4d8a580..1aba0d2 100644 --- a/packages/package_info_plus/package_info_plus_aurora/aurora/package_info_plus_aurora_plugin.cpp +++ b/packages/package_info_plus/package_info_plus_aurora/aurora/package_info_plus_aurora_plugin.cpp @@ -4,7 +4,7 @@ */ #include #include -#include +#include #include void PackageInfoPlusAuroraPlugin::RegisterWithRegistrar(PluginRegistrar ®istrar) @@ -33,12 +33,12 @@ void PackageInfoPlusAuroraPlugin::onMethodCall(const MethodCall &call) void PackageInfoPlusAuroraPlugin::onGetApplicationOrg(const MethodCall &call) { - call.SendSuccessResponse(Application::GetID().orgname); + call.SendSuccessResponse(PlatformMethods::GetOrgname()); } void PackageInfoPlusAuroraPlugin::onGetApplicationName(const MethodCall &call) { - call.SendSuccessResponse(Application::GetID().appname); + call.SendSuccessResponse(PlatformMethods::GetAppname()); } void PackageInfoPlusAuroraPlugin::unimplemented(const MethodCall &call) diff --git a/packages/package_info_plus/package_info_plus_aurora/data/preview.png b/packages/package_info_plus/package_info_plus_aurora/data/preview.png deleted file mode 100644 index e70f4b1..0000000 Binary files a/packages/package_info_plus/package_info_plus_aurora/data/preview.png and /dev/null differ diff --git a/packages/package_info_plus/package_info_plus_aurora/example/.gitignore b/packages/package_info_plus/package_info_plus_aurora/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/package_info_plus/package_info_plus_aurora/example/README.md b/packages/package_info_plus/package_info_plus_aurora/example/README.md deleted file mode 100644 index c7ef8e1..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# package_info_plus_aurora_example - -Demonstrates how to use the package_info_plus_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/package_info_plus/package_info_plus_aurora/example/analysis_options.yaml b/packages/package_info_plus/package_info_plus_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/.gitignore b/packages/package_info_plus/package_info_plus_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/CMakeLists.txt b/packages/package_info_plus/package_info_plus_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index c75fffe..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.package_info_plus_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/desktop/com.example.package_info_plus_aurora_example.desktop b/packages/package_info_plus/package_info_plus_aurora/example/aurora/desktop/com.example.package_info_plus_aurora_example.desktop deleted file mode 100644 index 1e01856..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/aurora/desktop/com.example.package_info_plus_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=Example Info Plus -Comment=Demonstrates how to use the package_info_plus_aurora plugin. -Icon=com.example.package_info_plus_aurora_example -Exec=/usr/bin/com.example.package_info_plus_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=package_info_plus_aurora_example diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/108x108.png b/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/128x128.png b/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/172x172.png b/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/86x86.png b/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/package_info_plus/package_info_plus_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/main.cpp b/packages/package_info_plus/package_info_plus_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/package_info_plus/package_info_plus_aurora/example/aurora/rpm/com.example.package_info_plus_aurora_example.spec b/packages/package_info_plus/package_info_plus_aurora/example/aurora/rpm/com.example.package_info_plus_aurora_example.spec deleted file mode 100644 index 6a0c214..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/aurora/rpm/com.example.package_info_plus_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.package_info_plus_aurora_example -Summary: Demonstrates how to use the package_info_plus_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/package_info_plus/package_info_plus_aurora/example/lib/main.dart b/packages/package_info_plus/package_info_plus_aurora/example/lib/main.dart deleted file mode 100644 index 230fa54..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/lib/main.dart +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:package_info_plus/package_info_plus.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - String? _error; - String? _appName; - String? _packageName; - - @override - void initState() { - super.initState(); - initPlatformState(); - } - - Future initPlatformState() async { - try { - PackageInfo packageInfo = await PackageInfo.fromPlatform(); - - String appName = packageInfo.appName; - String packageName = packageInfo.packageName; - - // Update state variable - setState(() { - _appName = appName; - _packageName = packageName; - }); - } on Exception catch (e) { - setState(() { - _error = e.toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 20); - const spaceSmall = SizedBox(height: 10); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example package_info_plus'), - ), - body: Stack( - children: [ - // Error message - Visibility( - visible: _error != null, - child: Center( - child: Padding( - padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.redAccent, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: Text( - _error ?? '', - style: textStyleWhite, - ), - ), - ), - ), - ), - // List directories path - Visibility( - visible: _error == null, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: - BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of package_info_plus', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - const Text( - 'Application Name', - style: textStyleTitle, - ), - spaceSmall, - Text( - _appName ?? 'Not found.', - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Package Name', - style: textStyleTitle, - ), - spaceSmall, - Text( - _packageName ?? 'Not found.', - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/packages/package_info_plus/package_info_plus_aurora/example/pubspec.lock b/packages/package_info_plus/package_info_plus_aurora/example/pubspec.lock deleted file mode 100644 index 910942c..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/pubspec.lock +++ /dev/null @@ -1,236 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - http: - dependency: transitive - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - package_info_plus: - dependency: "direct main" - description: - name: package_info_plus - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - package_info_plus_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.4" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/package_info_plus/package_info_plus_aurora/example/pubspec.yaml b/packages/package_info_plus/package_info_plus_aurora/example/pubspec.yaml deleted file mode 100644 index 5b48f42..0000000 --- a/packages/package_info_plus/package_info_plus_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: package_info_plus_aurora_example -description: Demonstrates how to use the package_info_plus_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - package_info_plus: ^4.0.0 - package_info_plus_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/package_info_plus/package_info_plus_aurora/pubspec.yaml b/packages/package_info_plus/package_info_plus_aurora/pubspec.yaml index ede11bc..bb59832 100644 --- a/packages/package_info_plus/package_info_plus_aurora/pubspec.yaml +++ b/packages/package_info_plus/package_info_plus_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: diff --git a/packages/path_provider/path_provider_aurora/README.md b/packages/path_provider/path_provider_aurora/README.md index f72c75b..79b6773 100644 --- a/packages/path_provider/path_provider_aurora/README.md +++ b/packages/path_provider/path_provider_aurora/README.md @@ -31,11 +31,11 @@ final Directory? downloadsDir = await getDownloadsDirectory(); ## Supported APIs -- [x] `getTemporaryDirectory` - Returns a directory location where user-specific non-essential (cached) data should be written -- [ ] `getApplicationSupportDirectory` +- [x] `getTemporaryDirectory` - Directory location where user-specific non-essential (cached) data should be written +- [x] `getApplicationSupportDirectory` - Directory where the application may place application support files. - [ ] `getLibraryDirectory` -- [x] `getApplicationDocumentsDirectory` - Returns the directory containing user document files. +- [x] `getApplicationDocumentsDirectory` - Directory containing user document files. - [ ] `getExternalStorageDirectory` - [ ] `getExternalCacheDirectories` - [x] `getExternalStorageDirectories` - There is no concept of External in Aurora OS, but this interface allows you to get the pictures/music/movies directory -- [x] `getDownloadsDirectory`- Returns a directory for user's downloaded files. +- [x] `getDownloadsDirectory`- Directory for user's downloaded files. diff --git a/packages/path_provider/path_provider_aurora/data/preview.png b/packages/path_provider/path_provider_aurora/data/preview.png deleted file mode 100644 index 311649c..0000000 Binary files a/packages/path_provider/path_provider_aurora/data/preview.png and /dev/null differ diff --git a/packages/path_provider/path_provider_aurora/example/.gitignore b/packages/path_provider/path_provider_aurora/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/path_provider/path_provider_aurora/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/path_provider/path_provider_aurora/example/README.md b/packages/path_provider/path_provider_aurora/example/README.md deleted file mode 100644 index 54caa24..0000000 --- a/packages/path_provider/path_provider_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# path_provider_aurora_example - -Demonstrates how to use the path_provider_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/path_provider/path_provider_aurora/example/analysis_options.yaml b/packages/path_provider/path_provider_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/path_provider/path_provider_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/path_provider/path_provider_aurora/example/aurora/.gitignore b/packages/path_provider/path_provider_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/path_provider/path_provider_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/path_provider/path_provider_aurora/example/aurora/CMakeLists.txt b/packages/path_provider/path_provider_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index 90a772f..0000000 --- a/packages/path_provider/path_provider_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.path_provider_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/path_provider/path_provider_aurora/example/aurora/desktop/com.example.path_provider_aurora_example.desktop b/packages/path_provider/path_provider_aurora/example/aurora/desktop/com.example.path_provider_aurora_example.desktop deleted file mode 100644 index 69eeffc..0000000 --- a/packages/path_provider/path_provider_aurora/example/aurora/desktop/com.example.path_provider_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=path_provider_aurora_example -Comment=Demonstrates how to use the path_provider_aurora plugin. -Icon=com.example.path_provider_aurora_example -Exec=/usr/bin/com.example.path_provider_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions=UserDirs -OrganizationName=com.example -ApplicationName=path_provider_aurora_example diff --git a/packages/path_provider/path_provider_aurora/example/aurora/icons/108x108.png b/packages/path_provider/path_provider_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/path_provider/path_provider_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/path_provider/path_provider_aurora/example/aurora/icons/128x128.png b/packages/path_provider/path_provider_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/path_provider/path_provider_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/path_provider/path_provider_aurora/example/aurora/icons/172x172.png b/packages/path_provider/path_provider_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/path_provider/path_provider_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/path_provider/path_provider_aurora/example/aurora/icons/86x86.png b/packages/path_provider/path_provider_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/path_provider/path_provider_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/path_provider/path_provider_aurora/example/aurora/main.cpp b/packages/path_provider/path_provider_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/path_provider/path_provider_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/path_provider/path_provider_aurora/example/aurora/rpm/com.example.path_provider_aurora_example.spec b/packages/path_provider/path_provider_aurora/example/aurora/rpm/com.example.path_provider_aurora_example.spec deleted file mode 100644 index fb1eaa6..0000000 --- a/packages/path_provider/path_provider_aurora/example/aurora/rpm/com.example.path_provider_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.path_provider_aurora_example -Summary: Demonstrates how to use the path_provider_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/path_provider/path_provider_aurora/example/lib/main.dart b/packages/path_provider/path_provider_aurora/example/lib/main.dart deleted file mode 100644 index 014c460..0000000 --- a/packages/path_provider/path_provider_aurora/example/lib/main.dart +++ /dev/null @@ -1,226 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'dart:io'; - -import 'package:flutter/material.dart'; -import 'package:path_provider/path_provider.dart'; -import 'package:path_provider_aurora/path_provider_aurora.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - String? _error; - String? _pathApplicationSupportDirectory; - String? _pathTempDirectory; - String? _pathApplicationDocumentsPath; - String? _pathDownloadsPath; - String? _pathPictures; - String? _pathMusic; - String? _pathMovies; - - @override - void initState() { - super.initState(); - loadPathDirectory(); - } - - /// Asynchronous function receiving directory paths - Future loadPathDirectory() async { - try { - // Get directories - Directory? applicationSupportDirectory = - await getApplicationSupportDirectory(); - Directory? tempDirectory = await getTemporaryDirectory(); - Directory? pathApplicationDocumentsPath = - await getApplicationDocumentsDirectory(); - Directory? pathDownloadsPath = await getDownloadsDirectory(); - List? pathPictures = - await getExternalStorageDirectories(type: StorageDirectory.pictures); - List? pathMusic = - await getExternalStorageDirectories(type: StorageDirectory.music); - List? pathMovies = - await getExternalStorageDirectories(type: StorageDirectory.movies); - - // Update state variable - setState(() { - _pathApplicationSupportDirectory = applicationSupportDirectory.path; - _pathTempDirectory = tempDirectory.path; - _pathApplicationDocumentsPath = pathApplicationDocumentsPath.path; - _pathDownloadsPath = pathDownloadsPath?.path; - _pathPictures = pathPictures?.first.path; - _pathMusic = pathMusic?.first.path; - _pathMovies = pathMovies?.first.path; - }); - } on Exception catch (e) { - setState(() { - _error = e.toString(); - }); - } - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 20); - const spaceSmall = SizedBox(height: 10); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example path_provider'), - ), - body: Stack( - children: [ - // Error message - Visibility( - visible: _error != null, - child: Center( - child: Padding( - padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.redAccent, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: Text( - _error ?? '', - style: textStyleWhite, - ), - ), - ), - ), - ), - // List directories path - Visibility( - visible: _error == null, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: - BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of path_provider', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - // TempDirectory - const Text( - 'ApplicationSupportDirectory', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathApplicationSupportDirectory ?? 'Not found.', - style: textStylePath, - ), - - spaceMedium, - // TempDirectory - const Text( - 'TempDirectory', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathTempDirectory ?? 'Not found.', - style: textStylePath, - ), - spaceMedium, - - // ApplicationDocumentsPath - const Text( - 'ApplicationDocumentsPath', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathApplicationDocumentsPath ?? 'Not found.', - style: textStylePath, - ), - spaceMedium, - - // DownloadsPath - const Text( - 'DownloadsPath', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathDownloadsPath ?? 'Not found.', - style: textStylePath, - ), - spaceMedium, - - // Pictures - const Text( - 'Pictures', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathPictures ?? 'Not found.', - style: textStylePath, - ), - spaceMedium, - - // Music - const Text( - 'Music', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathMusic ?? 'Not found.', - style: textStylePath, - ), - spaceMedium, - - // Movies - const Text( - 'Movies', - style: textStyleTitle, - ), - spaceSmall, - Text( - _pathMovies ?? 'Not found.', - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/packages/path_provider/path_provider_aurora/example/pubspec.lock b/packages/path_provider/path_provider_aurora/example/pubspec.lock deleted file mode 100644 index 3d425d7..0000000 --- a/packages/path_provider/path_provider_aurora/example/pubspec.lock +++ /dev/null @@ -1,324 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - http: - dependency: transitive - description: - name: http - url: "https://pub.dartlang.org" - source: hosted - version: "0.13.5" - http_parser: - dependency: transitive - description: - name: http_parser - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.2" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - package_info_plus: - dependency: transitive - description: - name: package_info_plus - url: "https://pub.dartlang.org" - source: hosted - version: "4.0.0" - package_info_plus_aurora: - dependency: transitive - description: - path: "packages/package_info_plus/package_info_plus_aurora" - ref: dev - resolved-ref: "47dd76ca473269566811d8c48fbfd22f1d8120f9" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" - package_info_plus_platform_interface: - dependency: transitive - description: - name: package_info_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - path_provider: - dependency: "direct main" - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.15" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.27" - path_provider_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.3" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.11" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.7" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - typed_data: - dependency: transitive - description: - name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.2" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "4.1.4" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - xdga_directories: - dependency: transitive - description: - path: "packages/xdga_directories" - ref: dev - resolved-ref: "47dd76ca473269566811d8c48fbfd22f1d8120f9" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/path_provider/path_provider_aurora/example/pubspec.yaml b/packages/path_provider/path_provider_aurora/example/pubspec.yaml deleted file mode 100644 index 648f1ef..0000000 --- a/packages/path_provider/path_provider_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: path_provider_aurora_example -description: Demonstrates how to use the path_provider_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - path_provider: ^2.0.7 - path_provider_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/path_provider/path_provider_aurora/lib/path_provider_aurora.dart b/packages/path_provider/path_provider_aurora/lib/path_provider_aurora.dart index 59b9140..687439d 100644 --- a/packages/path_provider/path_provider_aurora/lib/path_provider_aurora.dart +++ b/packages/path_provider/path_provider_aurora/lib/path_provider_aurora.dart @@ -6,7 +6,6 @@ import 'package:package_info_plus_aurora/package_info_plus_aurora.dart'; import 'package:path_provider_platform_interface/path_provider_platform_interface.dart'; import 'package:xdga_directories/xdga_directories.dart' as xdga_directories; import 'package:package_info_plus/package_info_plus.dart'; -import 'package:flutter/foundation.dart'; import 'package:path/path.dart' as p; /// The aurora implementation of [PathProviderPlatform] @@ -15,21 +14,22 @@ import 'package:path/path.dart' as p; class PathProviderAurora extends PathProviderPlatform { /// Registers this class as the default instance of [PathProviderPlatform] static void registerWith() { - if (TargetPlatform.aurora == defaultTargetPlatform) { - PackageInfoPlusAurora.registerWith(); - PathProviderPlatform.instance = PathProviderAurora(); - } + PathProviderPlatform.instance = PathProviderAurora(); } /// Path to a directory where the application may place application support files. @override Future getApplicationSupportPath() async { PackageInfo info = await PackageInfo.fromPlatform(); + + final appName = info.packageName.split('.').last; + final orgName = info.packageName.replaceAll('.$appName', ''); + // QStandardPaths::AppDataLocation return p.join( xdga_directories.getAppDataLocation(), - info.packageName, - info.appName, + orgName, + appName, ); } @@ -38,11 +38,15 @@ class PathProviderAurora extends PathProviderPlatform { @override Future getTemporaryPath() async { PackageInfo info = await PackageInfo.fromPlatform(); + + final appName = info.packageName.split('.').last; + final orgName = info.packageName.replaceAll('.$appName', ''); + // QStandardPaths::CacheLocation return p.join( xdga_directories.getCacheLocation(), - info.packageName, - info.appName, + orgName, + appName, ); } diff --git a/packages/path_provider/path_provider_aurora/pubspec.yaml b/packages/path_provider/path_provider_aurora/pubspec.yaml index 7af36fa..786ec6f 100644 --- a/packages/path_provider/path_provider_aurora/pubspec.yaml +++ b/packages/path_provider/path_provider_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: @@ -15,16 +15,21 @@ dependencies: path: ^1.8.2 plugin_platform_interface: ^2.0.2 path_provider_platform_interface: ^2.0.6 + + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/xdga_directories xdga_directories: git: url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git - ref: dev + ref: flutter_example_packages path: packages/xdga_directories - package_info_plus: 4.0.0 + + ## https://pub.dev/packages/package_info_plus + package_info_plus: 3.1.2 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/package_info_plus/package_info_plus_aurora package_info_plus_aurora: git: url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git - ref: dev + ref: flutter_example_packages path: packages/package_info_plus/package_info_plus_aurora dev_dependencies: diff --git a/packages/shared_preferences/shared_preferences_aurora/data/preview.png b/packages/shared_preferences/shared_preferences_aurora/data/preview.png deleted file mode 100644 index c6f0708..0000000 Binary files a/packages/shared_preferences/shared_preferences_aurora/data/preview.png and /dev/null differ diff --git a/packages/shared_preferences/shared_preferences_aurora/example/.gitignore b/packages/shared_preferences/shared_preferences_aurora/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/shared_preferences/shared_preferences_aurora/example/README.md b/packages/shared_preferences/shared_preferences_aurora/example/README.md deleted file mode 100644 index 7633274..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/README.md +++ /dev/null @@ -1,22 +0,0 @@ -# shared_preferences_aurora_example - -Demonstrates how to use the shared_preferences_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) - diff --git a/packages/shared_preferences/shared_preferences_aurora/example/analysis_options.yaml b/packages/shared_preferences/shared_preferences_aurora/example/analysis_options.yaml deleted file mode 100644 index 1c55a5e..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml \ No newline at end of file diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/.gitignore b/packages/shared_preferences/shared_preferences_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/CMakeLists.txt b/packages/shared_preferences/shared_preferences_aurora/example/aurora/CMakeLists.txt deleted file mode 100644 index 781f9e8..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,50 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.shared_preferences_aurora_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/desktop/com.example.shared_preferences_aurora_example.desktop b/packages/shared_preferences/shared_preferences_aurora/example/aurora/desktop/com.example.shared_preferences_aurora_example.desktop deleted file mode 100644 index ebb83d1..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/aurora/desktop/com.example.shared_preferences_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=shared_preferences_aurora_example -Comment=Demonstrates how to use the shared_preferences_aurora plugin. -Icon=com.example.shared_preferences_aurora_example -Exec=/usr/bin/com.example.shared_preferences_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=shared_preferences_aurora_example diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/108x108.png b/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/128x128.png b/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/172x172.png b/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/86x86.png b/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/shared_preferences/shared_preferences_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/main.cpp b/packages/shared_preferences/shared_preferences_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/shared_preferences/shared_preferences_aurora/example/aurora/rpm/com.example.shared_preferences_aurora_example.spec b/packages/shared_preferences/shared_preferences_aurora/example/aurora/rpm/com.example.shared_preferences_aurora_example.spec deleted file mode 100644 index a05f586..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/aurora/rpm/com.example.shared_preferences_aurora_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.shared_preferences_aurora_example -Summary: Demonstrates how to use the shared_preferences_aurora plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/shared_preferences/shared_preferences_aurora/example/lib/main.dart b/packages/shared_preferences/shared_preferences_aurora/example/lib/main.dart deleted file mode 100644 index 2e79433..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/lib/main.dart +++ /dev/null @@ -1,203 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:flutter/material.dart'; -import 'dart:async'; - -import 'package:flutter/services.dart'; -import 'package:shared_preferences/shared_preferences.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - int? _counter; - bool? _repeat; - double? _decimal; - String? _action; - List? _items; - String? _error; - - @override - void initState() { - super.initState(); - initPlatformState(); - } - - Future initPlatformState() async { - try { - SharedPreferences.setPrefix("my_prefix."); - - final SharedPreferences prefs = await SharedPreferences.getInstance(); - - // Save an integer value to 'counter' key. - await prefs.setInt('counter', 10); - // Save an boolean value to 'repeat' key. - await prefs.setBool('repeat', true); - // Save an double value to 'decimal' key. - await prefs.setDouble('decimal', 1.5); - // Save an String value to 'action' key. - await prefs.setString('action', 'Start'); - // Save an list of strings to 'items' key. - await prefs.setStringList('items', ['Earth', 'Moon', 'Sun']); - - // Try reading data from the 'counter' key. If it doesn't exist, returns null. - final int? counter = prefs.getInt('counter'); - // Try reading data from the 'repeat' key. If it doesn't exist, returns null. - final bool? repeat = prefs.getBool('repeat'); - // Try reading data from the 'decimal' key. If it doesn't exist, returns null. - final double? decimal = prefs.getDouble('decimal'); - // Try reading data from the 'action' key. If it doesn't exist, returns null. - final String? action = prefs.getString('action'); - // Try reading data from the 'items' key. If it doesn't exist, returns null. - final List? items = prefs.getStringList('items'); - - setState(() { - _counter = counter; - _repeat = repeat; - _decimal = decimal; - _action = action; - _items = items; - }); - } on PlatformException { - setState(() { - _error = 'Platform exception'; - }); - } - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 20); - const spaceSmall = SizedBox(height: 10); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example shared_preferences'), - ), - body: Stack( - children: [ - // Error message - Visibility( - visible: _error != null, - child: Center( - child: Padding( - padding: const EdgeInsets.all(16), - child: Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.redAccent, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: Text( - _error ?? '', - style: textStyleWhite, - ), - ), - ), - ), - ), - // List directories path - Visibility( - visible: _error == null, - child: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: - BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of shared_preferences', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - const Text( - 'Counter / int', - style: textStyleTitle, - ), - spaceSmall, - Text( - _counter.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Repeat / bool', - style: textStyleTitle, - ), - spaceSmall, - Text( - _repeat.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Decimal / double', - style: textStyleTitle, - ), - spaceSmall, - Text( - _decimal.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Action / String', - style: textStyleTitle, - ), - spaceSmall, - Text( - _action.toString(), - style: textStylePath, - ), - - spaceMedium, - const Text( - 'Items / String List', - style: textStyleTitle, - ), - spaceSmall, - Text( - _items.toString(), - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/packages/shared_preferences/shared_preferences_aurora/example/pubspec.lock b/packages/shared_preferences/shared_preferences_aurora/example/pubspec.lock deleted file mode 100644 index 9e61cb7..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/pubspec.lock +++ /dev/null @@ -1,338 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - file: - dependency: transitive - description: - name: file - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.4" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - path_provider: - dependency: transitive - description: - name: path_provider - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.15" - path_provider_android: - dependency: transitive - description: - name: path_provider_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.27" - path_provider_aurora: - dependency: transitive - description: - path: "packages/path_provider/path_provider_aurora" - ref: dev - resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" - path_provider_foundation: - dependency: transitive - description: - name: path_provider_foundation - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.3" - path_provider_linux: - dependency: transitive - description: - name: path_provider_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.11" - path_provider_platform_interface: - dependency: transitive - description: - name: path_provider_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" - path_provider_windows: - dependency: transitive - description: - name: path_provider_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.7" - platform: - dependency: transitive - description: - name: platform - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" - shared_preferences: - dependency: "direct main" - description: - name: shared_preferences - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - shared_preferences_android: - dependency: transitive - description: - name: shared_preferences_android - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - shared_preferences_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - shared_preferences_foundation: - dependency: transitive - description: - name: shared_preferences_foundation - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.2" - shared_preferences_linux: - dependency: transitive - description: - name: shared_preferences_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.0" - shared_preferences_platform_interface: - dependency: transitive - description: - name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.0" - shared_preferences_web: - dependency: transitive - description: - name: shared_preferences_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - shared_preferences_windows: - dependency: transitive - description: - name: shared_preferences_windows - url: "https://pub.dartlang.org" - source: hosted - version: "2.2.0" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "2.6.1" - xdg_directories: - dependency: transitive - description: - name: xdg_directories - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.0" - xdga_directories: - dependency: transitive - description: - path: "packages/xdga_directories" - ref: dev - resolved-ref: "7120c2554963ce9e7600730b2657b387d3a86d9c" - url: "git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git" - source: git - version: "0.0.1" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.0" diff --git a/packages/shared_preferences/shared_preferences_aurora/example/pubspec.yaml b/packages/shared_preferences/shared_preferences_aurora/example/pubspec.yaml deleted file mode 100644 index 17dde92..0000000 --- a/packages/shared_preferences/shared_preferences_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: shared_preferences_aurora_example -description: Demonstrates how to use the shared_preferences_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - shared_preferences: ^2.1.1 - shared_preferences_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/shared_preferences/shared_preferences_aurora/lib/shared_preferences_aurora.dart b/packages/shared_preferences/shared_preferences_aurora/lib/shared_preferences_aurora.dart index e8c606d..2605b8f 100644 --- a/packages/shared_preferences/shared_preferences_aurora/lib/shared_preferences_aurora.dart +++ b/packages/shared_preferences/shared_preferences_aurora/lib/shared_preferences_aurora.dart @@ -3,18 +3,13 @@ * License: Proprietary. */ import 'package:flutter/services.dart'; -import 'package:path_provider_aurora/path_provider_aurora.dart'; import 'package:shared_preferences_aurora/shared_preferences_aurora_api.dart'; import 'package:shared_preferences_platform_interface/shared_preferences_platform_interface.dart'; -import 'package:flutter/foundation.dart'; class SharedPreferencesAurora extends SharedPreferencesStorePlatform { /// Registers this class as the default instance of [SharedPreferencesStorePlatform]. static void registerWith() { - if (TargetPlatform.aurora == defaultTargetPlatform) { - PathProviderAurora.registerWith(); - SharedPreferencesStorePlatform.instance = SharedPreferencesAurora(); - } + SharedPreferencesStorePlatform.instance = SharedPreferencesAurora(); } static const String _defaultPrefix = 'flutter.'; diff --git a/packages/shared_preferences/shared_preferences_aurora/pubspec.yaml b/packages/shared_preferences/shared_preferences_aurora/pubspec.yaml index a2d9531..7e88b5c 100644 --- a/packages/shared_preferences/shared_preferences_aurora/pubspec.yaml +++ b/packages/shared_preferences/shared_preferences_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: @@ -16,11 +16,14 @@ dependencies: shared_preferences: ^2.1.1 shared_preferences_platform_interface: ^2.2.0 path: ^1.8.2 - path_provider: ^2.0.14 + + ## https://pub.dev/packages/path_provider + path_provider: ^2.0.15 + ## https://os-git.omprussia.ru/non-oss/flutter/flutter-plugins/-/tree/master/packages/path_provider/path_provider_aurora path_provider_aurora: git: url: git@os-git.omprussia.ru:non-oss/flutter/flutter-plugins.git - ref: dev + ref: flutter_example_packages path: packages/path_provider/path_provider_aurora dev_dependencies: diff --git a/packages/sqflite/sqflite_aurora/aurora/lib/sqflite_aurora_plugin.cpp b/packages/sqflite/sqflite_aurora/aurora/lib/sqflite_aurora_plugin.cpp index c60d17c..056d977 100644 --- a/packages/sqflite/sqflite_aurora/aurora/lib/sqflite_aurora_plugin.cpp +++ b/packages/sqflite/sqflite_aurora/aurora/lib/sqflite_aurora_plugin.cpp @@ -2,7 +2,7 @@ * Copyright (c) 2023. Open Mobile Platform LLC. * License: Proprietary. */ -#include +#include #include #include @@ -260,7 +260,8 @@ void SqfliteAuroraPlugin::onGetDatabasesPathCall(const MethodCall &call) return; } - const auto [orgname, appname] = Application::GetID(); + const auto orgname = PlatformMethods::GetOrgname(); + const auto appname = PlatformMethods::GetAppname(); const auto directory = std::filesystem::path(home) / ".local/share" / orgname / appname; sendSuccess(call, directory.generic_string()); diff --git a/packages/sqflite/sqflite_aurora/pubspec.yaml b/packages/sqflite/sqflite_aurora/pubspec.yaml index f072d72..586b70d 100644 --- a/packages/sqflite/sqflite_aurora/pubspec.yaml +++ b/packages/sqflite/sqflite_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 2.2.6+aurora1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: diff --git a/packages/wakelock/wakelock_aurora/data/preview.png b/packages/wakelock/wakelock_aurora/data/preview.png deleted file mode 100644 index 9f6ec78..0000000 Binary files a/packages/wakelock/wakelock_aurora/data/preview.png and /dev/null differ diff --git a/packages/wakelock/wakelock_aurora/example/.gitignore b/packages/wakelock/wakelock_aurora/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/wakelock/wakelock_aurora/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/wakelock/wakelock_aurora/example/README.md b/packages/wakelock/wakelock_aurora/example/README.md deleted file mode 100644 index 386ac6c..0000000 --- a/packages/wakelock/wakelock_aurora/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# wakelock_aurora_example - -Demonstrates how to use the wakelock_aurora plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/wakelock/wakelock_aurora/example/analysis_options.yaml b/packages/wakelock/wakelock_aurora/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/wakelock/wakelock_aurora/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/wakelock/wakelock_aurora/example/aurora/.gitignore b/packages/wakelock/wakelock_aurora/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/wakelock/wakelock_aurora/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/wakelock/wakelock_aurora/example/aurora/desktop/com.example.wakelock_aurora_example.desktop b/packages/wakelock/wakelock_aurora/example/aurora/desktop/com.example.wakelock_aurora_example.desktop deleted file mode 100644 index a2f7f06..0000000 --- a/packages/wakelock/wakelock_aurora/example/aurora/desktop/com.example.wakelock_aurora_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=wakelock_aurora_example -Comment=Demonstrates how to use the wakelock_aurora plugin. -Icon=com.example.wakelock_aurora_example -Exec=/usr/bin/com.example.wakelock_aurora_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=wakelock_aurora_example diff --git a/packages/wakelock/wakelock_aurora/example/aurora/icons/108x108.png b/packages/wakelock/wakelock_aurora/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/wakelock/wakelock_aurora/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/wakelock/wakelock_aurora/example/aurora/icons/128x128.png b/packages/wakelock/wakelock_aurora/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/wakelock/wakelock_aurora/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/wakelock/wakelock_aurora/example/aurora/icons/172x172.png b/packages/wakelock/wakelock_aurora/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/wakelock/wakelock_aurora/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/wakelock/wakelock_aurora/example/aurora/icons/86x86.png b/packages/wakelock/wakelock_aurora/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/wakelock/wakelock_aurora/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/wakelock/wakelock_aurora/example/aurora/main.cpp b/packages/wakelock/wakelock_aurora/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/wakelock/wakelock_aurora/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/wakelock/wakelock_aurora/example/lib/main.dart b/packages/wakelock/wakelock_aurora/example/lib/main.dart deleted file mode 100644 index 182567e..0000000 --- a/packages/wakelock/wakelock_aurora/example/lib/main.dart +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'dart:async'; -import 'package:flutter/material.dart'; -import 'package:wakelock/wakelock.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - bool _enableWakelock = false; - - @override - void initState() { - super.initState(); - } - - Future _toggleWakelock() async { - final enableWakelock = !(await Wakelock.enabled); - await Wakelock.toggle(enable: enableWakelock); - setState(() { - _enableWakelock = enableWakelock; - }); - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example wakelock'), - ), - body: SingleChildScrollView( - child: Padding( - padding: const EdgeInsets.all(16), - child: Center( - child: Column( - children: [ - // Info - Container( - padding: const EdgeInsets.all(20), - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: const Text( - 'Demo application demonstration implementation of wakelock', - style: textStyleWhite, - textAlign: TextAlign.center, - ), - ), - const SizedBox(height: 30), - - ElevatedButton( - onPressed: _toggleWakelock, - child: Text('Toggle wakelock: $_enableWakelock'), - ), - ], - ), - ), - ), - ), - ), - ); - } -} diff --git a/packages/wakelock/wakelock_aurora/example/pubspec.lock b/packages/wakelock/wakelock_aurora/example/pubspec.lock deleted file mode 100644 index b5355f0..0000000 --- a/packages/wakelock/wakelock_aurora/example/pubspec.lock +++ /dev/null @@ -1,264 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - args: - dependency: transitive - description: - name: args - url: "https://pub.dartlang.org" - source: hosted - version: "2.4.1" - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - dbus: - dependency: transitive - description: - name: dbus - url: "https://pub.dartlang.org" - source: hosted - version: "0.7.8" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.2" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - flutter_web_plugins: - dependency: transitive - description: flutter - source: sdk - version: "0.0.0" - js: - dependency: transitive - description: - name: js - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.4" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - petitparser: - dependency: transitive - description: - name: petitparser - url: "https://pub.dartlang.org" - source: hosted - version: "5.1.0" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - wakelock: - dependency: "direct main" - description: - name: wakelock - url: "https://pub.dartlang.org" - source: hosted - version: "0.6.2" - wakelock_aurora: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" - wakelock_macos: - dependency: transitive - description: - name: wakelock_macos - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.0" - wakelock_platform_interface: - dependency: transitive - description: - name: wakelock_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "0.3.0" - wakelock_web: - dependency: transitive - description: - name: wakelock_web - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.0" - wakelock_windows: - dependency: transitive - description: - name: wakelock_windows - url: "https://pub.dartlang.org" - source: hosted - version: "0.2.1" - win32: - dependency: transitive - description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.4" - xml: - dependency: transitive - description: - name: xml - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.0" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=2.5.0" diff --git a/packages/wakelock/wakelock_aurora/example/pubspec.yaml b/packages/wakelock/wakelock_aurora/example/pubspec.yaml deleted file mode 100644 index b4f684b..0000000 --- a/packages/wakelock/wakelock_aurora/example/pubspec.yaml +++ /dev/null @@ -1,26 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: wakelock_aurora_example -description: Demonstrates how to use the wakelock_aurora plugin. - -publish_to: 'none' - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - wakelock: ^0.6.2 - wakelock_aurora: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/wakelock/wakelock_aurora/lib/wakelock_aurora.dart b/packages/wakelock/wakelock_aurora/lib/wakelock_aurora.dart index a3eac33..90851a0 100644 --- a/packages/wakelock/wakelock_aurora/lib/wakelock_aurora.dart +++ b/packages/wakelock/wakelock_aurora/lib/wakelock_aurora.dart @@ -5,7 +5,6 @@ import 'dart:async'; import 'package:dbus/dbus.dart'; -import 'package:flutter/foundation.dart'; import 'package:wakelock_platform_interface/wakelock_platform_interface.dart'; import 'com_nokia_mce_request.dart'; @@ -14,9 +13,7 @@ class WakelockAurora extends WakelockPlatformInterface { Timer? _timer; static void registerWith() { - if (TargetPlatform.aurora == defaultTargetPlatform) { - WakelockPlatformInterface.instance = WakelockAurora(); - } + WakelockPlatformInterface.instance = WakelockAurora(); } @override diff --git a/packages/wakelock/wakelock_aurora/pubspec.yaml b/packages/wakelock/wakelock_aurora/pubspec.yaml index bfa506a..47dfab0 100644 --- a/packages/wakelock/wakelock_aurora/pubspec.yaml +++ b/packages/wakelock/wakelock_aurora/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.5.0" + flutter: ">=3.0.0" dependencies: flutter: diff --git a/packages/xdga_directories/data/preview.png b/packages/xdga_directories/data/preview.png deleted file mode 100644 index 1fc2f51..0000000 Binary files a/packages/xdga_directories/data/preview.png and /dev/null differ diff --git a/packages/xdga_directories/example/.gitignore b/packages/xdga_directories/example/.gitignore deleted file mode 100644 index 3db3823..0000000 --- a/packages/xdga_directories/example/.gitignore +++ /dev/null @@ -1,47 +0,0 @@ -# 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 -**/doc/api/ -**/ios/Flutter/.last_build_id -.dart_tool/ -.flutter-plugins -.flutter-plugins-dependencies -.packages -.pub-cache/ -.pub/ -/build/ - -# Symbolication related -app.*.symbols - -# Obfuscation related -app.*.map.json - -# Android Studio will place build artifacts here -/android/app/debug -/android/app/profile -/android/app/release - -# Aurora generated -/aurora/flutter diff --git a/packages/xdga_directories/example/README.md b/packages/xdga_directories/example/README.md deleted file mode 100644 index f407146..0000000 --- a/packages/xdga_directories/example/README.md +++ /dev/null @@ -1,21 +0,0 @@ -# xdga_directories_example - -Demonstrates how to use the xdga_directories plugin. - -## Build - -```shell -# Add an alias if it doesn't already exist -alias flutter-aurora=$HOME/.local/opt/flutter-sdk/bin/flutter -# Get dependencies -flutter-aurora pub get -# Run build -flutter-aurora build aurora --release # [--release|--debug|--profile] -``` - -You can collect, sign, run an example on the device with a script located in the `script/build_example.sh` -More information in `build_example.sh`. - -### Preview example - -![preview.png](../data/preview.png) diff --git a/packages/xdga_directories/example/analysis_options.yaml b/packages/xdga_directories/example/analysis_options.yaml deleted file mode 100644 index 566c597..0000000 --- a/packages/xdga_directories/example/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -include: package:flutter_lints/flutter.yaml diff --git a/packages/xdga_directories/example/aurora/.gitignore b/packages/xdga_directories/example/aurora/.gitignore deleted file mode 100644 index d3896c9..0000000 --- a/packages/xdga_directories/example/aurora/.gitignore +++ /dev/null @@ -1 +0,0 @@ -flutter/ephemeral diff --git a/packages/xdga_directories/example/aurora/CMakeLists.txt b/packages/xdga_directories/example/aurora/CMakeLists.txt deleted file mode 100644 index 0495b62..0000000 --- a/packages/xdga_directories/example/aurora/CMakeLists.txt +++ /dev/null @@ -1,51 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -cmake_minimum_required(VERSION 3.10) -project(com.example.xdga_directories_example LANGUAGES CXX) - -include(GNUInstallDirs) - -set(BINARY_NAME ${CMAKE_PROJECT_NAME}) -set(FLUTTER_DIR ${CMAKE_CURRENT_SOURCE_DIR}/flutter) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED ON) - -set(CMAKE_CXX_FLAGS "-Wall -Wextra") -set(CMAKE_CXX_FLAGS_RELEASE "-O3") - -set(CMAKE_SKIP_RPATH OFF) -set(CMAKE_INSTALL_RPATH "\$ORIGIN/../share/${BINARY_NAME}/lib") - -find_package(PkgConfig REQUIRED) -find_package(Qt5 COMPONENTS Core REQUIRED) -pkg_check_modules(FlutterEmbedder REQUIRED IMPORTED_TARGET flutter-embedder) - -add_executable(${BINARY_NAME} main.cpp ${FLUTTER_DIR}/generated_plugin_registrant.cpp) -target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::FlutterEmbedder Qt5::Core) -target_include_directories(${BINARY_NAME} PRIVATE ${FLUTTER_DIR}) - -include(flutter/generated_plugins.cmake) - -set(PACKAGE_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/${BINARY_NAME}) -set(DESKTOP_INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/applications) -set(ICONS_INSTALL_ROOT_DIR ${CMAKE_INSTALL_DATADIR}/icons/hicolor) - -add_custom_command(TARGET ${BINARY_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}/libflutter-embedder.so - ${PROJECT_BINARY_DIR}/bundle/lib/libflutter-embedder.so) - -install(FILES ${PROJECT_BINARY_DIR}/bundle/icudtl.dat DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/flutter_assets DESTINATION ${PACKAGE_INSTALL_DIR}) -install(DIRECTORY ${PROJECT_BINARY_DIR}/bundle/lib DESTINATION ${PACKAGE_INSTALL_DIR}) - -install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES desktop/${BINARY_NAME}.desktop DESTINATION ${DESKTOP_INSTALL_DIR}) - -foreach(ICONS_SIZE 86x86 108x108 128x128 172x172) - install(FILES icons/${ICONS_SIZE}.png - RENAME ${BINARY_NAME}.png - DESTINATION ${ICONS_INSTALL_ROOT_DIR}/${ICONS_SIZE}/apps/) -endforeach(ICONS_SIZE) diff --git a/packages/xdga_directories/example/aurora/desktop/com.example.xdga_directories_example.desktop b/packages/xdga_directories/example/aurora/desktop/com.example.xdga_directories_example.desktop deleted file mode 100644 index b025d3c..0000000 --- a/packages/xdga_directories/example/aurora/desktop/com.example.xdga_directories_example.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Application -Name=xdga_directories_example -Comment=Demonstrates how to use the xdga_directories plugin. -Icon=com.example.xdga_directories_example -Exec=/usr/bin/com.example.xdga_directories_example -X-Nemo-Application-Type=silica-qt5 - -[X-Application] -Permissions= -OrganizationName=com.example -ApplicationName=xdga_directories_example diff --git a/packages/xdga_directories/example/aurora/icons/108x108.png b/packages/xdga_directories/example/aurora/icons/108x108.png deleted file mode 100644 index 984893d..0000000 Binary files a/packages/xdga_directories/example/aurora/icons/108x108.png and /dev/null differ diff --git a/packages/xdga_directories/example/aurora/icons/128x128.png b/packages/xdga_directories/example/aurora/icons/128x128.png deleted file mode 100644 index 2d552ef..0000000 Binary files a/packages/xdga_directories/example/aurora/icons/128x128.png and /dev/null differ diff --git a/packages/xdga_directories/example/aurora/icons/172x172.png b/packages/xdga_directories/example/aurora/icons/172x172.png deleted file mode 100644 index 9dc271b..0000000 Binary files a/packages/xdga_directories/example/aurora/icons/172x172.png and /dev/null differ diff --git a/packages/xdga_directories/example/aurora/icons/86x86.png b/packages/xdga_directories/example/aurora/icons/86x86.png deleted file mode 100644 index 5923bb1..0000000 Binary files a/packages/xdga_directories/example/aurora/icons/86x86.png and /dev/null differ diff --git a/packages/xdga_directories/example/aurora/main.cpp b/packages/xdga_directories/example/aurora/main.cpp deleted file mode 100644 index 83f2ca8..0000000 --- a/packages/xdga_directories/example/aurora/main.cpp +++ /dev/null @@ -1,13 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -#include -#include "generated_plugin_registrant.h" - -int main(int argc, char *argv[]) { - Application::Initialize(argc, argv); - RegisterPlugins(); - Application::Launch(); - return 0; -} diff --git a/packages/xdga_directories/example/aurora/rpm/com.example.xdga_directories_example.spec b/packages/xdga_directories/example/aurora/rpm/com.example.xdga_directories_example.spec deleted file mode 100644 index 36130d1..0000000 --- a/packages/xdga_directories/example/aurora/rpm/com.example.xdga_directories_example.spec +++ /dev/null @@ -1,31 +0,0 @@ -%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ -%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|appmanifest-.+|.+_platform_plugin)\\.so.*$ - -Name: com.example.xdga_directories_example -Summary: Demonstrates how to use the xdga_directories plugin. -Version: 0.1.0 -Release: 1 -License: Proprietary -Source0: %{name}-%{version}.tar.zst - -BuildRequires: cmake -BuildRequires: pkgconfig(flutter-embedder) - -%description -%{summary}. - -%prep -%autosetup - -%build -%cmake -DCMAKE_BUILD_TYPE=%{_flutter_build_type} -%make_build - -%install -%make_install - -%files -%{_bindir}/%{name} -%{_datadir}/%{name}/* -%{_datadir}/applications/%{name}.desktop -%{_datadir}/icons/hicolor/*/apps/%{name}.png diff --git a/packages/xdga_directories/example/lib/main.dart b/packages/xdga_directories/example/lib/main.dart deleted file mode 100644 index 860ac8a..0000000 --- a/packages/xdga_directories/example/lib/main.dart +++ /dev/null @@ -1,180 +0,0 @@ -/* - * Copyright (c) 2023. Open Mobile Platform LLC. - * License: Proprietary. - */ -import 'package:flutter/material.dart'; -import 'package:xdga_directories/xdga_directories.dart' as xdga; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatefulWidget { - const MyApp({super.key}); - - @override - State createState() => _MyAppState(); -} - -class _MyAppState extends State { - late String appDataLocation; - late String cacheLocation; - late String documentsLocation; - late String downloadLocation; - late String musicLocation; - late String picturesLocation; - late String genericDataLocation; - late String moviesLocation; - - @override - void initState() { - super.initState(); - // Get paths - appDataLocation = xdga.getAppDataLocation(); - cacheLocation = xdga.getCacheLocation(); - documentsLocation = xdga.getDocumentsLocation(); - downloadLocation = xdga.getDownloadLocation(); - musicLocation = xdga.getMusicLocation(); - picturesLocation = xdga.getPicturesLocation(); - genericDataLocation = xdga.getGenericDataLocation(); - moviesLocation = xdga.getMoviesLocation(); - } - - @override - Widget build(BuildContext context) { - const textStyleWhite = TextStyle(fontSize: 18, color: Colors.white); - const textStyleTitle = TextStyle(fontSize: 20, color: Colors.black); - const textStylePath = TextStyle(fontSize: 18, color: Colors.black54); - - const spaceMedium = SizedBox(height: 16); - const spacerSmall = SizedBox(height: 8); - - return MaterialApp( - home: Scaffold( - appBar: AppBar( - title: const Text('Example xdga_directories'), - ), - body: SingleChildScrollView( - child: Center( - child: Container( - padding: const EdgeInsets.all(10), - child: Column( - children: [ - Container( - decoration: const BoxDecoration( - color: Colors.green, - borderRadius: BorderRadius.all(Radius.circular(10.0)), - ), - child: const Padding( - padding: EdgeInsets.all(20), - child: Text( - 'Demo application demonstration use xdga_directories', - style: textStyleWhite, - ), - ), - ), - const SizedBox(height: 30), - - // getAppDataLocation - const Text( - 'getAppDataLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - appDataLocation, - style: textStylePath, - ), - spaceMedium, - - // getCacheLocation - const Text( - 'getCacheLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - cacheLocation, - style: textStylePath, - ), - spaceMedium, - - // getDocumentsLocation - const Text( - 'getDocumentsLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - documentsLocation, - style: textStylePath, - ), - spaceMedium, - - // getDocumentsLocation - const Text( - 'getDownloadLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - downloadLocation, - style: textStylePath, - ), - spaceMedium, - - // getDocumentsLocation - const Text( - 'getMusicLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - musicLocation, - style: textStylePath, - ), - spaceMedium, - - // getDocumentsLocation - const Text( - 'getPicturesLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - picturesLocation, - style: textStylePath, - ), - spaceMedium, - - // getDocumentsLocation - const Text( - 'getGenericDataLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - genericDataLocation, - style: textStylePath, - ), - spaceMedium, - - // getDocumentsLocation - const Text( - 'getMoviesLocation()', - style: textStyleTitle, - ), - spacerSmall, - Text( - moviesLocation, - style: textStylePath, - ), - ], - ), - ), - ), - ), - ), - ); - } -} diff --git a/packages/xdga_directories/example/pubspec.lock b/packages/xdga_directories/example/pubspec.lock deleted file mode 100644 index 2ee3257..0000000 --- a/packages/xdga_directories/example/pubspec.lock +++ /dev/null @@ -1,182 +0,0 @@ -# Generated by pub -# See https://dart.dev/tools/pub/glossary#lockfile -packages: - async: - dependency: transitive - description: - name: async - url: "https://pub.dartlang.org" - source: hosted - version: "2.9.0" - boolean_selector: - dependency: transitive - description: - name: boolean_selector - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - characters: - dependency: transitive - description: - name: characters - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - clock: - dependency: transitive - description: - name: clock - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - collection: - dependency: transitive - description: - name: collection - url: "https://pub.dartlang.org" - source: hosted - version: "1.16.0" - cupertino_icons: - dependency: "direct main" - description: - name: cupertino_icons - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.5" - fake_async: - dependency: transitive - description: - name: fake_async - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - ffi: - dependency: transitive - description: - name: ffi - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - flutter: - dependency: "direct main" - description: flutter - source: sdk - version: "0.0.0" - flutter_lints: - dependency: "direct dev" - description: - name: flutter_lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - flutter_test: - dependency: "direct dev" - description: flutter - source: sdk - version: "0.0.0" - lints: - dependency: transitive - description: - name: lints - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.1" - matcher: - dependency: transitive - description: - name: matcher - url: "https://pub.dartlang.org" - source: hosted - version: "0.12.12" - material_color_utilities: - dependency: transitive - description: - name: material_color_utilities - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.5" - meta: - dependency: transitive - description: - name: meta - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.0" - path: - dependency: transitive - description: - name: path - url: "https://pub.dartlang.org" - source: hosted - version: "1.8.2" - plugin_platform_interface: - dependency: transitive - description: - name: plugin_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.4" - sky_engine: - dependency: transitive - description: flutter - source: sdk - version: "0.0.99" - source_span: - dependency: transitive - description: - name: source_span - url: "https://pub.dartlang.org" - source: hosted - version: "1.9.0" - stack_trace: - dependency: transitive - description: - name: stack_trace - url: "https://pub.dartlang.org" - source: hosted - version: "1.10.0" - stream_channel: - dependency: transitive - description: - name: stream_channel - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.0" - string_scanner: - dependency: transitive - description: - name: string_scanner - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.1" - term_glyph: - dependency: transitive - description: - name: term_glyph - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.1" - test_api: - dependency: transitive - description: - name: test_api - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.12" - vector_math: - dependency: transitive - description: - name: vector_math - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.2" - xdga_directories: - dependency: "direct main" - description: - path: ".." - relative: true - source: path - version: "0.0.1" -sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=2.11.0" diff --git a/packages/xdga_directories/example/pubspec.yaml b/packages/xdga_directories/example/pubspec.yaml deleted file mode 100644 index be27c0e..0000000 --- a/packages/xdga_directories/example/pubspec.yaml +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -name: xdga_directories_example -description: Demonstrates how to use the xdga_directories plugin. - -publish_to: 'none' - -version: 1.0.0+1 - -environment: - sdk: '>=2.18.6 <3.0.0' - -dependencies: - flutter: - sdk: flutter - xdga_directories: - path: ../ - cupertino_icons: ^1.0.2 - -dev_dependencies: - flutter_test: - sdk: flutter - flutter_lints: ^2.0.0 - -flutter: - uses-material-design: true diff --git a/packages/xdga_directories/pubspec.yaml b/packages/xdga_directories/pubspec.yaml index d358645..8fc911e 100644 --- a/packages/xdga_directories/pubspec.yaml +++ b/packages/xdga_directories/pubspec.yaml @@ -7,7 +7,7 @@ version: 0.0.1 environment: sdk: '>=2.18.6 <3.0.0' - flutter: ">=2.11.0" + flutter: ">=3.0.0" dependencies: flutter: diff --git a/script/build_example.sh b/script/build_example.sh deleted file mode 100755 index bac91f4..0000000 --- a/script/build_example.sh +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -## Build example, sign rpm, upload/install/run rpm to device - -## Usage -## -## chmod +x ./build_example.sh -## -## ./build_example.sh \ -## -p xdga_directories \ -## -d : \ -## -s /home/user/sign/system_keys - -## Flutter path -FLUTTER="$HOME/.local/opt/flutter-sdk/bin/flutter" - -## https://developer.auroraos.ru/doc/software_development/psdk/setup -## Install Platform SDK path -## You may not have set the PSDK_DIR environment variable. -## export PSDK_DIR=$HOME/AuroraPlatformSDK/sdks/aurora_psdk - -while getopts p:d:s: flag; do - case "${flag}" in - p) package=${OPTARG} ;; - d) device=${OPTARG} ;; - s) sign=${OPTARG} ;; - *) - echo "usage: $0 [-p] [-d] [-s]" >&2 - exit 1 - ;; - esac -done - -if [ -z "$package" ]; then - echo "Specify a build package" - exit -else - cd "../packages/$package" 2>/dev/null || eval 'echo "Package \"$package\" not found." && exit' - ## Update dependency - $FLUTTER pub get - ## Run ffigen if has - $FLUTTER pub run ffigen --config ffigen.yaml 2>/dev/null - ## Open example dir - cd "example" || exit - ## Build aurora example app - { - $FLUTTER build aurora --release - } || { - exit 1; - } -fi - -if [ -n "$sign" ]; then - - key=$(ls "$sign"/*key.pem) - - if [ -z "$key" ]; then - echo "Key *key.pem not found." - exit - fi - - cert=$(ls "$sign"/*cert.pem) - - if [ -z "$cert" ]; then - echo "Key *cert.pem not found." - exit - fi - - ## Sign rpm system key - "$PSDK_DIR"/sdk-chroot rpmsign-external sign \ - --key "$key" \ - --cert "$cert" \ - build/aurora/arm/release/RPMS/*.rpm -fi - -if [ -n "$device" ]; then - - IFS=':' read -ra ADDR <<< "$device" - IFS='/' read -ra ADDP <<< "$package" - - D_IP="${ADDR[0]}" - D_PASS="${ADDR[1]}" - APP_KEY="${ADDP[-1]}" - - # shellcheck disable=SC2012 - rpm=$(ls "$PWD"/build/aurora/arm/release/RPMS/*.rpm | sort -r | head -n 1) - - # upload rpm - scp "$rpm" defaultuser@"$D_IP:/home/defaultuser/Downloads" - - # install rpm - ssh -t defaultuser@$D_IP "echo $D_PASS | devel-su pkcon -y install-local /home/defaultuser/Downloads/*$APP_KEY*.rpm" - - # run application - ssh -t defaultuser@$D_IP "/usr/bin/com.example.${APP_KEY}_example" -fi diff --git a/script/vscode_properties.sh b/script/vscode_properties.sh deleted file mode 100755 index e80ab79..0000000 --- a/script/vscode_properties.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/bash - -# Copyright (c) 2023. Open Mobile Platform LLC. -# License: Proprietary. - -## Script create c_cpp_properties.json with dependencies for flutter aurora - -## Usage -## -## chmod +x ./vscode_properties.sh -## ./vscode_properties.sh - -## https://developer.auroraos.ru/doc/software_development/psdk/setup -## Install Platform SDK path -## You may not have set the PSDK_DIR environment variable. -## export PSDK_DIR=$HOME/AuroraPlatformSDK/sdks/aurora_psdk - -cd ../ - -## check file -[ -f .vscode/c_cpp_properties.json ] && { echo "File c_cpp_properties.json already exist!"; exit; } - -## find target -TARGET=$($PSDK_DIR/sdk-chroot sdk-assistant list | grep armv | grep default | sed 's/^.*A/A/g' | sed 's/\s.*//g') - -## mkdir .vscode if not exist -[ -d .vscode ] || mkdir .vscode - -## find targets path -TARGETS_PATH=$(cd "$PSDK_DIR/../../" && pwd)/targets - -## save file -tee -a .vscode/c_cpp_properties.json << END -{ - "configurations": [ - { - "name": "Linux", - "includePath": [ - "\${workspaceFolder}/**", - "$TARGETS_PATH/$TARGET/usr/include", - "$TARGETS_PATH/$TARGET/usr/include/dconf", - "$TARGETS_PATH/$TARGET/usr/include/flutter-embedder", - "$TARGETS_PATH/$TARGET/usr/include/maliit", - "$TARGETS_PATH/$TARGET/usr/include/appmanifest-cpp", - "$TARGETS_PATH/$TARGET/usr/include/glib-2.0", - "$TARGETS_PATH/$TARGET/usr/lib/glib-2.0/include", - "$TARGETS_PATH/$TARGET/usr/include/sailfishapp", - "$TARGETS_PATH/$TARGET/usr/include/qt5", - "$TARGETS_PATH/$TARGET/usr/include/qt5/QtConcurrent", - "$TARGETS_PATH/$TARGET/usr/include/qt5/QtCore", - "$TARGETS_PATH/$TARGET/usr/include/qt5/QtDBus", - "$TARGETS_PATH/$TARGET/usr/include/qt5/QtGui", - "$TARGETS_PATH/$TARGET/usr/include/qt5/QtMultimedia", - "$TARGETS_PATH/$TARGET/usr/include/qt5/QtQuick" - ], - "defines": [ - "__ARM_PCS_VFP" - ], - "compilerPath": "/usr/bin/g++", - "cStandard": "c17", - "cppStandard": "c++17", - "intelliSenseMode": "clang-x64" - } - ], - "version": 4 -} -END