diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 1595b5c..8a400e8 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,42 +1,43 @@ + package="social.myportal.relatica"> + android:name="${applicationName}" + android:icon="@mipmap/ic_launcher_round" + android:label="Relatica"> + android:name=".MainActivity" + android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" + android:exported="true" + android:hardwareAccelerated="true" + android:launchMode="singleTop" + android:theme="@style/LaunchTheme" + android:windowSoftInputMode="adjustResize"> + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" /> - - + + + android:name="flutterEmbedding" + android:value="2" /> - - + + - - + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..7458cd7 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..c616f5c Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..09bc7bf Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..f310b91 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..fbf4c08 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/icon/raster/ios/Icon-App-1024x1024@1x.png b/icon/raster/ios/Icon-App-1024x1024@1x.png index 0243ab9..c39f212 100644 Binary files a/icon/raster/ios/Icon-App-1024x1024@1x.png and b/icon/raster/ios/Icon-App-1024x1024@1x.png differ diff --git a/icon/raster/ios/Icon-App-20x20@1x.png b/icon/raster/ios/Icon-App-20x20@1x.png index a7af244..c7b4d34 100644 Binary files a/icon/raster/ios/Icon-App-20x20@1x.png and b/icon/raster/ios/Icon-App-20x20@1x.png differ diff --git a/icon/raster/ios/Icon-App-20x20@2x.png b/icon/raster/ios/Icon-App-20x20@2x.png index 91ab9f2..9bb0b0a 100644 Binary files a/icon/raster/ios/Icon-App-20x20@2x.png and b/icon/raster/ios/Icon-App-20x20@2x.png differ diff --git a/icon/raster/ios/Icon-App-20x20@3x.png b/icon/raster/ios/Icon-App-20x20@3x.png index 43cdfea..6fbb9a6 100644 Binary files a/icon/raster/ios/Icon-App-20x20@3x.png and b/icon/raster/ios/Icon-App-20x20@3x.png differ diff --git a/icon/raster/ios/Icon-App-29x29@1x.png b/icon/raster/ios/Icon-App-29x29@1x.png index 53bfdae..f724985 100644 Binary files a/icon/raster/ios/Icon-App-29x29@1x.png and b/icon/raster/ios/Icon-App-29x29@1x.png differ diff --git a/icon/raster/ios/Icon-App-29x29@2x.png b/icon/raster/ios/Icon-App-29x29@2x.png index bdbd8d5..d7beb2f 100644 Binary files a/icon/raster/ios/Icon-App-29x29@2x.png and b/icon/raster/ios/Icon-App-29x29@2x.png differ diff --git a/icon/raster/ios/Icon-App-29x29@3x.png b/icon/raster/ios/Icon-App-29x29@3x.png index a66f497..998590b 100644 Binary files a/icon/raster/ios/Icon-App-29x29@3x.png and b/icon/raster/ios/Icon-App-29x29@3x.png differ diff --git a/icon/raster/ios/Icon-App-40x40@1x.png b/icon/raster/ios/Icon-App-40x40@1x.png index 91ab9f2..92ec0b9 100644 Binary files a/icon/raster/ios/Icon-App-40x40@1x.png and b/icon/raster/ios/Icon-App-40x40@1x.png differ diff --git a/icon/raster/ios/Icon-App-40x40@2x.png b/icon/raster/ios/Icon-App-40x40@2x.png index ddbb94d..53429ed 100644 Binary files a/icon/raster/ios/Icon-App-40x40@2x.png and b/icon/raster/ios/Icon-App-40x40@2x.png differ diff --git a/icon/raster/ios/Icon-App-40x40@3x.png b/icon/raster/ios/Icon-App-40x40@3x.png index dd1ada0..fa588ee 100644 Binary files a/icon/raster/ios/Icon-App-40x40@3x.png and b/icon/raster/ios/Icon-App-40x40@3x.png differ diff --git a/icon/raster/ios/Icon-App-60x60@2x.png b/icon/raster/ios/Icon-App-60x60@2x.png index dd1ada0..d97e66e 100644 Binary files a/icon/raster/ios/Icon-App-60x60@2x.png and b/icon/raster/ios/Icon-App-60x60@2x.png differ diff --git a/icon/raster/ios/Icon-App-60x60@3x.png b/icon/raster/ios/Icon-App-60x60@3x.png index a175674..dcf39af 100644 Binary files a/icon/raster/ios/Icon-App-60x60@3x.png and b/icon/raster/ios/Icon-App-60x60@3x.png differ diff --git a/icon/raster/ios/Icon-App-76x76@1x.png b/icon/raster/ios/Icon-App-76x76@1x.png index 1ce96a6..ee21bd2 100644 Binary files a/icon/raster/ios/Icon-App-76x76@1x.png and b/icon/raster/ios/Icon-App-76x76@1x.png differ diff --git a/icon/raster/ios/Icon-App-76x76@2x.png b/icon/raster/ios/Icon-App-76x76@2x.png index 6933485..14b603d 100644 Binary files a/icon/raster/ios/Icon-App-76x76@2x.png and b/icon/raster/ios/Icon-App-76x76@2x.png differ diff --git a/icon/raster/ios/Icon-App-83.5x83.5@2x.png b/icon/raster/ios/Icon-App-83.5x83.5@2x.png index 9fcbab2..024539c 100644 Binary files a/icon/raster/ios/Icon-App-83.5x83.5@2x.png and b/icon/raster/ios/Icon-App-83.5x83.5@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png index 0243ab9..c39f212 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png index a7af244..c7b4d34 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png index 91ab9f2..9bb0b0a 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png index 43cdfea..6fbb9a6 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png index 53bfdae..f724985 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png index bdbd8d5..d7beb2f 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png index a66f497..998590b 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png index 91ab9f2..92ec0b9 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png index ddbb94d..53429ed 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png index dd1ada0..fa588ee 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png index dd1ada0..d97e66e 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png index a175674..dcf39af 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png index 1ce96a6..ee21bd2 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png index 6933485..14b603d 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png index 9fcbab2..024539c 100644 Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/lib/main.dart b/lib/main.dart index 3fb336c..e3c3624 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -17,12 +17,12 @@ import 'services/notifications_manager.dart'; import 'services/setting_service.dart'; import 'services/timeline_manager.dart'; import 'utils/app_scrolling_behavior.dart'; +import 'utils/old_android_letsencrypte_cert.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); // await dotenv.load(fileName: '.env'); Logger.root.level = Level.FINER; - Logger.root.onRecord.listen((event) { final logName = event.loggerName.isEmpty ? 'ROOT' : event.loggerName; final msg = @@ -30,6 +30,7 @@ void main() async { print(msg); }); + await fixLetsEncryptCertOnOldAndroid(); await dependencyInjectionInitialization(); runApp(const App()); diff --git a/lib/screens/user_posts_screen.dart b/lib/screens/user_posts_screen.dart index 1116ebb..681f314 100644 --- a/lib/screens/user_posts_screen.dart +++ b/lib/screens/user_posts_screen.dart @@ -1,8 +1,13 @@ import 'package:flutter/material.dart'; +import 'package:provider/provider.dart'; +import '../controls/standard_appbar.dart'; import '../controls/timeline/timeline_panel.dart'; +import '../globals.dart'; import '../models/TimelineIdentifiers.dart'; import '../routes.dart'; +import '../services/network_status_service.dart'; +import '../services/timeline_manager.dart'; class UserPostsScreen extends StatelessWidget { final String userId; @@ -11,10 +16,39 @@ class UserPostsScreen extends StatelessWidget { @override Widget build(BuildContext context) { + final nss = getIt(); + final manager = context.watch(); + final timeline = TimelineIdentifiers.profile(userId); return Scaffold( - appBar: AppBar( - title: Text('User Posts'), + appBar: StandardAppBar.build( + context, + 'User Posts', actions: [ + ValueListenableBuilder( + valueListenable: nss.timelineLoadingStatus, + builder: (context2, executing, _) { + if (executing) { + final theme = Theme.of(context); + final size = theme.appBarTheme.actionsIconTheme?.size ?? + theme.iconTheme.size ?? + 24; + return Center( + child: SizedBox( + width: size, + height: size, + child: CircularProgressIndicator( + color: Theme.of(context).canvasColor, + ), + ), + ); + } + return IconButton( + onPressed: () async => await manager.updateTimeline( + timeline, TimelineRefreshType.refresh), + icon: Icon( + Icons.refresh, + )); + }), IconButton( onPressed: () { Navigator.of(context).popUntil((route) { @@ -27,7 +61,7 @@ class UserPostsScreen extends StatelessWidget { ), body: Center( child: TimelinePanel( - timeline: TimelineIdentifiers.profile(userId), + timeline: timeline, ), ), ); diff --git a/lib/utils/old_android_letsencrypte_cert.dart b/lib/utils/old_android_letsencrypte_cert.dart new file mode 100644 index 0000000..0344e0d --- /dev/null +++ b/lib/utils/old_android_letsencrypte_cert.dart @@ -0,0 +1,65 @@ +import 'dart:convert'; +import 'dart:io'; + +import 'package:device_info_plus/device_info_plus.dart'; +import 'package:logging/logging.dart'; + +const ISRG_X1 = """ +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- +"""; +final _logger = Logger('OldAndroidLetsEncryptFix'); + +Future fixLetsEncryptCertOnOldAndroid() async { + if (!Platform.isAndroid) { + _logger.info('Not Android, skipping old Android LetsEncrypt cert fix'); + return; + } + + final deviceData = await DeviceInfoPlugin().androidInfo; + final sdkVersion = deviceData.version.sdkInt; + if (sdkVersion > 24) { + _logger.info( + 'Android version $sdkVersion does not require LetsEncrypt cert fix, skipping'); + return; + } + + _logger.severe( + 'Android version requires manual initialization of LetsEncrypt ISRG X1 Certificate, attempting now...'); + try { + SecurityContext.defaultContext + .setTrustedCertificatesBytes(ascii.encode(ISRG_X1)); + } catch (e) { + _logger.severe('Error initializing ISRG_X1 certificate: $e'); + } + _logger.severe('LetsEncrypt ISRG X1 Certificate fix successfully applied.'); +} diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 88ae243..a9d8564 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -6,6 +6,7 @@ import FlutterMacOS import Foundation import desktop_window +import device_info_plus import flutter_secure_storage_macos import objectbox_flutter_libs import path_provider_foundation @@ -15,6 +16,7 @@ import url_launcher_macos func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) ObjectboxFlutterLibsPlugin.register(with: registry.registrar(forPlugin: "ObjectboxFlutterLibsPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) diff --git a/macos/Podfile.lock b/macos/Podfile.lock index 1ffa59b..1446373 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -1,6 +1,8 @@ PODS: - desktop_window (0.0.1): - FlutterMacOS + - device_info_plus (0.0.1): + - FlutterMacOS - flutter_secure_storage_macos (6.1.1): - FlutterMacOS - FlutterMacOS (1.0.0) @@ -25,6 +27,7 @@ PODS: DEPENDENCIES: - desktop_window (from `Flutter/ephemeral/.symlinks/plugins/desktop_window/macos`) + - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`) - flutter_secure_storage_macos (from `Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos`) - FlutterMacOS (from `Flutter/ephemeral`) - objectbox_flutter_libs (from `Flutter/ephemeral/.symlinks/plugins/objectbox_flutter_libs/macos`) @@ -41,6 +44,8 @@ SPEC REPOS: EXTERNAL SOURCES: desktop_window: :path: Flutter/ephemeral/.symlinks/plugins/desktop_window/macos + device_info_plus: + :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos flutter_secure_storage_macos: :path: Flutter/ephemeral/.symlinks/plugins/flutter_secure_storage_macos/macos FlutterMacOS: @@ -58,6 +63,7 @@ EXTERNAL SOURCES: SPEC CHECKSUMS: desktop_window: fb7c4f12c1129f947ac482296b6f14059d57a3c3 + device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f flutter_secure_storage_macos: 75c8cadfdba05ca007c0fa4ea0c16e5cf85e521b FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a diff --git a/pubspec.lock b/pubspec.lock index 5cf133d..b7642e9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -249,6 +249,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.4.0" + device_info_plus: + dependency: "direct main" + description: + name: device_info_plus + sha256: "7ff671ed0a6356fa8f2e1ae7d3558d3fb7b6a41e24455e4f8df75b811fb8e4ab" + url: "https://pub.dev" + source: hosted + version: "8.0.0" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 + url: "https://pub.dev" + source: hosted + version: "7.0.0" email_validator: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 83fd18e..a332a32 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -43,6 +43,7 @@ dependencies: objectbox_flutter_libs: ^1.7.1 path_provider: ^2.0.11 carousel_slider: ^4.2.1 + device_info_plus: ^8.0.0 dev_dependencies: flutter_test: