mirror of
https://gitlab.com/mysocialportal/relatica
synced 2024-10-18 11:13:31 +00:00
Merge branch 'deprecation-and-library-upgrade-fixes' into 'main'
Deprecation and library upgrade fixes See merge request mysocialportal/relatica!59
This commit is contained in:
commit
a5aa0b71ce
50 changed files with 702 additions and 658 deletions
|
@ -1,35 +1,35 @@
|
|||
PODS:
|
||||
- device_info_plus (0.0.1):
|
||||
- Flutter
|
||||
- DKImagePickerController/Core (4.3.4):
|
||||
- DKImagePickerController/Core (4.3.9):
|
||||
- DKImagePickerController/ImageDataManager
|
||||
- DKImagePickerController/Resource
|
||||
- DKImagePickerController/ImageDataManager (4.3.4)
|
||||
- DKImagePickerController/PhotoGallery (4.3.4):
|
||||
- DKImagePickerController/ImageDataManager (4.3.9)
|
||||
- DKImagePickerController/PhotoGallery (4.3.9):
|
||||
- DKImagePickerController/Core
|
||||
- DKPhotoGallery
|
||||
- DKImagePickerController/Resource (4.3.4)
|
||||
- DKPhotoGallery (0.0.17):
|
||||
- DKPhotoGallery/Core (= 0.0.17)
|
||||
- DKPhotoGallery/Model (= 0.0.17)
|
||||
- DKPhotoGallery/Preview (= 0.0.17)
|
||||
- DKPhotoGallery/Resource (= 0.0.17)
|
||||
- DKImagePickerController/Resource (4.3.9)
|
||||
- DKPhotoGallery (0.0.19):
|
||||
- DKPhotoGallery/Core (= 0.0.19)
|
||||
- DKPhotoGallery/Model (= 0.0.19)
|
||||
- DKPhotoGallery/Preview (= 0.0.19)
|
||||
- DKPhotoGallery/Resource (= 0.0.19)
|
||||
- SDWebImage
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Core (0.0.17):
|
||||
- DKPhotoGallery/Core (0.0.19):
|
||||
- DKPhotoGallery/Model
|
||||
- DKPhotoGallery/Preview
|
||||
- SDWebImage
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Model (0.0.17):
|
||||
- DKPhotoGallery/Model (0.0.19):
|
||||
- SDWebImage
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Preview (0.0.17):
|
||||
- DKPhotoGallery/Preview (0.0.19):
|
||||
- DKPhotoGallery/Model
|
||||
- DKPhotoGallery/Resource
|
||||
- SDWebImage
|
||||
- SwiftyGif
|
||||
- DKPhotoGallery/Resource (0.0.17):
|
||||
- DKPhotoGallery/Resource (0.0.19):
|
||||
- SDWebImage
|
||||
- SwiftyGif
|
||||
- file_picker (0.0.1):
|
||||
|
@ -42,9 +42,6 @@ PODS:
|
|||
- Flutter
|
||||
- flutter_web_auth_2 (3.0.0):
|
||||
- Flutter
|
||||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- image_gallery_saver (2.0.2):
|
||||
- Flutter
|
||||
- image_picker_ios (0.0.1):
|
||||
|
@ -55,10 +52,10 @@ PODS:
|
|||
- Flutter
|
||||
- media_kit_video (0.0.1):
|
||||
- Flutter
|
||||
- ObjectBox (1.9.0)
|
||||
- ObjectBox (2.0.0)
|
||||
- objectbox_flutter_libs (0.0.1):
|
||||
- Flutter
|
||||
- ObjectBox (= 1.9.0)
|
||||
- ObjectBox (= 2.0.0)
|
||||
- package_info_plus (0.4.5):
|
||||
- Flutter
|
||||
- path_provider_foundation (0.0.1):
|
||||
|
@ -66,20 +63,21 @@ PODS:
|
|||
- FlutterMacOS
|
||||
- screen_brightness_ios (0.1.0):
|
||||
- Flutter
|
||||
- SDWebImage (5.18.3):
|
||||
- SDWebImage/Core (= 5.18.3)
|
||||
- SDWebImage/Core (5.18.3)
|
||||
- SDWebImage (5.19.4):
|
||||
- SDWebImage/Core (= 5.19.4)
|
||||
- SDWebImage/Core (5.19.4)
|
||||
- shared_preferences_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- sqflite (0.0.3):
|
||||
- Flutter
|
||||
- FMDB (>= 2.7.5)
|
||||
- SwiftyGif (5.4.4)
|
||||
- FlutterMacOS
|
||||
- SwiftyGif (5.4.5)
|
||||
- url_launcher_ios (0.0.1):
|
||||
- Flutter
|
||||
- video_player_avfoundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- volume_controller (0.0.1):
|
||||
- Flutter
|
||||
- wakelock_plus (0.0.1):
|
||||
|
@ -102,9 +100,9 @@ DEPENDENCIES:
|
|||
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
|
||||
- screen_brightness_ios (from `.symlinks/plugins/screen_brightness_ios/ios`)
|
||||
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/ios`)
|
||||
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
|
||||
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
|
||||
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/ios`)
|
||||
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
|
||||
- volume_controller (from `.symlinks/plugins/volume_controller/ios`)
|
||||
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
|
||||
|
||||
|
@ -112,7 +110,6 @@ SPEC REPOS:
|
|||
trunk:
|
||||
- DKImagePickerController
|
||||
- DKPhotoGallery
|
||||
- FMDB
|
||||
- ObjectBox
|
||||
- SDWebImage
|
||||
- SwiftyGif
|
||||
|
@ -151,44 +148,43 @@ EXTERNAL SOURCES:
|
|||
shared_preferences_foundation:
|
||||
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
|
||||
sqflite:
|
||||
:path: ".symlinks/plugins/sqflite/ios"
|
||||
:path: ".symlinks/plugins/sqflite/darwin"
|
||||
url_launcher_ios:
|
||||
:path: ".symlinks/plugins/url_launcher_ios/ios"
|
||||
video_player_avfoundation:
|
||||
:path: ".symlinks/plugins/video_player_avfoundation/ios"
|
||||
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
|
||||
volume_controller:
|
||||
:path: ".symlinks/plugins/volume_controller/ios"
|
||||
wakelock_plus:
|
||||
:path: ".symlinks/plugins/wakelock_plus/ios"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
|
||||
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
|
||||
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
|
||||
file_picker: 15fd9539e4eb735dc54bae8c0534a7a9511a03de
|
||||
device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
|
||||
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
|
||||
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
|
||||
file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
|
||||
Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
|
||||
flutter_file_dialog: 4c014a45b105709a27391e266c277d7e588e9299
|
||||
flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
|
||||
flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12
|
||||
flutter_web_auth_2: 051cf9f5dc366f31b5dcc4e2952c2b954767be8a
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
image_gallery_saver: cb43cc43141711190510e92c460eb1655cd343cb
|
||||
image_picker_ios: 4a8aadfbb6dc30ad5141a2ce3832af9214a705b5
|
||||
image_picker_ios: c560581cceedb403a6ff17f2f816d7fea1421fc1
|
||||
media_kit_libs_ios_video: a5fe24bc7875ccd6378a0978c13185e1344651c1
|
||||
media_kit_native_event_loop: e6b2ab20cf0746eb1c33be961fcf79667304fa2a
|
||||
media_kit_video: 5da63f157170e5bf303bf85453b7ef6971218a2e
|
||||
ObjectBox: e7ff611291a0663380e0736b46786bcd077294ff
|
||||
objectbox_flutter_libs: 0948d6feb7de4f7edaebc7a898b9e85b7fc2bc89
|
||||
package_info_plus: 115f4ad11e0698c8c1c5d8a689390df880f47e85
|
||||
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
||||
ObjectBox: f5319bd9ad2ea960796eff7227e86471867e9ef0
|
||||
objectbox_flutter_libs: c7748f6c6fda47d22f15c8062fb8208063fd948a
|
||||
package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
screen_brightness_ios: 715ca807df953bf676d339f11464e438143ee625
|
||||
SDWebImage: 96e0c18ef14010b7485210e92fac888587ebb958
|
||||
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
|
||||
sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
|
||||
SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f
|
||||
url_launcher_ios: 68d46cc9766d0c41dbdc884310529557e3cd7a86
|
||||
video_player_avfoundation: 81e49bb3d9fb63dccf9fa0f6d877dc3ddbeac126
|
||||
SDWebImage: 066c47b573f408f18caa467d71deace7c0f8280d
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
|
||||
url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
|
||||
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
|
||||
volume_controller: 531ddf792994285c9b17f9d8a7e4dcdd29b3eae9
|
||||
wakelock_plus: 8b09852c8876491e4b6d179e17dfe2a0b5f60d47
|
||||
wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
|
||||
|
||||
PODFILE CHECKSUM: 1df1bb3ed89ef4be6115286519e24a9fad12e640
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:color_blindness/color_blindness.dart';
|
||||
import 'package:color_blindness/color_blindness_color_scheme.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
|
|
@ -63,10 +63,10 @@ class _MediaKitAvControlState extends State<MediaKitAvControl> {
|
|||
width: widget.width,
|
||||
height: widget.height,
|
||||
color: Colors.black12,
|
||||
child: Column(
|
||||
child: const Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
crossAxisAlignment: CrossAxisAlignment.center,
|
||||
children: const [
|
||||
children: [
|
||||
CircularProgressIndicator(),
|
||||
],
|
||||
),
|
||||
|
|
|
@ -27,7 +27,8 @@ class _VideoPlayerLibAvControlState extends State<VideoPlayerLibAvControl> {
|
|||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
videoPlayerController = VideoPlayerController.network(widget.videoUrl);
|
||||
videoPlayerController =
|
||||
VideoPlayerController.networkUrl(Uri.parse(widget.videoUrl));
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -70,7 +71,7 @@ class _VideoPlayerLibAvControlState extends State<VideoPlayerLibAvControl> {
|
|||
videoWidth = scaling * size.width;
|
||||
videoHeight = scaling * size.height;
|
||||
}
|
||||
print('Video Width: $videoWidth, Video Height: $videoHeight');
|
||||
|
||||
return GestureDetector(
|
||||
onTap: toggleVideoPlay,
|
||||
child: Column(
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import '../../models/connection.dart';
|
||||
|
@ -9,8 +8,6 @@ import '../../utils/active_profile_selector.dart';
|
|||
import '../image_control.dart';
|
||||
|
||||
class MentionAutocompleteOptions extends StatelessWidget {
|
||||
static final _logger = Logger('$MentionAutocompleteOptions');
|
||||
|
||||
const MentionAutocompleteOptions({
|
||||
super.key,
|
||||
required this.id,
|
||||
|
|
|
@ -46,7 +46,7 @@ class _MediaUploadEditorControlState extends State<MediaUploadEditorControl> {
|
|||
alignLabelWithHint: true,
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
@ -74,7 +74,7 @@ class _MediaUploadEditorControlState extends State<MediaUploadEditorControl> {
|
|||
alignLabelWithHint: true,
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
|
|
@ -112,7 +112,7 @@ class _MediaUploadsControlState extends State<MediaUploadsControl> {
|
|||
alignLabelWithHint: true,
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
|
|
@ -38,11 +38,15 @@ class NotificationControl extends StatelessWidget {
|
|||
}
|
||||
final loadedPost = await manager.refreshStatusChain(notification.iid);
|
||||
if (loadedPost.isSuccess) {
|
||||
context.push('/post/view/${loadedPost.value.id}/${notification.iid}');
|
||||
if (context.mounted) {
|
||||
context.push('/post/view/${loadedPost.value.id}/${notification.iid}');
|
||||
}
|
||||
return;
|
||||
}
|
||||
buildSnackbar(
|
||||
context, 'Error getting data for notification: ${loadedPost.error}');
|
||||
if (context.mounted) {
|
||||
buildSnackbar(
|
||||
context, 'Error getting data for notification: ${loadedPost.error}');
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -171,7 +175,7 @@ class NotificationControl extends StatelessWidget {
|
|||
|
||||
void _tapProcessingStarted() {
|
||||
_processingTap = true;
|
||||
Future.delayed(Duration(seconds: 10), () => _processingTap = false);
|
||||
Future.delayed(const Duration(seconds: 10), () => _processingTap = false);
|
||||
}
|
||||
|
||||
void _tapProcessingStop() {
|
||||
|
|
|
@ -5,7 +5,7 @@ import 'package:relatica/controls/padding.dart';
|
|||
import 'package:relatica/globals.dart';
|
||||
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
|
||||
|
||||
import '../../models/TimelineIdentifiers.dart';
|
||||
import '../../models/timeline_identifiers.dart';
|
||||
import '../../services/network_status_service.dart';
|
||||
import '../../services/setting_service.dart';
|
||||
import '../../services/timeline_manager.dart';
|
||||
|
|
|
@ -8,7 +8,6 @@ import 'package:result_monad/result_monad.dart';
|
|||
|
||||
import '../friendica_client/paged_response.dart';
|
||||
import '../globals.dart';
|
||||
import '../models/TimelineIdentifiers.dart';
|
||||
import '../models/auth/profile.dart';
|
||||
import '../models/circle_data.dart';
|
||||
import '../models/connection.dart';
|
||||
|
@ -22,6 +21,7 @@ import '../models/media_attachment_uploads/image_types_enum.dart';
|
|||
import '../models/search_results.dart';
|
||||
import '../models/search_types.dart';
|
||||
import '../models/timeline_entry.dart';
|
||||
import '../models/timeline_identifiers.dart';
|
||||
import '../models/user_notification.dart';
|
||||
import '../models/visibility.dart';
|
||||
import '../serializers/friendica/direct_message_friendica_extensions.dart';
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import 'package:device_preview/device_preview.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:media_kit/media_kit.dart';
|
||||
|
@ -38,7 +36,6 @@ void main() async {
|
|||
getIt.registerSingleton<LogService>(logService);
|
||||
|
||||
// await dotenv.load(fileName: '.env');
|
||||
const enablePreview = false;
|
||||
Logger.root.level = Level.OFF;
|
||||
Logger.root.onRecord.listen((event) {
|
||||
logService.add(event);
|
||||
|
@ -48,10 +45,12 @@ void main() async {
|
|||
await dependencyInjectionInitialization();
|
||||
await setupPackageInfoAndUserAgent();
|
||||
|
||||
runApp(DevicePreview(
|
||||
enabled: !kReleaseMode && enablePreview,
|
||||
builder: (context) => const App(),
|
||||
));
|
||||
// TODO Add back Device Preview once supported in Flutter 3.22+
|
||||
// runApp(DevicePreview(
|
||||
// enabled: !kReleaseMode && enablePreview,
|
||||
// builder: (context) => const App(),
|
||||
// ));
|
||||
runApp(const App());
|
||||
}
|
||||
|
||||
Future<void> setupPackageInfoAndUserAgent() async {
|
||||
|
@ -70,7 +69,6 @@ class App extends StatelessWidget {
|
|||
return AnimatedBuilder(
|
||||
builder: (context, child) {
|
||||
Logger.root.level = settingsService.logLevel;
|
||||
print('Log level: ${settingsService.logLevel}');
|
||||
return Portal(
|
||||
child: MultiProvider(
|
||||
providers: [
|
||||
|
@ -142,8 +140,9 @@ class App extends StatelessWidget {
|
|||
),
|
||||
],
|
||||
child: MaterialApp.router(
|
||||
locale: DevicePreview.locale(context),
|
||||
builder: DevicePreview.appBuilder,
|
||||
// TODO Add back Device Preview once supported in Flutter 3.22+
|
||||
// locale: DevicePreview.locale(context),
|
||||
// builder: DevicePreview.appBuilder,
|
||||
theme: buildTheme(
|
||||
brightness: Brightness.light,
|
||||
blindnessType: settingsService.colorBlindnessType,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:result_monad/src/result_monad_base.dart';
|
||||
import 'package:result_monad/result_monad.dart';
|
||||
import 'package:uuid/uuid.dart';
|
||||
|
||||
import '../exec_error.dart';
|
||||
|
|
|
@ -149,9 +149,11 @@ class OAuthCredentials implements ICredentials {
|
|||
.setStatus('Attempting getting authorization to $serverName');
|
||||
|
||||
final result = await FlutterWebAuth2.authenticate(
|
||||
url: url.toString(),
|
||||
callbackUrlScheme: redirectScheme,
|
||||
);
|
||||
url: url.toString(),
|
||||
callbackUrlScheme: redirectScheme,
|
||||
options: const FlutterWebAuth2Options(
|
||||
preferEphemeral: true,
|
||||
));
|
||||
final code = Uri.parse(result).queryParameters['code'];
|
||||
if (code == null) {
|
||||
_logger.severe(
|
||||
|
|
|
@ -5,6 +5,7 @@ class Connection {
|
|||
@Id()
|
||||
int obId;
|
||||
|
||||
@Transient()
|
||||
ConnectionStatus status;
|
||||
|
||||
int get dbStatus => status.code;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import 'TimelineIdentifiers.dart';
|
||||
import 'entry_tree_item.dart';
|
||||
import 'timeline_identifiers.dart';
|
||||
|
||||
const defaultLowestId = 9223372036854775807;
|
||||
const defaultHighestId = 0;
|
||||
|
|
|
@ -1,17 +1,17 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
// This code was generated by ObjectBox. To update it run the generator again:
|
||||
// With a Flutter package, run `flutter pub run build_runner build`.
|
||||
// With a Dart package, run `dart run build_runner build`.
|
||||
// This code was generated by ObjectBox. To update it run the generator again
|
||||
// with `dart run build_runner build`.
|
||||
// See also https://docs.objectbox.io/getting-started#generate-objectbox-code
|
||||
|
||||
// ignore_for_file: camel_case_types
|
||||
// ignore_for_file: camel_case_types, depend_on_referenced_packages
|
||||
// coverage:ignore-file
|
||||
|
||||
import 'dart:typed_data';
|
||||
|
||||
import 'package:flat_buffers/flat_buffers.dart' as fb;
|
||||
import 'package:objectbox/internal.dart'; // generated code can access "internal" functionality
|
||||
import 'package:objectbox/objectbox.dart';
|
||||
import 'package:objectbox/internal.dart'
|
||||
as obx_int; // generated code can access "internal" functionality
|
||||
import 'package:objectbox/objectbox.dart' as obx;
|
||||
import 'package:objectbox_flutter_libs/objectbox_flutter_libs.dart';
|
||||
|
||||
import 'models/connection.dart';
|
||||
|
@ -19,143 +19,158 @@ import 'models/hashtag.dart';
|
|||
|
||||
export 'package:objectbox/objectbox.dart'; // so that callers only have to import this file
|
||||
|
||||
final _entities = <ModelEntity>[
|
||||
ModelEntity(
|
||||
id: const IdUid(1, 1213035855270739890),
|
||||
final _entities = <obx_int.ModelEntity>[
|
||||
obx_int.ModelEntity(
|
||||
id: const obx_int.IdUid(1, 1213035855270739890),
|
||||
name: 'Connection',
|
||||
lastPropertyId: const IdUid(14, 7495390888349913259),
|
||||
lastPropertyId: const obx_int.IdUid(14, 7495390888349913259),
|
||||
flags: 0,
|
||||
properties: <ModelProperty>[
|
||||
ModelProperty(
|
||||
id: const IdUid(1, 4133343279264917280),
|
||||
properties: <obx_int.ModelProperty>[
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(1, 4133343279264917280),
|
||||
name: 'obId',
|
||||
type: 6,
|
||||
flags: 1),
|
||||
ModelProperty(
|
||||
id: const IdUid(2, 3393770296096844708),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(2, 3393770296096844708),
|
||||
name: 'name',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(3, 5864801995210079539),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(3, 5864801995210079539),
|
||||
name: 'handle',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(4, 2926904168461994523),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(4, 2926904168461994523),
|
||||
name: 'id',
|
||||
type: 9,
|
||||
flags: 34848,
|
||||
indexId: const IdUid(1, 8342366639839511243)),
|
||||
ModelProperty(
|
||||
id: const IdUid(5, 3621370552742492695),
|
||||
indexId: const obx_int.IdUid(1, 8342366639839511243)),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(5, 3621370552742492695),
|
||||
name: 'network',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(6, 3054748457893853359),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(6, 3054748457893853359),
|
||||
name: 'profileUrl',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(7, 3716471511430220806),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(7, 3716471511430220806),
|
||||
name: 'avatarUrl',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(8, 3334077197732145885),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(8, 3334077197732145885),
|
||||
name: 'dbStatus',
|
||||
type: 6,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(9, 7727190023732579468),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(9, 7727190023732579468),
|
||||
name: 'lastUpdateTime',
|
||||
type: 10,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(10, 7236128628019094924),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(10, 7236128628019094924),
|
||||
name: 'note',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(11, 714760695336940281),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(11, 714760695336940281),
|
||||
name: 'followerCount',
|
||||
type: 6,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(12, 4204087390924684186),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(12, 4204087390924684186),
|
||||
name: 'followingCount',
|
||||
type: 6,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(13, 6842754750534163483),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(13, 6842754750534163483),
|
||||
name: 'statusesCount',
|
||||
type: 6,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(14, 7495390888349913259),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(14, 7495390888349913259),
|
||||
name: 'lastStatus',
|
||||
type: 10,
|
||||
flags: 0)
|
||||
],
|
||||
relations: <ModelRelation>[],
|
||||
backlinks: <ModelBacklink>[]),
|
||||
ModelEntity(
|
||||
id: const IdUid(2, 8060242331335522964),
|
||||
relations: <obx_int.ModelRelation>[],
|
||||
backlinks: <obx_int.ModelBacklink>[]),
|
||||
obx_int.ModelEntity(
|
||||
id: const obx_int.IdUid(2, 8060242331335522964),
|
||||
name: 'Hashtag',
|
||||
lastPropertyId: const IdUid(4, 985152873657204249),
|
||||
lastPropertyId: const obx_int.IdUid(4, 985152873657204249),
|
||||
flags: 0,
|
||||
properties: <ModelProperty>[
|
||||
ModelProperty(
|
||||
id: const IdUid(1, 3633001791521338712),
|
||||
properties: <obx_int.ModelProperty>[
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(1, 3633001791521338712),
|
||||
name: 'id',
|
||||
type: 6,
|
||||
flags: 1),
|
||||
ModelProperty(
|
||||
id: const IdUid(2, 3468373950035339457),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(2, 3468373950035339457),
|
||||
name: 'tag',
|
||||
type: 9,
|
||||
flags: 34848,
|
||||
indexId: const IdUid(2, 6156017341759176249)),
|
||||
ModelProperty(
|
||||
id: const IdUid(3, 5102584273729210526),
|
||||
indexId: const obx_int.IdUid(2, 6156017341759176249)),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(3, 5102584273729210526),
|
||||
name: 'url',
|
||||
type: 9,
|
||||
flags: 0),
|
||||
ModelProperty(
|
||||
id: const IdUid(4, 985152873657204249),
|
||||
obx_int.ModelProperty(
|
||||
id: const obx_int.IdUid(4, 985152873657204249),
|
||||
name: 'lastUpdateTime',
|
||||
type: 10,
|
||||
flags: 0)
|
||||
],
|
||||
relations: <ModelRelation>[],
|
||||
backlinks: <ModelBacklink>[])
|
||||
relations: <obx_int.ModelRelation>[],
|
||||
backlinks: <obx_int.ModelBacklink>[])
|
||||
];
|
||||
|
||||
/// Open an ObjectBox store with the model declared in this file.
|
||||
Future<Store> openStore(
|
||||
{String? directory,
|
||||
int? maxDBSizeInKB,
|
||||
int? fileMode,
|
||||
int? maxReaders,
|
||||
bool queriesCaseSensitiveDefault = true,
|
||||
String? macosApplicationGroup}) async =>
|
||||
Store(getObjectBoxModel(),
|
||||
directory: directory ?? (await defaultStoreDirectory()).path,
|
||||
maxDBSizeInKB: maxDBSizeInKB,
|
||||
fileMode: fileMode,
|
||||
maxReaders: maxReaders,
|
||||
queriesCaseSensitiveDefault: queriesCaseSensitiveDefault,
|
||||
macosApplicationGroup: macosApplicationGroup);
|
||||
/// Shortcut for [obx.Store.new] that passes [getObjectBoxModel] and for Flutter
|
||||
/// apps by default a [directory] using `defaultStoreDirectory()` from the
|
||||
/// ObjectBox Flutter library.
|
||||
///
|
||||
/// Note: for desktop apps it is recommended to specify a unique [directory].
|
||||
///
|
||||
/// See [obx.Store.new] for an explanation of all parameters.
|
||||
///
|
||||
/// For Flutter apps, also calls `loadObjectBoxLibraryAndroidCompat()` from
|
||||
/// the ObjectBox Flutter library to fix loading the native ObjectBox library
|
||||
/// on Android 6 and older.
|
||||
Future<obx.Store> openStore(
|
||||
{String? directory,
|
||||
int? maxDBSizeInKB,
|
||||
int? maxDataSizeInKB,
|
||||
int? fileMode,
|
||||
int? maxReaders,
|
||||
bool queriesCaseSensitiveDefault = true,
|
||||
String? macosApplicationGroup}) async {
|
||||
await loadObjectBoxLibraryAndroidCompat();
|
||||
return obx.Store(getObjectBoxModel(),
|
||||
directory: directory ?? (await defaultStoreDirectory()).path,
|
||||
maxDBSizeInKB: maxDBSizeInKB,
|
||||
maxDataSizeInKB: maxDataSizeInKB,
|
||||
fileMode: fileMode,
|
||||
maxReaders: maxReaders,
|
||||
queriesCaseSensitiveDefault: queriesCaseSensitiveDefault,
|
||||
macosApplicationGroup: macosApplicationGroup);
|
||||
}
|
||||
|
||||
/// ObjectBox model definition, pass it to [Store] - Store(getObjectBoxModel())
|
||||
ModelDefinition getObjectBoxModel() {
|
||||
final model = ModelInfo(
|
||||
/// Returns the ObjectBox model definition for this project for use with
|
||||
/// [obx.Store.new].
|
||||
obx_int.ModelDefinition getObjectBoxModel() {
|
||||
final model = obx_int.ModelInfo(
|
||||
entities: _entities,
|
||||
lastEntityId: const IdUid(2, 8060242331335522964),
|
||||
lastIndexId: const IdUid(2, 6156017341759176249),
|
||||
lastRelationId: const IdUid(0, 0),
|
||||
lastSequenceId: const IdUid(0, 0),
|
||||
lastEntityId: const obx_int.IdUid(2, 8060242331335522964),
|
||||
lastIndexId: const obx_int.IdUid(2, 6156017341759176249),
|
||||
lastRelationId: const obx_int.IdUid(0, 0),
|
||||
lastSequenceId: const obx_int.IdUid(0, 0),
|
||||
retiredEntityUids: const [],
|
||||
retiredIndexUids: const [],
|
||||
retiredPropertyUids: const [],
|
||||
|
@ -164,8 +179,8 @@ ModelDefinition getObjectBoxModel() {
|
|||
modelVersionParserMinimum: 5,
|
||||
version: 1);
|
||||
|
||||
final bindings = <Type, EntityDefinition>{
|
||||
Connection: EntityDefinition<Connection>(
|
||||
final bindings = <Type, obx_int.EntityDefinition>{
|
||||
Connection: obx_int.EntityDefinition<Connection>(
|
||||
model: _entities[0],
|
||||
toOneRelations: (Connection object) => [],
|
||||
toManyRelations: (Connection object) => {},
|
||||
|
@ -199,37 +214,58 @@ ModelDefinition getObjectBoxModel() {
|
|||
fbb.finish(fbb.endTable());
|
||||
return object.obId;
|
||||
},
|
||||
objectFromFB: (Store store, ByteData fbData) {
|
||||
objectFromFB: (obx.Store store, ByteData fbData) {
|
||||
final buffer = fb.BufferContext(fbData);
|
||||
final rootOffset = buffer.derefObject(0);
|
||||
final lastStatusValue =
|
||||
const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 30);
|
||||
final obIdParam =
|
||||
const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0);
|
||||
final nameParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 6, '');
|
||||
final handleParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 8, '');
|
||||
final idParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 10, '');
|
||||
final profileUrlParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 14, '');
|
||||
final networkParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 12, '');
|
||||
final avatarUrlParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 16, '');
|
||||
final lastUpdateTimeParam = DateTime.fromMillisecondsSinceEpoch(
|
||||
const fb.Int64Reader().vTableGet(buffer, rootOffset, 20, 0));
|
||||
final noteParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 22, '');
|
||||
final followerCountParam =
|
||||
const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 24);
|
||||
final followingCountParam =
|
||||
const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 26);
|
||||
final statusesCountParam =
|
||||
const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 28);
|
||||
final lastStatusParam = lastStatusValue == null
|
||||
? null
|
||||
: DateTime.fromMillisecondsSinceEpoch(lastStatusValue);
|
||||
final object = Connection(
|
||||
obId: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0),
|
||||
name: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 6, ''),
|
||||
handle: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 8, ''),
|
||||
id: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 10, ''),
|
||||
profileUrl: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 14, ''),
|
||||
network: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 12, ''),
|
||||
avatarUrl: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 16, ''),
|
||||
lastUpdateTime: DateTime.fromMillisecondsSinceEpoch(
|
||||
const fb.Int64Reader().vTableGet(buffer, rootOffset, 20, 0)),
|
||||
note: const fb.StringReader(asciiOptimization: true).vTableGet(buffer, rootOffset, 22, ''),
|
||||
followerCount: const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 24),
|
||||
followingCount: const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 26),
|
||||
statusesCount: const fb.Int64Reader().vTableGetNullable(buffer, rootOffset, 28),
|
||||
lastStatus: lastStatusValue == null ? null : DateTime.fromMillisecondsSinceEpoch(lastStatusValue))
|
||||
..dbStatus = const fb.Int64Reader().vTableGet(buffer, rootOffset, 18, 0);
|
||||
obId: obIdParam,
|
||||
name: nameParam,
|
||||
handle: handleParam,
|
||||
id: idParam,
|
||||
profileUrl: profileUrlParam,
|
||||
network: networkParam,
|
||||
avatarUrl: avatarUrlParam,
|
||||
lastUpdateTime: lastUpdateTimeParam,
|
||||
note: noteParam,
|
||||
followerCount: followerCountParam,
|
||||
followingCount: followingCountParam,
|
||||
statusesCount: statusesCountParam,
|
||||
lastStatus: lastStatusParam)
|
||||
..dbStatus =
|
||||
const fb.Int64Reader().vTableGet(buffer, rootOffset, 18, 0);
|
||||
|
||||
return object;
|
||||
}),
|
||||
Hashtag: EntityDefinition<Hashtag>(
|
||||
Hashtag: obx_int.EntityDefinition<Hashtag>(
|
||||
model: _entities[1],
|
||||
toOneRelations: (Hashtag object) => [],
|
||||
toManyRelations: (Hashtag object) => {},
|
||||
|
@ -248,16 +284,16 @@ ModelDefinition getObjectBoxModel() {
|
|||
fbb.finish(fbb.endTable());
|
||||
return object.id;
|
||||
},
|
||||
objectFromFB: (Store store, ByteData fbData) {
|
||||
objectFromFB: (obx.Store store, ByteData fbData) {
|
||||
final buffer = fb.BufferContext(fbData);
|
||||
final rootOffset = buffer.derefObject(0);
|
||||
|
||||
final object = Hashtag(
|
||||
id: const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0),
|
||||
tag: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 6, ''),
|
||||
url: const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 8, ''))
|
||||
final idParam =
|
||||
const fb.Int64Reader().vTableGet(buffer, rootOffset, 4, 0);
|
||||
final tagParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 6, '');
|
||||
final urlParam = const fb.StringReader(asciiOptimization: true)
|
||||
.vTableGet(buffer, rootOffset, 8, '');
|
||||
final object = Hashtag(id: idParam, tag: tagParam, url: urlParam)
|
||||
..lastUpdateTime = DateTime.fromMillisecondsSinceEpoch(
|
||||
const fb.Int64Reader().vTableGet(buffer, rootOffset, 10, 0));
|
||||
|
||||
|
@ -265,79 +301,83 @@ ModelDefinition getObjectBoxModel() {
|
|||
})
|
||||
};
|
||||
|
||||
return ModelDefinition(model, bindings);
|
||||
return obx_int.ModelDefinition(model, bindings);
|
||||
}
|
||||
|
||||
/// [Connection] entity fields to define ObjectBox queries.
|
||||
class Connection_ {
|
||||
/// see [Connection.obId]
|
||||
/// See [Connection.obId].
|
||||
static final obId =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[0]);
|
||||
obx.QueryIntegerProperty<Connection>(_entities[0].properties[0]);
|
||||
|
||||
/// see [Connection.name]
|
||||
/// See [Connection.name].
|
||||
static final name =
|
||||
QueryStringProperty<Connection>(_entities[0].properties[1]);
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[1]);
|
||||
|
||||
/// see [Connection.handle]
|
||||
/// See [Connection.handle].
|
||||
static final handle =
|
||||
QueryStringProperty<Connection>(_entities[0].properties[2]);
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[2]);
|
||||
|
||||
/// see [Connection.id]
|
||||
static final id = QueryStringProperty<Connection>(_entities[0].properties[3]);
|
||||
/// See [Connection.id].
|
||||
static final id =
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[3]);
|
||||
|
||||
/// see [Connection.network]
|
||||
/// See [Connection.network].
|
||||
static final network =
|
||||
QueryStringProperty<Connection>(_entities[0].properties[4]);
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[4]);
|
||||
|
||||
/// see [Connection.profileUrl]
|
||||
/// See [Connection.profileUrl].
|
||||
static final profileUrl =
|
||||
QueryStringProperty<Connection>(_entities[0].properties[5]);
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[5]);
|
||||
|
||||
/// see [Connection.avatarUrl]
|
||||
/// See [Connection.avatarUrl].
|
||||
static final avatarUrl =
|
||||
QueryStringProperty<Connection>(_entities[0].properties[6]);
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[6]);
|
||||
|
||||
/// see [Connection.dbStatus]
|
||||
/// See [Connection.dbStatus].
|
||||
static final dbStatus =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[7]);
|
||||
obx.QueryIntegerProperty<Connection>(_entities[0].properties[7]);
|
||||
|
||||
/// see [Connection.lastUpdateTime]
|
||||
/// See [Connection.lastUpdateTime].
|
||||
static final lastUpdateTime =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[8]);
|
||||
obx.QueryDateProperty<Connection>(_entities[0].properties[8]);
|
||||
|
||||
/// see [Connection.note]
|
||||
/// See [Connection.note].
|
||||
static final note =
|
||||
QueryStringProperty<Connection>(_entities[0].properties[9]);
|
||||
obx.QueryStringProperty<Connection>(_entities[0].properties[9]);
|
||||
|
||||
/// see [Connection.followerCount]
|
||||
/// See [Connection.followerCount].
|
||||
static final followerCount =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[10]);
|
||||
obx.QueryIntegerProperty<Connection>(_entities[0].properties[10]);
|
||||
|
||||
/// see [Connection.followingCount]
|
||||
/// See [Connection.followingCount].
|
||||
static final followingCount =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[11]);
|
||||
obx.QueryIntegerProperty<Connection>(_entities[0].properties[11]);
|
||||
|
||||
/// see [Connection.statusesCount]
|
||||
/// See [Connection.statusesCount].
|
||||
static final statusesCount =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[12]);
|
||||
obx.QueryIntegerProperty<Connection>(_entities[0].properties[12]);
|
||||
|
||||
/// see [Connection.lastStatus]
|
||||
/// See [Connection.lastStatus].
|
||||
static final lastStatus =
|
||||
QueryIntegerProperty<Connection>(_entities[0].properties[13]);
|
||||
obx.QueryDateProperty<Connection>(_entities[0].properties[13]);
|
||||
}
|
||||
|
||||
/// [Hashtag] entity fields to define ObjectBox queries.
|
||||
class Hashtag_ {
|
||||
/// see [Hashtag.id]
|
||||
static final id = QueryIntegerProperty<Hashtag>(_entities[1].properties[0]);
|
||||
/// See [Hashtag.id].
|
||||
static final id =
|
||||
obx.QueryIntegerProperty<Hashtag>(_entities[1].properties[0]);
|
||||
|
||||
/// see [Hashtag.tag]
|
||||
static final tag = QueryStringProperty<Hashtag>(_entities[1].properties[1]);
|
||||
/// See [Hashtag.tag].
|
||||
static final tag =
|
||||
obx.QueryStringProperty<Hashtag>(_entities[1].properties[1]);
|
||||
|
||||
/// see [Hashtag.url]
|
||||
static final url = QueryStringProperty<Hashtag>(_entities[1].properties[2]);
|
||||
/// See [Hashtag.url].
|
||||
static final url =
|
||||
obx.QueryStringProperty<Hashtag>(_entities[1].properties[2]);
|
||||
|
||||
/// see [Hashtag.lastUpdateTime]
|
||||
/// See [Hashtag.lastUpdateTime].
|
||||
static final lastUpdateTime =
|
||||
QueryIntegerProperty<Hashtag>(_entities[1].properties[3]);
|
||||
obx.QueryDateProperty<Hashtag>(_entities[1].properties[3]);
|
||||
}
|
||||
|
|
|
@ -54,7 +54,9 @@ class _CircleAddUsersScreenState extends State<CircleAddUsersScreen> {
|
|||
onSuccess: (_) => 'Added $messageBase',
|
||||
onError: (error) => 'Error adding $messageBase: $error',
|
||||
);
|
||||
buildSnackbar(context, message);
|
||||
if (mounted) {
|
||||
buildSnackbar(context, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -81,7 +81,9 @@ class _CircleEditorScreenState extends State<CircleEditorScreen> {
|
|||
onSuccess: (_) => 'Removed $messageBase',
|
||||
onError: (error) => 'Error removing $messageBase: $error',
|
||||
);
|
||||
buildSnackbar(context, message);
|
||||
if (mounted) {
|
||||
buildSnackbar(context, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -178,7 +178,7 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
return;
|
||||
}
|
||||
|
||||
if (mounted && context.canPop()) {
|
||||
if (context.mounted && context.canPop()) {
|
||||
context.pop();
|
||||
}
|
||||
}
|
||||
|
@ -220,7 +220,7 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
return;
|
||||
}
|
||||
|
||||
if (mounted && context.canPop()) {
|
||||
if (context.mounted && context.canPop()) {
|
||||
context.pop();
|
||||
}
|
||||
}
|
||||
|
@ -254,51 +254,49 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
} else {
|
||||
final mainBody = Padding(
|
||||
padding: const EdgeInsets.all(8.0),
|
||||
child: Container(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
if (isComment && parentEntry != null)
|
||||
buildCommentPreview(context, parentEntry!),
|
||||
TextFormField(
|
||||
readOnly: isSubmitting,
|
||||
enabled: !isSubmitting && canSpoilerText,
|
||||
controller: spoilerController,
|
||||
textCapitalization: TextCapitalization.sentences,
|
||||
decoration: InputDecoration(
|
||||
labelText: canSpoilerText
|
||||
? '$statusType Spoiler Text (optional)'
|
||||
: 'Your server doesnt support $statusType Spoiler Text',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: const BorderSide(),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
mainAxisAlignment: MainAxisAlignment.start,
|
||||
children: [
|
||||
if (isComment && parentEntry != null)
|
||||
buildCommentPreview(context, parentEntry!),
|
||||
TextFormField(
|
||||
readOnly: isSubmitting,
|
||||
enabled: !isSubmitting && canSpoilerText,
|
||||
controller: spoilerController,
|
||||
textCapitalization: TextCapitalization.sentences,
|
||||
decoration: InputDecoration(
|
||||
labelText: canSpoilerText
|
||||
? '$statusType Spoiler Text (optional)'
|
||||
: 'Your server doesnt support $statusType Spoiler Text',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: const BorderSide(),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
),
|
||||
const VerticalPadding(),
|
||||
buildVisibilitySelector(context),
|
||||
const VerticalPadding(),
|
||||
buildContentField(context),
|
||||
CharacterCountWidget(
|
||||
contentController: contentController,
|
||||
linkPreviewController: linkPreviewController,
|
||||
),
|
||||
const VerticalPadding(),
|
||||
buildLinkWithPreview(context),
|
||||
const VerticalPadding(),
|
||||
GallerySelectorControl(
|
||||
entries: existingMediaItems,
|
||||
visibilityFilter: visibility,
|
||||
),
|
||||
const VerticalPadding(),
|
||||
MediaUploadsControl(
|
||||
entryMediaItems: newMediaItems,
|
||||
),
|
||||
buildButtonBar(context, manager),
|
||||
],
|
||||
),
|
||||
),
|
||||
const VerticalPadding(),
|
||||
buildVisibilitySelector(context),
|
||||
const VerticalPadding(),
|
||||
buildContentField(context),
|
||||
CharacterCountWidget(
|
||||
contentController: contentController,
|
||||
linkPreviewController: linkPreviewController,
|
||||
),
|
||||
const VerticalPadding(),
|
||||
buildLinkWithPreview(context),
|
||||
const VerticalPadding(),
|
||||
GallerySelectorControl(
|
||||
entries: existingMediaItems,
|
||||
visibilityFilter: visibility,
|
||||
),
|
||||
const VerticalPadding(),
|
||||
MediaUploadsControl(
|
||||
entryMediaItems: newMediaItems,
|
||||
),
|
||||
buildButtonBar(context, manager),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
|
@ -610,7 +608,7 @@ class _EditorScreenState extends State<EditorScreen> {
|
|||
value: CircleData.followersPseudoCircle,
|
||||
child: Text(CircleData.followersPseudoCircle.name)));
|
||||
circleMenuItems.add(DropdownMenuItem(
|
||||
value: CircleData('', ''), child: const Divider(), enabled: false));
|
||||
value: CircleData('', ''), enabled: false, child: const Divider()));
|
||||
circleMenuItems.addAll(circles.map((g) => DropdownMenuItem(
|
||||
value: g,
|
||||
child: Text(g.name),
|
||||
|
|
|
@ -133,10 +133,12 @@ class _FilterEditorScreenState extends State<FilterEditorScreen> {
|
|||
}
|
||||
|
||||
if (filteredAuthors.contains(newConnection)) {
|
||||
buildSnackbar(
|
||||
context,
|
||||
'Already filtering on ${newConnection.handle}',
|
||||
);
|
||||
if (context.mounted) {
|
||||
buildSnackbar(
|
||||
context,
|
||||
'Already filtering on ${newConnection.handle}',
|
||||
);
|
||||
}
|
||||
}
|
||||
setState(() {
|
||||
filteredAuthors.add(newConnection);
|
||||
|
|
|
@ -95,7 +95,7 @@ class GalleryBrowsersScreen extends StatelessWidget {
|
|||
StatusAndRefreshButton(
|
||||
valueListenable: nss.imageGalleryLoadingStatus,
|
||||
refreshFunction: () async => await service.updateGalleries(),
|
||||
busyColor: Theme.of(context).colorScheme.background,
|
||||
busyColor: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
]),
|
||||
body: RefreshIndicator(
|
||||
|
|
|
@ -10,7 +10,7 @@ import '../controls/responsive_max_width.dart';
|
|||
import '../controls/standard_app_drawer.dart';
|
||||
import '../controls/timeline/timeline_panel.dart';
|
||||
import '../globals.dart';
|
||||
import '../models/TimelineIdentifiers.dart';
|
||||
import '../models/timeline_identifiers.dart';
|
||||
import '../services/auth_service.dart';
|
||||
import '../services/network_status_service.dart';
|
||||
import '../services/timeline_manager.dart';
|
||||
|
|
|
@ -106,7 +106,7 @@ class _ImageEditorScreenState extends State<ImageEditorScreen> {
|
|||
context,
|
||||
'Cancel changes?',
|
||||
);
|
||||
if (ok == true && mounted) {
|
||||
if (ok == true && context.mounted) {
|
||||
context.pop();
|
||||
}
|
||||
},
|
||||
|
|
|
@ -59,7 +59,7 @@ class InteractionsViewerScreen extends StatelessWidget {
|
|||
StatusAndRefreshButton(
|
||||
valueListenable: nss.interactionsLoadingStatus,
|
||||
refreshFunction: () async => await refreshInteractors(manager),
|
||||
busyColor: Theme.of(context).colorScheme.background,
|
||||
busyColor: Theme.of(context).colorScheme.surface,
|
||||
)
|
||||
]),
|
||||
body: Center(
|
||||
|
|
|
@ -67,7 +67,7 @@ class _MediaViewerScreenState extends State<MediaViewerScreen> {
|
|||
final bytesResult =
|
||||
await RemoteFileClient(getIt<AccountsService>().currentProfile)
|
||||
.getFileBytes(attachment.uri);
|
||||
if (bytesResult.isFailure && mounted) {
|
||||
if (bytesResult.isFailure && context.mounted) {
|
||||
buildSnackbar(context,
|
||||
'Error getting full size version of file: ${bytesResult.error}');
|
||||
return;
|
||||
|
@ -75,10 +75,13 @@ class _MediaViewerScreenState extends State<MediaViewerScreen> {
|
|||
|
||||
if (Platform.isAndroid || Platform.isIOS) {
|
||||
final saveResult = await ImageGallerySaver.saveImage(bytesResult.value);
|
||||
if (saveResult['isSuccess']) {
|
||||
buildSnackbar(context, 'Image saved to gallery');
|
||||
} else {
|
||||
buildSnackbar(context, 'Unable to save to gallery, check permissions');
|
||||
if (context.mounted) {
|
||||
if (saveResult['isSuccess']) {
|
||||
buildSnackbar(context, 'Image saved to gallery');
|
||||
} else {
|
||||
buildSnackbar(
|
||||
context, 'Unable to save to gallery, check permissions');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
final location = await FilePicker.platform.saveFile(
|
||||
|
|
|
@ -113,7 +113,7 @@ class _MessageThreadScreenState extends State<MessageThreadScreen> {
|
|||
labelText: 'Reply Text',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
|
|
@ -28,7 +28,7 @@ class MessagesScreen extends StatelessWidget {
|
|||
StatusAndRefreshButton(
|
||||
valueListenable: nss.directMessageUpdateStatus,
|
||||
refreshFunction: () async => await service.updateThreads(),
|
||||
busyColor: Theme.of(context).colorScheme.background,
|
||||
busyColor: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
IconButton(
|
||||
onPressed: () {
|
||||
|
|
|
@ -29,7 +29,7 @@ class MessagesNewThread extends StatelessWidget {
|
|||
Widget buildBody(BuildContext context) {
|
||||
final border = OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
);
|
||||
|
|
|
@ -168,7 +168,9 @@ class NotificationsScreen extends StatelessWidget {
|
|||
final message = (await manager.markAllAsRead()).fold(
|
||||
onSuccess: (_) => 'Marked all notifications as read',
|
||||
onError: (error) => 'Error marking notifications: $error');
|
||||
buildSnackbar(context, message);
|
||||
if (context.mounted) {
|
||||
buildSnackbar(context, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,7 @@ class _PostScreenState extends State<PostScreen> {
|
|||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
Future.delayed(const Duration(milliseconds: 500), () async {
|
||||
getIt<ActiveProfileSelector<TimelineManager>>()
|
||||
.activeEntry
|
||||
|
|
|
@ -62,13 +62,11 @@ class _SearchScreenState extends State<SearchScreen> {
|
|||
}
|
||||
|
||||
Future<void> updateSearchResults(Profile profile, {bool reset = true}) async {
|
||||
print('Starting update');
|
||||
if (reset) {
|
||||
nextPage = PagingData(limit: limit);
|
||||
searchResult = SearchResults.empty();
|
||||
}
|
||||
|
||||
print('Search $searchType on ${searchTextController.text}');
|
||||
final result = await SearchClient(profile)
|
||||
.search(searchType, searchTextController.text, nextPage);
|
||||
result.match(
|
||||
|
@ -80,12 +78,9 @@ class _SearchScreenState extends State<SearchScreen> {
|
|||
onError: (error) =>
|
||||
buildSnackbar(context, 'Error getting search result: $error'),
|
||||
);
|
||||
|
||||
print('Ending update');
|
||||
}
|
||||
|
||||
clearSearchResults() {
|
||||
print('Clearing results');
|
||||
setState(() {
|
||||
searchResult = SearchResults.empty();
|
||||
searchTextController.text = '';
|
||||
|
@ -159,7 +154,7 @@ class _SearchScreenState extends State<SearchScreen> {
|
|||
alignLabelWithHint: true,
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
@ -329,7 +324,7 @@ class _SearchScreenState extends State<SearchScreen> {
|
|||
await cm.fullRefresh(connection);
|
||||
}
|
||||
});
|
||||
if (context.mounted) {
|
||||
if (mounted) {
|
||||
context.pushNamed(ScreenPaths.userProfile,
|
||||
pathParameters: {'id': connection.id});
|
||||
}
|
||||
|
|
|
@ -219,7 +219,7 @@ class NetworkCapabilitiesWidget extends StatelessWidget {
|
|||
}
|
||||
|
||||
return ListTile(
|
||||
title: Row(
|
||||
title: const Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text('Network Capabilities'),
|
||||
|
@ -230,7 +230,7 @@ class NetworkCapabilitiesWidget extends StatelessWidget {
|
|||
],
|
||||
),
|
||||
subtitle: DataTable(
|
||||
columns: [
|
||||
columns: const [
|
||||
DataColumn(label: Text('Network')),
|
||||
DataColumn(label: Text('React')),
|
||||
DataColumn(label: Text('Reshare')),
|
||||
|
|
|
@ -174,7 +174,7 @@ class _SignInScreenState extends State<SignInScreen> {
|
|||
hintText: 'Server Name (friendica.example.com)',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
@ -225,7 +225,7 @@ class _SignInScreenState extends State<SignInScreen> {
|
|||
'Your username on the server (not email address)',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
@ -260,7 +260,7 @@ class _SignInScreenState extends State<SignInScreen> {
|
|||
hintText: 'Password',
|
||||
border: OutlineInputBorder(
|
||||
borderSide: BorderSide(
|
||||
color: Theme.of(context).colorScheme.background,
|
||||
color: Theme.of(context).colorScheme.surface,
|
||||
),
|
||||
borderRadius: BorderRadius.circular(5.0),
|
||||
),
|
||||
|
@ -274,7 +274,7 @@ class _SignInScreenState extends State<SignInScreen> {
|
|||
onPressed: () async => await _signIn(context),
|
||||
child: const Text('Signin'),
|
||||
)
|
||||
: SizedBox(),
|
||||
: const SizedBox(),
|
||||
const VerticalPadding(),
|
||||
Text(
|
||||
'Logged out:',
|
||||
|
@ -383,14 +383,13 @@ class _SignInScreenState extends State<SignInScreen> {
|
|||
final confirm = await showYesNoDialog(context,
|
||||
'Are you sure you want to logout and delete *all* accounts? This cannot be undone.') ??
|
||||
false;
|
||||
print(confirm);
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
|
||||
await getIt<AccountsService>().clearAllProfiles();
|
||||
},
|
||||
child: Text('Clear All')),
|
||||
child: const Text('Clear All')),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
@ -438,16 +437,16 @@ class _SignInScreenState extends State<SignInScreen> {
|
|||
creds,
|
||||
withNotification: false,
|
||||
);
|
||||
if (mounted && result.isFailure) {
|
||||
if (context.mounted && result.isFailure) {
|
||||
buildSnackbar(context, 'Error signing in: ${result.error}');
|
||||
return;
|
||||
}
|
||||
|
||||
if (mounted) {
|
||||
if (context.mounted) {
|
||||
buildSnackbar(context, 'Account signed in...');
|
||||
}
|
||||
await getIt<AccountsService>().setActiveProfile(result.value);
|
||||
if (mounted) {
|
||||
if (context.mounted) {
|
||||
context.goNamed(ScreenPaths.timelines);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import '../controls/linear_status_indicator.dart';
|
|||
import '../controls/standard_appbar.dart';
|
||||
import '../controls/timeline/timeline_panel.dart';
|
||||
import '../globals.dart';
|
||||
import '../models/TimelineIdentifiers.dart';
|
||||
import '../models/timeline_identifiers.dart';
|
||||
import '../services/network_status_service.dart';
|
||||
import '../services/timeline_manager.dart';
|
||||
import '../utils/active_profile_selector.dart';
|
||||
|
|
|
@ -189,7 +189,7 @@ class _UserProfileScreenState extends State<UserProfileScreen> {
|
|||
} else {
|
||||
await manager.removeUserFromCircle(g, profile);
|
||||
}
|
||||
if (mounted) {
|
||||
if (context.mounted) {
|
||||
buildSnackbar(context, "User's Circles Updated");
|
||||
}
|
||||
|
||||
|
|
|
@ -322,7 +322,7 @@ class ConnectionsManager extends ChangeNotifier {
|
|||
Result<List<CircleData>, ExecError> getCirclesForUser(String id) {
|
||||
final result = circlesRepo.getCirclesForUser(id);
|
||||
if (result.isSuccess) {
|
||||
print("Circles for user $id: $result");
|
||||
_logger.finer("Circles for user $id: $result");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -6,13 +6,13 @@ import 'package:result_monad/result_monad.dart';
|
|||
import '../friendica_client/friendica_client.dart';
|
||||
import '../friendica_client/paging_data.dart';
|
||||
import '../globals.dart';
|
||||
import '../models/TimelineIdentifiers.dart';
|
||||
import '../models/auth/profile.dart';
|
||||
import '../models/entry_tree_item.dart';
|
||||
import '../models/exec_error.dart';
|
||||
import '../models/image_entry.dart';
|
||||
import '../models/media_attachment_uploads/new_entry_media_items.dart';
|
||||
import '../models/timeline_entry.dart';
|
||||
import '../models/timeline_identifiers.dart';
|
||||
import '../models/visibility.dart';
|
||||
import '../utils/active_profile_selector.dart';
|
||||
import 'media_upload_attachment_helper.dart';
|
||||
|
|
|
@ -80,8 +80,9 @@ class NotificationsManager extends ChangeNotifier {
|
|||
|
||||
first = false;
|
||||
result.match(
|
||||
onSuccess: (nd) => print('Got ${nd.data.length} notifications'),
|
||||
onError: (e) => debugPrint('Error getting notification: $e'));
|
||||
onSuccess: (nd) =>
|
||||
_logger.fine('Got ${nd.data.length} notifications'),
|
||||
onError: (e) => _logger.severe('Error getting notification: $e'));
|
||||
final response = result.getValueOrElse(() => PagedResponse([]));
|
||||
response.data
|
||||
.where((n) =>
|
||||
|
|
|
@ -4,7 +4,6 @@ import 'package:result_monad/result_monad.dart';
|
|||
|
||||
import '../data/interfaces/circles_repo_intf.dart';
|
||||
import '../friendica_client/friendica_client.dart';
|
||||
import '../models/TimelineIdentifiers.dart';
|
||||
import '../models/auth/profile.dart';
|
||||
import '../models/circle_data.dart';
|
||||
import '../models/entry_tree_item.dart';
|
||||
|
@ -13,6 +12,7 @@ import '../models/image_entry.dart';
|
|||
import '../models/media_attachment_uploads/new_entry_media_items.dart';
|
||||
import '../models/timeline.dart';
|
||||
import '../models/timeline_entry.dart';
|
||||
import '../models/timeline_identifiers.dart';
|
||||
import '../models/visibility.dart';
|
||||
import 'entry_manager_service.dart';
|
||||
|
||||
|
|
|
@ -2,10 +2,10 @@ import '../models/entry_tree_item.dart';
|
|||
import '../models/flattened_tree_item.dart';
|
||||
|
||||
extension FlatteningExtensions on EntryTreeItem {
|
||||
static const BaseLevel = 0;
|
||||
static const baseLevel = 0;
|
||||
|
||||
List<FlattenedTreeItem> flatten(
|
||||
{int level = BaseLevel, bool topLevelOnly = false}) {
|
||||
{int level = baseLevel, bool topLevelOnly = false}) {
|
||||
final items = <FlattenedTreeItem>[];
|
||||
final myEntry = FlattenedTreeItem(
|
||||
timelineEntry: entry,
|
||||
|
@ -23,7 +23,7 @@ extension FlatteningExtensions on EntryTreeItem {
|
|||
c1.entry.creationTimestamp.compareTo(c2.entry.creationTimestamp));
|
||||
for (final child in sortedChildren) {
|
||||
int childLevel = level + 1;
|
||||
if (child.entry.authorId == entry.authorId && level != BaseLevel) {
|
||||
if (child.entry.authorId == entry.authorId && level != baseLevel) {
|
||||
childLevel = level;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,19 +38,21 @@ void _updateSwapTagLinks(Node node, List<String> tags) {
|
|||
if (hasExpectedTag) {
|
||||
final profile = getIt<AccountsService>().currentProfile;
|
||||
final newTagUrl = generateTagUrlFromProfile(profile, tag);
|
||||
print(node.attributes['href']);
|
||||
node.attributes['href'] = newTagUrl.toString();
|
||||
print(node.attributes['href']);
|
||||
}
|
||||
}
|
||||
node.nodes.forEach((n) => _updateSwapTagLinks(n, tags));
|
||||
for (var n in node.nodes) {
|
||||
_updateSwapTagLinks(n, tags);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
String htmlWithTagLinkSwap(String htmlContentFragment, List<String> tags) {
|
||||
try {
|
||||
final dom = parseFragment(htmlContentFragment);
|
||||
dom.nodes.forEach((n) => _updateSwapTagLinks(n, tags));
|
||||
for (var n in dom.nodes) {
|
||||
_updateSwapTagLinks(n, tags);
|
||||
}
|
||||
|
||||
final result = dom.outerHtml;
|
||||
return result;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:collection/collection.dart' show MapEquality;
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:result_monad/result_monad.dart';
|
||||
|
@ -149,7 +149,6 @@ class _ExpiringRequestCache {
|
|||
response,
|
||||
);
|
||||
|
||||
print('Adding cached response for $type => $url');
|
||||
_responses[cacheEntry] = cacheEntry;
|
||||
}
|
||||
|
||||
|
|
|
@ -19,6 +19,7 @@ import screen_brightness_macos
|
|||
import shared_preferences_foundation
|
||||
import sqflite
|
||||
import url_launcher_macos
|
||||
import video_player_avfoundation
|
||||
import wakelock_plus
|
||||
import window_to_front
|
||||
|
||||
|
@ -37,6 +38,7 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
|
|||
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))
|
||||
SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin"))
|
||||
UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin"))
|
||||
FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin"))
|
||||
WakelockPlusMacosPlugin.register(with: registry.registrar(forPlugin: "WakelockPlusMacosPlugin"))
|
||||
WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin"))
|
||||
}
|
||||
|
|
|
@ -10,19 +10,16 @@ PODS:
|
|||
- flutter_web_auth_2 (3.0.0):
|
||||
- FlutterMacOS
|
||||
- FlutterMacOS (1.0.0)
|
||||
- FMDB (2.7.5):
|
||||
- FMDB/standard (= 2.7.5)
|
||||
- FMDB/standard (2.7.5)
|
||||
- media_kit_libs_macos_video (1.0.4):
|
||||
- FlutterMacOS
|
||||
- media_kit_native_event_loop (1.0.0):
|
||||
- FlutterMacOS
|
||||
- media_kit_video (0.0.1):
|
||||
- FlutterMacOS
|
||||
- ObjectBox (1.9.0)
|
||||
- ObjectBox (2.0.0)
|
||||
- objectbox_flutter_libs (0.0.1):
|
||||
- FlutterMacOS
|
||||
- ObjectBox (= 1.9.0)
|
||||
- ObjectBox (= 2.0.0)
|
||||
- package_info_plus (0.0.1):
|
||||
- FlutterMacOS
|
||||
- path_provider_foundation (0.0.1):
|
||||
|
@ -33,11 +30,14 @@ PODS:
|
|||
- shared_preferences_foundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- sqflite (0.0.2):
|
||||
- sqflite (0.0.3):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- FMDB (>= 2.7.5)
|
||||
- url_launcher_macos (0.0.1):
|
||||
- FlutterMacOS
|
||||
- video_player_avfoundation (0.0.1):
|
||||
- Flutter
|
||||
- FlutterMacOS
|
||||
- wakelock_plus (0.0.1):
|
||||
- FlutterMacOS
|
||||
- window_to_front (0.0.1):
|
||||
|
@ -58,14 +58,14 @@ DEPENDENCIES:
|
|||
- path_provider_foundation (from `Flutter/ephemeral/.symlinks/plugins/path_provider_foundation/darwin`)
|
||||
- screen_brightness_macos (from `Flutter/ephemeral/.symlinks/plugins/screen_brightness_macos/macos`)
|
||||
- shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`)
|
||||
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`)
|
||||
- sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`)
|
||||
- url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`)
|
||||
- video_player_avfoundation (from `Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin`)
|
||||
- wakelock_plus (from `Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos`)
|
||||
- window_to_front (from `Flutter/ephemeral/.symlinks/plugins/window_to_front/macos`)
|
||||
|
||||
SPEC REPOS:
|
||||
trunk:
|
||||
- FMDB
|
||||
- ObjectBox
|
||||
|
||||
EXTERNAL SOURCES:
|
||||
|
@ -98,9 +98,11 @@ EXTERNAL SOURCES:
|
|||
shared_preferences_foundation:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin
|
||||
sqflite:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin
|
||||
url_launcher_macos:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos
|
||||
video_player_avfoundation:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/video_player_avfoundation/darwin
|
||||
wakelock_plus:
|
||||
:path: Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos
|
||||
window_to_front:
|
||||
|
@ -108,23 +110,23 @@ EXTERNAL SOURCES:
|
|||
|
||||
SPEC CHECKSUMS:
|
||||
desktop_window: fb7c4f12c1129f947ac482296b6f14059d57a3c3
|
||||
device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
|
||||
file_selector_macos: 468fb6b81fac7c0e88d71317f3eec34c3b008ff9
|
||||
flutter_secure_storage_macos: d56e2d218c1130b262bef8b4a7d64f88d7f9c9ea
|
||||
device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720
|
||||
file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2
|
||||
flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9
|
||||
flutter_web_auth_2: 2e1dc2d2139973e4723c5286ce247dd590390d70
|
||||
FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24
|
||||
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
|
||||
media_kit_libs_macos_video: b3e2bbec2eef97c285f2b1baa7963c67c753fb82
|
||||
media_kit_native_event_loop: 81fd5b45192b72f8b5b69eaf5b540f45777eb8d5
|
||||
media_kit_video: c75b07f14d59706c775778e4dd47dd027de8d1e5
|
||||
ObjectBox: e7ff611291a0663380e0736b46786bcd077294ff
|
||||
objectbox_flutter_libs: 32997857c213cbcc6f9b25ffc73e1e3c34ea3c8e
|
||||
package_info_plus: 02d7a575e80f194102bef286361c6c326e4c29ce
|
||||
path_provider_foundation: 29f094ae23ebbca9d3d0cec13889cd9060c0e943
|
||||
ObjectBox: f5319bd9ad2ea960796eff7227e86471867e9ef0
|
||||
objectbox_flutter_libs: 8ce2ac829cfbbc62ad4764a0d219786d098b1afa
|
||||
package_info_plus: fa739dd842b393193c5ca93c26798dff6e3d0e0c
|
||||
path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
|
||||
screen_brightness_macos: 2d6d3af2165592d9a55ffcd95b7550970e41ebda
|
||||
shared_preferences_foundation: 5b919d13b803cadd15ed2dc053125c68730e5126
|
||||
sqflite: a5789cceda41d54d23f31d6de539d65bb14100ea
|
||||
url_launcher_macos: d2691c7dd33ed713bf3544850a623080ec693d95
|
||||
shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
|
||||
sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
|
||||
url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399
|
||||
video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
|
||||
wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269
|
||||
window_to_front: 4cdc24ddd8461ad1a55fa06286d6a79d8b29e8d8
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<true/>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)T69YZGT58U.relatica</string>
|
||||
<string>T69YZGT58U.relatica</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<true/>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)T69YZGT58U.relatica</string>
|
||||
<string>T69YZGT58U.relatica</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<true/>
|
||||
<key>keychain-access-groups</key>
|
||||
<array>
|
||||
<string>$(AppIdentifierPrefix)T69YZGT58U.relatica</string>
|
||||
<string>T69YZGT58U.relatica</string>
|
||||
</array>
|
||||
</dict>
|
||||
</plist>
|
||||
|
|
528
pubspec.lock
528
pubspec.lock
File diff suppressed because it is too large
Load diff
83
pubspec.yaml
83
pubspec.yaml
|
@ -5,64 +5,65 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
|||
version: 0.12.0+7
|
||||
|
||||
environment:
|
||||
sdk: '>=3.0.0 <4.0.0'
|
||||
sdk: '>=3.2.0 <4.0.0'
|
||||
|
||||
dependencies:
|
||||
flutter:
|
||||
sdk: flutter
|
||||
cached_network_image: ^3.2.2
|
||||
color_blindness: ^0.1.2
|
||||
cupertino_icons: ^1.0.2
|
||||
cached_network_image: ^3.3.1
|
||||
color_blindness: ^0.2.0
|
||||
cupertino_icons: ^1.0.8
|
||||
carousel_slider: ^4.2.1
|
||||
desktop_window: ^0.4.0
|
||||
device_info_plus: ^9.1.0
|
||||
device_preview: ^1.1.0
|
||||
file_picker: ^6.0.0
|
||||
flutter_dotenv: ^5.0.2
|
||||
flutter_file_dialog: ^3.0.0
|
||||
flutter_secure_storage: ^9.0.0
|
||||
flutter_web_auth_2: ^3.0.3
|
||||
flutter_widget_from_html_core: ^0.14.6
|
||||
get_it: ^7.2.0
|
||||
get_it_mixin: ^4.1.1
|
||||
go_router: ^12.0.1
|
||||
html: ^0.15.2
|
||||
image: ^4.0.15
|
||||
image_picker: ^1.0.4
|
||||
logging: ^1.1.0
|
||||
markdown: ^7.0.1
|
||||
device_info_plus: ^10.1.0
|
||||
# device_preview: ^1.1.0
|
||||
file_picker: ^8.0.6
|
||||
flutter_dotenv: ^5.1.0
|
||||
flutter_file_dialog: ^3.0.2
|
||||
flutter_secure_storage: ^9.2.2
|
||||
flutter_web_auth_2: ^3.1.2
|
||||
flutter_widget_from_html_core: ^0.15.1
|
||||
get_it: ^7.7.0
|
||||
get_it_mixin: ^4.2.2
|
||||
go_router: ^14.1.2
|
||||
html: ^0.15.4
|
||||
image: ^4.2.0
|
||||
image_picker: ^1.1.2
|
||||
logging: ^1.2.0
|
||||
markdown: ^7.2.2
|
||||
## TODO Media Kit Update
|
||||
media_kit: ^1.1.10 # Primary package.
|
||||
media_kit_libs_video: ^1.0.4 # Native video dependencies.
|
||||
media_kit_video: ^1.2.4 # For video rendering.
|
||||
multi_trigger_autocomplete: ^1.0.0
|
||||
network_to_file_image: ^4.0.1
|
||||
objectbox: ^2.3.1
|
||||
objectbox_flutter_libs: ^2.3.1
|
||||
path: ^1.8.2
|
||||
path_provider: ^2.0.11
|
||||
provider: ^6.0.4
|
||||
result_monad:
|
||||
git:
|
||||
url: https://gitlab.com/HankG/dart-result-monad.git
|
||||
scrollable_positioned_list: ^0.3.5
|
||||
shared_preferences: ^2.0.15
|
||||
sqlite3: ^2.1.0
|
||||
stack_trace: ^1.11.0
|
||||
string_validator: ^1.0.2
|
||||
network_to_file_image: ^6.0.1
|
||||
objectbox: ^4.0.1
|
||||
objectbox_flutter_libs: ^4.0.1
|
||||
path: ^1.9.0
|
||||
path_provider: ^2.1.3
|
||||
provider: ^6.1.2
|
||||
result_monad: ^2.3.2
|
||||
scrollable_positioned_list: ^0.3.8
|
||||
shared_preferences: ^2.2.3
|
||||
sqlite3: ^2.4.3
|
||||
stack_trace: ^1.11.1
|
||||
string_validator: ^1.1.0
|
||||
time_machine: ^0.9.17
|
||||
url_launcher: ^6.1.6
|
||||
uuid: ^4.1.0
|
||||
video_player: ^2.4.10
|
||||
flutter_svg: ^2.0.5
|
||||
url_launcher: ^6.3.0
|
||||
uuid: ^4.4.2
|
||||
video_player: ^2.9.1
|
||||
flutter_svg: ^2.0.10+1
|
||||
image_gallery_saver: ^2.0.3
|
||||
|
||||
|
||||
http: any
|
||||
http_parser: any
|
||||
dev_dependencies:
|
||||
flutter_test:
|
||||
sdk: flutter
|
||||
flutter_lints: ^3.0.0
|
||||
build_runner: ^2.3.3
|
||||
objectbox_generator: ^2.0.0
|
||||
flutter_lints: ^4.0.0
|
||||
build_runner: ^2.4.10
|
||||
objectbox_generator: ^4.0.1
|
||||
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
|
|
Loading…
Reference in a new issue