From 2c9430c3b7678c727f278d79b325c8729fd6c436 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9C=D0=B0=D1=80?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2?= Date: Mon, 27 Nov 2023 20:35:08 +0300 Subject: [PATCH] Create Aurora env --- packages/app/.gitignore | 47 ++++++++ packages/app/.metadata | 17 ++- packages/app/aurora/.gitignore | 1 + packages/app/aurora/CMakeLists.txt | 47 ++++++++ .../desktop/su.markow.nextcloud-neon.desktop | 12 ++ packages/app/aurora/icons/108x108.png | Bin 0 -> 5106 bytes packages/app/aurora/icons/128x128.png | Bin 0 -> 6209 bytes packages/app/aurora/icons/172x172.png | Bin 0 -> 8356 bytes packages/app/aurora/icons/86x86.png | Bin 0 -> 4152 bytes packages/app/aurora/main.cpp | 9 ++ .../aurora/rpm/su.markow.nextcloud-neon.spec | 33 ++++++ packages/app/de.provokateurin.neon.yaml | 2 +- packages/app/linux/CMakeLists.txt | 4 +- packages/app/pubspec.lock | 109 +++++++++++++----- packages/app/pubspec.yaml | 12 ++ .../neon/neon/lib/src/utils/adaptive.dart | 7 +- .../neon/lib/src/utils/request_manager.dart | 3 +- .../widgets/adaptive_widgets/list_tile.dart | 26 +++-- packages/neon/neon/pubspec.yaml | 5 + 19 files changed, 277 insertions(+), 57 deletions(-) create mode 100644 packages/app/.gitignore create mode 100644 packages/app/aurora/.gitignore create mode 100644 packages/app/aurora/CMakeLists.txt create mode 100644 packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop create mode 100644 packages/app/aurora/icons/108x108.png create mode 100644 packages/app/aurora/icons/128x128.png create mode 100644 packages/app/aurora/icons/172x172.png create mode 100644 packages/app/aurora/icons/86x86.png create mode 100644 packages/app/aurora/main.cpp create mode 100644 packages/app/aurora/rpm/su.markow.nextcloud-neon.spec diff --git a/packages/app/.gitignore b/packages/app/.gitignore new file mode 100644 index 00000000..3db38235 --- /dev/null +++ b/packages/app/.gitignore @@ -0,0 +1,47 @@ +# 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/app/.metadata b/packages/app/.metadata index 72033a21..f1f62691 100644 --- a/packages/app/.metadata +++ b/packages/app/.metadata @@ -4,8 +4,8 @@ # This file should be version controlled and should not be manually edited. version: - revision: "ead455963c12b453cdb2358cad34969c76daf180" - channel: "stable" + revision: "2828ddd9a707d09af00b793a42faaa0f0e2b957f" + channel: "master" project_type: app @@ -13,14 +13,11 @@ project_type: app migration: platforms: - platform: root - create_revision: ead455963c12b453cdb2358cad34969c76daf180 - base_revision: ead455963c12b453cdb2358cad34969c76daf180 - - platform: android - create_revision: ead455963c12b453cdb2358cad34969c76daf180 - base_revision: ead455963c12b453cdb2358cad34969c76daf180 - - platform: linux - create_revision: ead455963c12b453cdb2358cad34969c76daf180 - base_revision: ead455963c12b453cdb2358cad34969c76daf180 + create_revision: 2828ddd9a707d09af00b793a42faaa0f0e2b957f + base_revision: 2828ddd9a707d09af00b793a42faaa0f0e2b957f + - platform: aurora + create_revision: 2828ddd9a707d09af00b793a42faaa0f0e2b957f + base_revision: 2828ddd9a707d09af00b793a42faaa0f0e2b957f # User provided section diff --git a/packages/app/aurora/.gitignore b/packages/app/aurora/.gitignore new file mode 100644 index 00000000..d3896c98 --- /dev/null +++ b/packages/app/aurora/.gitignore @@ -0,0 +1 @@ +flutter/ephemeral diff --git a/packages/app/aurora/CMakeLists.txt b/packages/app/aurora/CMakeLists.txt new file mode 100644 index 00000000..a0127f7e --- /dev/null +++ b/packages/app/aurora/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 3.10) +project(su.markow.nextcloud-neon 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/app/aurora/desktop/su.markow.nextcloud-neon.desktop b/packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop new file mode 100644 index 00000000..c31f3077 --- /dev/null +++ b/packages/app/aurora/desktop/su.markow.nextcloud-neon.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Type=Application +Name=nextcloud-neon +Comment=A new Flutter project. +Icon=su.markow.nextcloud-neon +Exec=/usr/bin/su.markow.nextcloud-neon +X-Nemo-Application-Type=silica-qt5 + +[X-Application] +Permissions=UserDirs +OrganizationName=su.markow +ApplicationName=nextcloud-neon diff --git a/packages/app/aurora/icons/108x108.png b/packages/app/aurora/icons/108x108.png new file mode 100644 index 0000000000000000000000000000000000000000..9f59ae2e585f8345636473fce1ebeb9fd0cfb249 GIT binary patch literal 5106 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 Ub$vXZ0RR9107*qoM6N<$f*m*YVE_OC literal 0 HcmV?d00001 diff --git a/packages/app/aurora/icons/128x128.png b/packages/app/aurora/icons/128x128.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e57adbcd5ba13da50bfb1c8988b0900a1baf23 GIT binary patch literal 6209 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 +#include "generated_plugin_registrant.h" + +int main(int argc, char *argv[]) { + Application::Initialize(argc, argv); + RegisterPlugins(); + Application::Launch(); + return 0; +} diff --git a/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec b/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec new file mode 100644 index 00000000..4e85c667 --- /dev/null +++ b/packages/app/aurora/rpm/su.markow.nextcloud-neon.spec @@ -0,0 +1,33 @@ +%global __provides_exclude_from ^%{_datadir}/%{name}/lib/.*$ +%global __requires_exclude ^lib(dconf|flutter-embedder|maliit-glib|.+_platform_plugin)\\.so.*$ + +Name: su.markow.nextcloud-neon +Summary: A new Flutter project. +Version: 0.1.0 +Release: 1 +License: Proprietary +Source0: %{name}-%{version}.tar.zst + +BuildRequires: cmake +BuildRequires: pkgconfig(flutter-embedder) +BuildRequires: pkgconfig(sqlite3) +BuildRequires: pkgconfig(camera) + +%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/app/de.provokateurin.neon.yaml b/packages/app/de.provokateurin.neon.yaml index 909ad478..143166fa 100644 --- a/packages/app/de.provokateurin.neon.yaml +++ b/packages/app/de.provokateurin.neon.yaml @@ -9,7 +9,7 @@ finish-args: - --socket=wayland - --share=network - --device=dri - - --env=LD_LIBRARY_PATH=/app/lib/:/app/nextcloud-neon/lib/ + - --env=LD_LIBRARY_PATH=/app/lib/:/app/nextcloud-neon/lib/:/usr/lib modules: - ../../external/flathub-shared-modules/libappindicator/libappindicator-gtk3-12.10.json - name: aarch64-quirks diff --git a/packages/app/linux/CMakeLists.txt b/packages/app/linux/CMakeLists.txt index ae1721f3..42ca1c80 100644 --- a/packages/app/linux/CMakeLists.txt +++ b/packages/app/linux/CMakeLists.txt @@ -95,9 +95,9 @@ include(flutter/generated_plugins.cmake) # By default, "installing" just makes a relocatable bundle in the build # directory. set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") -if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) +#if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) -endif() +#endif() # Start with a clean build bundle directory every time. install(CODE " diff --git a/packages/app/pubspec.lock b/packages/app/pubspec.lock index e3dabeb8..5f81a88f 100644 --- a/packages/app/pubspec.lock +++ b/packages/app/pubspec.lock @@ -1,6 +1,14 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + ansicolor: + dependency: transitive + description: + name: ansicolor + sha256: "8bf17a8ff6ea17499e40a2d2542c2f481cd7615760c6d34065cb22bfd22e6880" + url: "https://pub.dev" + source: hosted + version: "2.0.2" archive: dependency: transitive description: @@ -61,10 +69,10 @@ packages: dependency: transitive description: name: built_value - sha256: "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e" + sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" url: "https://pub.dev" source: hosted - version: "8.7.0" + version: "8.8.0" camera: dependency: transitive description: @@ -157,10 +165,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "445db18de832dba8d851e287aff8ccf169bed30d2e94243cb54c7d2f1ed2142c" + sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" url: "https://pub.dev" source: hosted - version: "0.3.3+6" + version: "0.3.3+7" crypto: dependency: transitive description: @@ -197,10 +205,10 @@ packages: dependency: transitive description: name: dbus - sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" url: "https://pub.dev" source: hosted - version: "0.7.8" + version: "0.7.10" dependency_validator: dependency: transitive description: @@ -349,10 +357,10 @@ packages: dependency: transitive description: name: flutter_local_notifications - sha256: "6d11ea777496061e583623aaf31923f93a9409ef8fcaeeefdd6cd78bf4fe5bb3" + sha256: bb5cd63ff7c91d6efe452e41d0d0ae6348925c82eafd10ce170ef585ea04776e url: "https://pub.dev" source: hosted - version: "16.1.0" + version: "16.2.0" flutter_local_notifications_linux: dependency: transitive description: @@ -394,10 +402,10 @@ packages: dependency: transitive description: name: flutter_native_splash - sha256: d93394f22f73e810bda59e11ebe83329c5511d6460b6b7509c4e1f3c92d6d625 + sha256: c4d899312b36e7454bedfd0a4740275837b99e532d81c8477579d8183db1de6c url: "https://pub.dev" source: hosted - version: "2.3.5" + version: "2.3.6" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -742,10 +750,19 @@ packages: dependency: transitive description: name: package_info_plus - sha256: "7e76fad405b3e4016cd39d08f455a4eb5199723cf594cd1b8916d47140d93017" + sha256: "6ff267fcd9d48cb61c8df74a82680e8b82e940231bb5f68356672fde0397334a" url: "https://pub.dev" source: hosted - version: "4.2.0" + version: "4.1.0" + package_info_plus_aurora: + dependency: transitive + description: + path: "packages/package_info_plus/package_info_plus_aurora" + ref: master + resolved-ref: "9c83303f10ec396bbb008e983659382ef69d4577" + url: "https://gitlab.com/omprussia/flutter/flutter-plugins.git" + source: git + version: "0.0.1" package_info_plus_platform_interface: dependency: transitive description: @@ -771,7 +788,7 @@ packages: source: hosted version: "1.0.1" path_provider: - dependency: transitive + dependency: "direct main" description: name: path_provider sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa @@ -786,6 +803,15 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.1" + path_provider_aurora: + dependency: "direct main" + description: + path: "packages/path_provider/path_provider_aurora" + ref: master + resolved-ref: "9c83303f10ec396bbb008e983659382ef69d4577" + url: "https://gitlab.com/omprussia/flutter/flutter-plugins.git" + source: git + version: "0.0.1" path_provider_foundation: dependency: transitive description: @@ -878,10 +904,10 @@ packages: dependency: transitive description: name: plugin_platform_interface - sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d + sha256: f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8 url: "https://pub.dev" source: hosted - version: "2.1.6" + version: "2.1.7" pointycastle: dependency: transitive description: @@ -1026,6 +1052,15 @@ packages: url: "https://pub.dev" source: hosted version: "2.2.1" + shared_preferences_aurora: + dependency: transitive + description: + path: "packages/shared_preferences/shared_preferences_aurora" + ref: master + resolved-ref: "9c83303f10ec396bbb008e983659382ef69d4577" + url: "https://gitlab.com/omprussia/flutter/flutter-plugins.git" + source: git + version: "0.0.1" shared_preferences_foundation: dependency: transitive description: @@ -1103,29 +1138,38 @@ packages: source: hosted version: "7.0.0" sqflite: - dependency: transitive + dependency: "direct main" description: name: sqflite sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" url: "https://pub.dev" source: hosted version: "2.3.0" + sqflite_aurora: + dependency: "direct main" + description: + path: "packages/sqflite/sqflite_aurora" + ref: master + resolved-ref: "9c83303f10ec396bbb008e983659382ef69d4577" + url: "https://gitlab.com/omprussia/flutter/flutter-plugins.git" + source: git + version: "2.2.6+aurora1" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "8ed044102f3135add97be8653662052838859f5400075ef227f8ad72ae320803" + sha256: bb4738f15b23352822f4c42a531677e5c6f522e079461fd240ead29d8d8a54a6 url: "https://pub.dev" source: hosted - version: "2.5.0+1" + version: "2.5.0+2" sqflite_common_ffi: dependency: transitive description: name: sqflite_common_ffi - sha256: "198b40b4a7ba58cca18d7837d0246859b7b4c8b007d2902634fc26dec57fa3f1" + sha256: "35d2fce1e971707c227cc4775cc017d5eafe06c2654c3435ebd5c3ad6c170f5f" url: "https://pub.dev" source: hosted - version: "2.3.0+3" + version: "2.3.0+4" sqlite3: dependency: transitive description: @@ -1274,10 +1318,10 @@ packages: dependency: transitive description: name: url_launcher_ios - sha256: "4ac97281cf60e2e8c5cc703b2b28528f9b50c8f7cebc71df6bdf0845f647268a" + sha256: bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3 url: "https://pub.dev" source: hosted - version: "6.2.0" + version: "6.2.1" url_launcher_linux: dependency: transitive description: @@ -1378,10 +1422,10 @@ packages: dependency: transitive description: name: wakelock_plus - sha256: f45a6c03aa3f8322e0a9d7f4a0482721c8789cb41d555407367650b8f9c26018 + sha256: f268ca2116db22e57577fb99d52515a24bdc1d570f12ac18bb762361d43b043d url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "1.1.4" wakelock_plus_platform_interface: dependency: transitive description: @@ -1426,10 +1470,10 @@ packages: dependency: transitive description: name: webview_flutter_platform_interface - sha256: "6d9213c65f1060116757a7c473247c60f3f7f332cac33dc417c9e362a9a13e4f" + sha256: adb8c03c2be231bea5a8ed0e9039e9d18dbb049603376beaefa15393ede468a5 url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.7.0" webview_flutter_wkwebview: dependency: transitive description: @@ -1442,10 +1486,10 @@ packages: dependency: transitive description: name: win32 - sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" + sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" url: "https://pub.dev" source: hosted - version: "5.0.9" + version: "5.1.0" window_manager: dependency: transitive description: @@ -1462,6 +1506,15 @@ packages: url: "https://pub.dev" source: hosted version: "1.0.3" + xdga_directories: + dependency: transitive + description: + path: "packages/xdga_directories" + ref: master + resolved-ref: "9c83303f10ec396bbb008e983659382ef69d4577" + url: "https://gitlab.com/omprussia/flutter/flutter-plugins.git" + source: git + version: "0.0.1" xml: dependency: transitive description: diff --git a/packages/app/pubspec.yaml b/packages/app/pubspec.yaml index 1275b13c..d67b8905 100644 --- a/packages/app/pubspec.yaml +++ b/packages/app/pubspec.yaml @@ -9,6 +9,18 @@ environment: dependencies: flutter: sdk: flutter + sqflite: ^2.3.0 + sqflite_aurora: + git: + url: https://gitlab.com/omprussia/flutter/flutter-plugins.git + ref: master + path: packages/sqflite/sqflite_aurora + path_provider: ^2.1.1 + path_provider_aurora: + git: + url: https://gitlab.com/omprussia/flutter/flutter-plugins.git + ref: master + path: packages/path_provider/path_provider_aurora neon: git: url: https://github.com/nextcloud/neon diff --git a/packages/neon/neon/lib/src/utils/adaptive.dart b/packages/neon/neon/lib/src/utils/adaptive.dart index f2c3a4de..928d3436 100644 --- a/packages/neon/neon/lib/src/utils/adaptive.dart +++ b/packages/neon/neon/lib/src/utils/adaptive.dart @@ -7,13 +7,14 @@ bool isCupertino(final BuildContext context) { final theme = Theme.of(context); switch (theme.platform) { + case TargetPlatform.iOS: + case TargetPlatform.macOS: + return true; case TargetPlatform.android: case TargetPlatform.fuchsia: case TargetPlatform.linux: case TargetPlatform.windows: + default: return false; - case TargetPlatform.iOS: - case TargetPlatform.macOS: - return true; } } diff --git a/packages/neon/neon/lib/src/utils/request_manager.dart b/packages/neon/neon/lib/src/utils/request_manager.dart index 5222f823..5a08b242 100644 --- a/packages/neon/neon/lib/src/utils/request_manager.dart +++ b/packages/neon/neon/lib/src/utils/request_manager.dart @@ -10,6 +10,7 @@ import 'package:path_provider/path_provider.dart'; import 'package:rxdart/rxdart.dart'; import 'package:sqflite/sqflite.dart'; import 'package:xml/xml.dart' as xml; +import 'package:sqflite/sqflite.dart'; typedef UnwrapCallback = T Function(R); typedef SerializeCallback = String Function(T); @@ -231,7 +232,7 @@ class Cache { return; } - final cacheDir = await getApplicationCacheDirectory(); + final cacheDir = await getTemporaryDirectory(); _database = await openDatabase( p.join(cacheDir.path, 'cache.db'), version: 1, diff --git a/packages/neon/neon/lib/src/widgets/adaptive_widgets/list_tile.dart b/packages/neon/neon/lib/src/widgets/adaptive_widgets/list_tile.dart index e0392fe7..ef6d1a27 100644 --- a/packages/neon/neon/lib/src/widgets/adaptive_widgets/list_tile.dart +++ b/packages/neon/neon/lib/src/widgets/adaptive_widgets/list_tile.dart @@ -88,18 +88,6 @@ class AdaptiveListTile extends StatelessWidget { final theme = Theme.of(context); switch (theme.platform) { - case TargetPlatform.android: - case TargetPlatform.fuchsia: - case TargetPlatform.linux: - case TargetPlatform.windows: - return ListTile( - title: title, - subtitle: subtitle, - leading: leading, - trailing: trailing, - onTap: onTap, - enabled: enabled, - ); case TargetPlatform.iOS: case TargetPlatform.macOS: final tile = CupertinoListTile( @@ -130,6 +118,20 @@ class AdaptiveListTile extends StatelessWidget { } return tile; + + case TargetPlatform.android: + case TargetPlatform.fuchsia: + case TargetPlatform.linux: + case TargetPlatform.windows: + default: + return ListTile( + title: title, + subtitle: subtitle, + leading: leading, + trailing: trailing, + onTap: onTap, + enabled: enabled, + ); } } } diff --git a/packages/neon/neon/pubspec.yaml b/packages/neon/neon/pubspec.yaml index a8ace978..ecb24451 100644 --- a/packages/neon/neon/pubspec.yaml +++ b/packages/neon/neon/pubspec.yaml @@ -44,6 +44,11 @@ dependencies: rxdart: ^0.27.4 scrollable_positioned_list: ^0.3.0 shared_preferences: ^2.2.1 + shared_preferences_aurora: + git: + url: https://gitlab.com/omprussia/flutter/flutter-plugins.git + ref: master + path: packages/shared_preferences/shared_preferences_aurora sort_box: git: url: https://github.com/nextcloud/neon