diff --git a/android/app/build.gradle b/android/app/build.gradle index 936e6f7..434d2f1 100755 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -1,3 +1,9 @@ +plugins { + id "com.android.application" + id "kotlin-android" + id "dev.flutter.flutter-gradle-plugin" +} + def localProperties = new Properties() def localPropertiesFile = rootProject.file('local.properties') if (localPropertiesFile.exists()) { @@ -6,10 +12,10 @@ if (localPropertiesFile.exists()) { } } -def flutterRoot = localProperties.getProperty('flutter.sdk') -if (flutterRoot == null) { - throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") -} +//def flutterRoot = localProperties.getProperty('flutter.sdk') +//if (flutterRoot == null) { +// throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.") +//} def flutterVersionCode = localProperties.getProperty('flutter.versionCode') if (flutterVersionCode == null) { @@ -21,9 +27,9 @@ if (flutterVersionName == null) { flutterVersionName = '1.0' } -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' -apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" +//apply plugin: 'com.android.application' +//apply plugin: 'kotlin-android' +//apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { namespace "com.example.together_mobile" @@ -31,7 +37,7 @@ android { // flutter_local_notifications needed: // The 33 (Android 13) is minimal version to display a prompt to ask // notification permission - compileSdkVersion 33 + compileSdkVersion 34 ndkVersion flutter.ndkVersion compileOptions { @@ -61,7 +67,7 @@ android { // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration. // minSdkVersion flutter.minSdkVersion // device_info_plugin requires a higher android sdk version - minSdkVersion 19 + minSdkVersion 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName @@ -83,8 +89,8 @@ flutter { } dependencies { - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" - // flutter_local_notifications: solve the problem that enabling desugaring +// implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + // flutter_local_notifications: solve the problem that enabling desugaring // may result in a Flutter app crashing on Android 12L and above // Default but also flutter_local_notifications needs implementation 'androidx.window:window:1.0.0' diff --git a/android/build.gradle b/android/build.gradle index 57317d0..366d15b 100755 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,20 +1,30 @@ -buildscript { - ext.kotlin_version = '1.7.10' - repositories { - google() - mavenCentral() - } +// diminish warning of "Deprecated imperative apply of Flutter's Gradle plugins" +// https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply - dependencies { - classpath 'com.android.tools.build:gradle:7.4.2' - // flutter_local_notifications - // classpath 'com.android.tools.build:gradle:4.2.2' - classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - } -} +//buildscript { +// ext.kotlin_version = '1.7.10' +// repositories { +// google() +// mavenCentral() +// } +// +// dependencies { +// classpath 'com.android.tools.build:gradle:7.4.2' +// // flutter_local_notifications +// // classpath 'com.android.tools.build:gradle:4.2.2' +// classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" +// } +//} allprojects { repositories { + maven { url "https://jitpack.io" } + maven { url 'https://maven.aliyun.com/repository/releases' } + maven { url 'https://maven.aliyun.com/repository/jcenter' } + maven { url 'https://maven.aliyun.com/repository/google' } + maven { url 'https://maven.aliyun.com/repository/central' } + maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } + maven { url 'https://maven.aliyun.com/repository/public' } google() mavenCentral() } diff --git a/android/gradle.properties b/android/gradle.properties index 94adc3a..66afeda 100755 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,3 +1,7 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true +systemProp.https.proxyHost=127.0.0.1 +systemProp.https.proxyPort=2340 +systemProp.http.proxyHost=127.0.0.1 +systemProp.http.proxyPort=2340 diff --git a/android/settings.gradle b/android/settings.gradle index 44e62bc..feebde5 100755 --- a/android/settings.gradle +++ b/android/settings.gradle @@ -1,11 +1,35 @@ -include ':app' +pluginManagement { + def flutterSdkPath = { + def properties = new Properties() + file("local.properties").withInputStream { properties.load(it) } + def flutterSdkPath = properties.getProperty("flutter.sdk") + assert flutterSdkPath != null, "flutter.sdk not set in local.properties" + return flutterSdkPath + }() -def localPropertiesFile = new File(rootProject.projectDir, "local.properties") -def properties = new Properties() + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") -assert localPropertiesFile.exists() -localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) } + repositories { + maven { url "https://jitpack.io" } + maven { url 'https://maven.aliyun.com/repository/releases' } + maven { url 'https://maven.aliyun.com/repository/jcenter' } + maven { url 'https://maven.aliyun.com/repository/google' } + maven { url 'https://maven.aliyun.com/repository/central' } + maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } + maven { url 'https://maven.aliyun.com/repository/public' } + google() + mavenCentral() + gradlePluginPortal() + } +} -def flutterSdkPath = properties.getProperty("flutter.sdk") -assert flutterSdkPath != null, "flutter.sdk not set in local.properties" -apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle" +plugins { + id "dev.flutter.flutter-plugin-loader" version "1.0.0" + id "com.android.application" version "7.4.2" apply false + id "org.jetbrains.kotlin.android" version "1.7.10" apply false +} + +include ":app" + +// diminish warning of "Deprecated imperative apply of Flutter's Gradle plugins" +// https://docs.flutter.dev/release/breaking-changes/flutter-gradle-plugin-apply diff --git a/lib/request/server.dart b/lib/request/server.dart index 11ae21b..6379f29 100755 --- a/lib/request/server.dart +++ b/lib/request/server.dart @@ -46,8 +46,8 @@ var request = Dio(baseOptions) } }, onError: (DioException e, ErrorInterceptorHandler handler) { - // print('错误信息:' + e.response?.data); - // print('错误码: ${e.response?.statusCode}'); + print('错误信息:' + e.response?.data); + print('错误码: ${e.response?.statusCode}'); handler.reject(e); }, ), diff --git a/lib/router/chat_route.dart b/lib/router/chat_route.dart index 92b3a33..8b5e923 100644 --- a/lib/router/chat_route.dart +++ b/lib/router/chat_route.dart @@ -21,14 +21,14 @@ final chatRoute = GoRoute( name: 'Message', parentNavigatorKey: rootNavigatorKey, builder: (context, state) { - int type = int.parse(state.queryParameters['type']!); + int type = int.parse(state.uri.queryParameters['type']!); if (type == 0) { return FriendMessageScreen( - friendId: state.queryParameters['friendId']!, + friendId: state.uri.queryParameters['friendId']!, ); } else { return GroupChatMessageScreen( - groupChatId: state.queryParameters['groupChatId']!, + groupChatId: state.uri.queryParameters['groupChatId']!, ); } }, diff --git a/lib/router/contact_route.dart b/lib/router/contact_route.dart index a68abe5..014e1f8 100644 --- a/lib/router/contact_route.dart +++ b/lib/router/contact_route.dart @@ -28,8 +28,8 @@ final contactRoute = GoRoute( path: '/contact', name: 'Contact', builder: (context, state) { - if (state.queryParameters.isNotEmpty) { - var deletedFriendId = state.queryParameters['deletedFriendId']; + if (state.uri.queryParameters.isNotEmpty) { + var deletedFriendId = state.uri.queryParameters['deletedFriendId']; if (deletedFriendId != null) { getIt.get().removeFriend(deletedFriendId); getIt.get().removeFriend(deletedFriendId); @@ -53,7 +53,7 @@ final contactRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return AddFriendScreen( - accountProfile: state.queryParameters, + accountProfile: state.uri.queryParameters, ); }, ), @@ -79,7 +79,7 @@ final contactRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ApplicantProfileScreen( - accountProfile: state.queryParameters, + accountProfile: state.uri.queryParameters, ); }, ), diff --git a/lib/router/profile_router.dart b/lib/router/profile_router.dart index e5f5e79..b3ad906 100644 --- a/lib/router/profile_router.dart +++ b/lib/router/profile_router.dart @@ -33,7 +33,7 @@ final myProfileRoute = GoRoute( return AvatarViewScreen( isMyself: true, avatarType: AvatarType.user, - avatar: state.queryParameters['avatar']!, + avatar: state.uri.queryParameters['avatar']!, ); }, ), @@ -70,7 +70,7 @@ final friendProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return FriendProfileScreen( - friendId: state.queryParameters['friendId']!, + friendId: state.uri.queryParameters['friendId']!, ); }, routes: [ @@ -82,7 +82,7 @@ final friendProfileRoute = GoRoute( return AvatarViewScreen( isMyself: false, avatarType: AvatarType.user, - avatar: state.queryParameters['avatar']!, + avatar: state.uri.queryParameters['avatar']!, ); }, ), @@ -92,7 +92,7 @@ final friendProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return FriendSettingScreen( - friendId: state.queryParameters['friendId']!, + friendId: state.uri.queryParameters['friendId']!, ); }, ), @@ -105,7 +105,7 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return GroupChatProfileScreen( - groupChatId: state.queryParameters['groupChatId']!, + groupChatId: state.uri.queryParameters['groupChatId']!, ); }, routes: [ @@ -115,7 +115,7 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return GroupChatOutlineScreen( - groupChatId: state.queryParameters['groupChatId']!, + groupChatId: state.uri.queryParameters['groupChatId']!, ); }, ), @@ -125,7 +125,7 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return InviteGroupChatMemberScreen( - groupChatId: state.queryParameters['groupChatId']!, + groupChatId: state.uri.queryParameters['groupChatId']!, ); }, ), @@ -135,7 +135,7 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatAvatarScreen( - groupChatId: state.queryParameters['groupChatId']!, + groupChatId: state.uri.queryParameters['groupChatId']!, ); }, ), @@ -145,8 +145,8 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatNameScreen( - groupChatId: state.queryParameters['groupChatId']!, - name: state.queryParameters['name']!, + groupChatId: state.uri.queryParameters['groupChatId']!, + name: state.uri.queryParameters['name']!, ); }, ), @@ -156,8 +156,8 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatIntroScreen( - groupChatId: state.queryParameters['groupChatId']!, - intro: state.queryParameters['intro']!, + groupChatId: state.uri.queryParameters['groupChatId']!, + intro: state.uri.queryParameters['intro']!, ); }, ), @@ -167,8 +167,8 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeGroupChatRemarkScreen( - groupChatId: state.queryParameters['groupChatId']!, - nameRemark: state.queryParameters['groupChatRemark']!, + groupChatId: state.uri.queryParameters['groupChatId']!, + nameRemark: state.uri.queryParameters['groupChatRemark']!, ); }, ), @@ -178,8 +178,8 @@ final groupChatProfileRoute = GoRoute( parentNavigatorKey: rootNavigatorKey, builder: (context, state) { return ChangeMyRemarkScreen( - groupChatId: state.queryParameters['groupChatId']!, - myRemark: state.queryParameters['remarkInGroupChat']!, + groupChatId: state.uri.queryParameters['groupChatId']!, + myRemark: state.uri.queryParameters['remarkInGroupChat']!, ); }, ), diff --git a/lib/router/router.dart b/lib/router/router.dart index dcca18d..8757d0e 100755 --- a/lib/router/router.dart +++ b/lib/router/router.dart @@ -42,6 +42,8 @@ final GoRouter router = GoRouter( getIt.get().init(res['data']); await HiveDatabase.init(); return '/chat'; + } else { + return null; } } return null; diff --git a/lib/screens/group_chat_profile/change_group_chat_screen/change_group_chat_avatar_screen.dart b/lib/screens/group_chat_profile/change_group_chat_screen/change_group_chat_avatar_screen.dart index 9d77d2d..73e2657 100755 --- a/lib/screens/group_chat_profile/change_group_chat_screen/change_group_chat_avatar_screen.dart +++ b/lib/screens/group_chat_profile/change_group_chat_screen/change_group_chat_avatar_screen.dart @@ -5,10 +5,10 @@ import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:cherry_toast/cherry_toast.dart'; - import 'package:image_picker/image_picker.dart'; import 'package:image_editor_plus/image_editor_plus.dart'; -import 'package:image_editor_plus/utils.dart'; +import 'package:image_editor_plus/options.dart' as iepo; + import 'package:together_mobile/common/constants.dart'; import 'package:together_mobile/models/contact_model.dart'; import 'package:together_mobile/models/route_state_model.dart'; @@ -159,7 +159,7 @@ class _ChangeGroupChatAvatarScreenState MaterialPageRoute( builder: (context) => ImageCropper( availableRatios: const [ - AspectRatioOption(ratio: 1, title: '1:1') + iepo.AspectRatio(ratio: 1, title: '1:1') ], image: imageData, ), diff --git a/lib/screens/home/home_screen.dart b/lib/screens/home/home_screen.dart index a8623ae..dddc69c 100755 --- a/lib/screens/home/home_screen.dart +++ b/lib/screens/home/home_screen.dart @@ -136,7 +136,7 @@ class _HomeScreenWithNavBarState extends State AndroidFlutterLocalNotificationsPlugin>(); final bool? grantedNotificationPermission = - await androidImplementation?.requestPermission(); + await androidImplementation?.requestNotificationsPermission(); setState(() { _notificationsEnabled = grantedNotificationPermission ?? false; }); diff --git a/lib/screens/my_profile/change_profile_screen/change_my_avatar_screen.dart b/lib/screens/my_profile/change_profile_screen/change_my_avatar_screen.dart index de53ac1..eda528d 100644 --- a/lib/screens/my_profile/change_profile_screen/change_my_avatar_screen.dart +++ b/lib/screens/my_profile/change_profile_screen/change_my_avatar_screen.dart @@ -5,10 +5,10 @@ import 'package:flutter/material.dart'; import 'package:cached_network_image/cached_network_image.dart'; import 'package:cherry_toast/cherry_toast.dart'; - import 'package:image_picker/image_picker.dart'; import 'package:image_editor_plus/image_editor_plus.dart'; -import 'package:image_editor_plus/utils.dart'; +import 'package:image_editor_plus/options.dart' as iepo; + import 'package:together_mobile/common/constants.dart'; import 'package:together_mobile/models/route_state_model.dart'; import 'package:together_mobile/request/server.dart'; @@ -139,7 +139,7 @@ class _ChangeMyAvatarScreenState extends State { MaterialPageRoute( builder: (context) => ImageCropper( availableRatios: const [ - AspectRatioOption(ratio: 1, title: '1:1') + iepo.AspectRatio(ratio: 1, title: '1:1') ], image: imageData, ), diff --git a/lib/use_image_picker.dart b/lib/use_image_picker.dart deleted file mode 100755 index 73ddf07..0000000 --- a/lib/use_image_picker.dart +++ /dev/null @@ -1,514 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// ignore_for_file: public_member_api_docs - -import 'dart:async'; -import 'dart:io'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/material.dart'; -import 'package:image_picker/image_picker.dart'; -import 'package:video_player/video_player.dart'; - -void main() { - runApp(const MyApp()); -} - -class MyApp extends StatelessWidget { - const MyApp({super.key}); - - @override - Widget build(BuildContext context) { - return const MaterialApp( - title: 'Image Picker Demo', - home: MyHomePage(title: 'Image Picker Example'), - ); - } -} - -class MyHomePage extends StatefulWidget { - const MyHomePage({super.key, this.title}); - - final String? title; - - @override - State createState() => _MyHomePageState(); -} - -class _MyHomePageState extends State { - List? _imageFileList; - - void _setImageFileListFromFile(XFile? value) { - _imageFileList = value == null ? null : [value]; - } - - dynamic _pickImageError; - bool _isVideo = false; - - VideoPlayerController? _videoController; - VideoPlayerController? _toBeDisposed; - String? _retrieveDataError; - - final ImagePicker _picker = ImagePicker(); - final TextEditingController _maxWidthController = TextEditingController(); - final TextEditingController _maxHeightController = TextEditingController(); - final TextEditingController _qualityController = TextEditingController(); - - Future _playVideo(XFile? file) async { - if (file != null && mounted) { - await _disposeVideoController(); - late VideoPlayerController controller; - if (kIsWeb) { - controller = VideoPlayerController.network(file.path); - } else { - controller = VideoPlayerController.file(File(file.path)); - } - _videoController = controller; - // In web, most browsers won't honor a programmatic call to .play - // if the video has a sound track (and is not muted). - // Mute the video so it auto-plays in web! - // This is not needed if the call to .play is the result of user - // interaction (clicking on a "play" button, for example). - const double volume = kIsWeb ? 0.0 : 1.0; - await controller.setVolume(volume); - await controller.initialize(); - await controller.setLooping(true); - await controller.play(); - setState(() {}); - } - } - - Future _onImageButtonPressed( - ImageSource source, { - required BuildContext context, - bool isMultiImage = false, - }) async { - if (_videoController != null) { - await _videoController!.setVolume(0.0); - } - if (context.mounted) { - if (_isVideo) { - final XFile? file = await _picker.pickVideo( - source: source, - maxDuration: const Duration(seconds: 10), - ); - await _playVideo(file); - } else if (isMultiImage) { - await _displayPickImageDialog( - context, - (double? maxWidth, double? maxHeight, int? quality) async { - try { - final List pickedFileList = await _picker.pickMultiImage( - maxWidth: maxWidth, - maxHeight: maxHeight, - imageQuality: quality, - ); - setState(() { - _imageFileList = pickedFileList; - }); - } catch (e) { - setState(() { - _pickImageError = e; - }); - } - }, - ); - } else { - await _displayPickImageDialog( - context, - (double? maxWidth, double? maxHeight, int? quality) async { - try { - // call to `pickImage` jump to the image pick page automatically - final XFile? pickedFile = await _picker.pickImage( - source: source, - maxWidth: maxWidth, - maxHeight: maxHeight, - imageQuality: quality, - ); - setState(() { - _setImageFileListFromFile(pickedFile); - }); - } catch (e) { - setState(() { - _pickImageError = e; - }); - } - }, - ); - } - } - } - - @override - void deactivate() { - if (_videoController != null) { - _videoController!.setVolume(0.0); - _videoController!.pause(); - } - super.deactivate(); - } - - @override - void dispose() { - _disposeVideoController(); - _maxWidthController.dispose(); - _maxHeightController.dispose(); - _qualityController.dispose(); - super.dispose(); - } - - Future _disposeVideoController() async { - if (_toBeDisposed != null) { - await _toBeDisposed!.dispose(); - } - _toBeDisposed = _videoController; - _videoController = null; - } - - Widget _previewVideo() { - final Text? retrieveError = _getRetrieveErrorWidget(); - if (retrieveError != null) { - return retrieveError; - } - if (_videoController == null) { - return const Text( - 'You have not yet picked a video', - textAlign: TextAlign.center, - ); - } - return Padding( - padding: const EdgeInsets.all(10.0), - child: AspectRatioVideo(_videoController), - ); - } - - // Show the image(s) on the home page after the image(s) is(are) picked - Widget _previewImages() { - final Text? retrieveError = _getRetrieveErrorWidget(); - if (retrieveError != null) { - return retrieveError; - } - if (_imageFileList != null) { - return Semantics( - label: 'image_picker_example_picked_images', - child: ListView.builder( - key: UniqueKey(), - itemBuilder: (BuildContext context, int index) { - // Why network for web? - // See https://pub.dev/packages/image_picker_for_web#limitations-on-the-web-platform - return Semantics( - label: 'image_picker_example_picked_image', - child: kIsWeb - ? Image.network(_imageFileList![index].path) - : Image.file( - File(_imageFileList![index].path), - errorBuilder: ( - BuildContext context, - Object error, - StackTrace? stackTrace, - ) => - const Center( - child: Text('This image type is not supported'), - ), - ), - ); - }, - itemCount: _imageFileList!.length, - ), - ); - } else if (_pickImageError != null) { - return Text( - 'Pick image error: $_pickImageError', - textAlign: TextAlign.center, - ); - } else { - return const Text( - 'You have not yet picked an image.', - textAlign: TextAlign.center, - ); - } - } - - Widget _handlePreview() { - if (_isVideo) { - return _previewVideo(); - } else { - return _previewImages(); - } - } - - Future retrieveLostData() async { - final LostDataResponse response = await _picker.retrieveLostData(); - if (response.isEmpty) { - return; - } - if (response.file != null) { - if (response.type == RetrieveType.video) { - _isVideo = true; - await _playVideo(response.file); - } else { - _isVideo = false; - setState(() { - if (response.files == null) { - _setImageFileListFromFile(response.file); - } else { - _imageFileList = response.files; - } - }); - } - } else { - _retrieveDataError = response.exception!.code; - } - } - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text(widget.title!), - ), - body: Center( - child: !kIsWeb && defaultTargetPlatform == TargetPlatform.android - ? FutureBuilder( - future: retrieveLostData(), - builder: ( - BuildContext context, - AsyncSnapshot snapshot, - ) { - switch (snapshot.connectionState) { - case ConnectionState.none: - case ConnectionState.waiting: - return const Text( - 'You have not yet picked an image.', - textAlign: TextAlign.center, - ); - case ConnectionState.done: - // When finish picking image, which also means the future - //is done, this hanle will be executed. - return _handlePreview(); - case ConnectionState.active: - if (snapshot.hasError) { - return Text( - 'Pick image/video error: ${snapshot.error}}', - textAlign: TextAlign.center, - ); - } else { - return const Text( - 'You have not yet picked an image.', - textAlign: TextAlign.center, - ); - } - } - }, - ) - : _handlePreview(), - ), - floatingActionButton: Column( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Semantics( - label: 'image_picker_example_from_gallery', - child: FloatingActionButton( - onPressed: () { - _isVideo = false; - _onImageButtonPressed( - ImageSource.gallery, - context: context, - ); - }, - heroTag: 'image0', - tooltip: 'Pick Image from gallery', - child: const Icon(Icons.photo), - ), - ), - Padding( - padding: const EdgeInsets.only(top: 16.0), - child: FloatingActionButton( - onPressed: () { - _isVideo = false; - _onImageButtonPressed( - ImageSource.gallery, - context: context, - isMultiImage: true, - ); - }, - heroTag: 'image1', - tooltip: 'Pick Multiple Image from gallery', - child: const Icon(Icons.photo_library), - ), - ), - Padding( - padding: const EdgeInsets.only(top: 16.0), - child: FloatingActionButton( - onPressed: () { - _isVideo = false; - _onImageButtonPressed(ImageSource.camera, context: context); - }, - heroTag: 'image2', - tooltip: 'Take a Photo', - child: const Icon(Icons.camera_alt), - ), - ), - Padding( - padding: const EdgeInsets.only(top: 16.0), - child: FloatingActionButton( - backgroundColor: Colors.red, - onPressed: () { - _isVideo = true; - _onImageButtonPressed(ImageSource.gallery, context: context); - }, - heroTag: 'video0', - tooltip: 'Pick Video from gallery', - child: const Icon(Icons.video_library), - ), - ), - Padding( - padding: const EdgeInsets.only(top: 16.0), - child: FloatingActionButton( - backgroundColor: Colors.red, - onPressed: () { - _isVideo = true; - _onImageButtonPressed(ImageSource.camera, context: context); - }, - heroTag: 'video1', - tooltip: 'Take a Video', - child: const Icon(Icons.videocam), - ), - ), - ], - ), - ); - } - - Text? _getRetrieveErrorWidget() { - if (_retrieveDataError != null) { - final Text result = Text(_retrieveDataError!); - _retrieveDataError = null; - return result; - } - return null; - } - - Future _displayPickImageDialog( - BuildContext context, - OnPickImageCallback onPick, - ) async { - return showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: const Text('Add optional parameters'), - content: Column( - children: [ - TextField( - controller: _maxWidthController, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - decoration: const InputDecoration( - hintText: 'Enter maxWidth if desired'), - ), - TextField( - controller: _maxHeightController, - keyboardType: const TextInputType.numberWithOptions( - decimal: true, - ), - decoration: const InputDecoration( - hintText: 'Enter maxHeight if desired', - ), - ), - TextField( - controller: _qualityController, - keyboardType: TextInputType.number, - decoration: const InputDecoration( - hintText: 'Enter quality if desired', - ), - ), - ], - ), - actions: [ - TextButton( - child: const Text('CANCEL'), - onPressed: () { - Navigator.of(context).pop(); - }, - ), - TextButton( - child: const Text('PICK'), - onPressed: () { - final double? width = _maxWidthController.text.isNotEmpty - ? double.parse(_maxWidthController.text) - : null; - final double? height = _maxHeightController.text.isNotEmpty - ? double.parse(_maxHeightController.text) - : null; - final int? quality = _qualityController.text.isNotEmpty - ? int.parse(_qualityController.text) - : null; - onPick(width, height, quality); - Navigator.of(context).pop(); - }, - ), - ], - ); - }, - ); - } -} - -typedef OnPickImageCallback = void Function( - double? maxWidth, - double? maxHeight, - int? quality, -); - -class AspectRatioVideo extends StatefulWidget { - const AspectRatioVideo(this.controller, {super.key}); - - final VideoPlayerController? controller; - - @override - AspectRatioVideoState createState() => AspectRatioVideoState(); -} - -class AspectRatioVideoState extends State { - VideoPlayerController? get controller => widget.controller; - bool initialized = false; - - void _onVideoControllerUpdate() { - if (!mounted) { - return; - } - if (initialized != controller!.value.isInitialized) { - initialized = controller!.value.isInitialized; - setState(() {}); - } - } - - @override - void initState() { - super.initState(); - controller!.addListener(_onVideoControllerUpdate); - } - - @override - void dispose() { - controller!.removeListener(_onVideoControllerUpdate); - super.dispose(); - } - - @override - Widget build(BuildContext context) { - if (initialized) { - return Center( - child: AspectRatio( - aspectRatio: controller!.value.aspectRatio, - child: VideoPlayer(controller!), - ), - ); - } else { - return Container(); - } - } -} diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 063186a..4c21ea1 100755 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -8,25 +8,23 @@ import Foundation import device_info_plus import fast_rsa import file_selector_macos +import flutter_image_compress_macos import flutter_local_notifications import flutter_secure_storage_macos import flutter_timezone -import image_editor_common import path_provider_foundation import shared_preferences_foundation import sqflite -import video_player_avfoundation func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) FastRsaPlugin.register(with: registry.registrar(forPlugin: "FastRsaPlugin")) FileSelectorPlugin.register(with: registry.registrar(forPlugin: "FileSelectorPlugin")) + FlutterImageCompressMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterImageCompressMacosPlugin")) FlutterLocalNotificationsPlugin.register(with: registry.registrar(forPlugin: "FlutterLocalNotificationsPlugin")) FlutterSecureStoragePlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStoragePlugin")) FlutterTimezonePlugin.register(with: registry.registrar(forPlugin: "FlutterTimezonePlugin")) - ImageEditorPlugin.register(with: registry.registrar(forPlugin: "ImageEditorPlugin")) PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) - FVPVideoPlayerPlugin.register(with: registry.registrar(forPlugin: "FVPVideoPlayerPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 760fcc5..ec795ea 100755 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,32 +5,32 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 - url: "https://pub.dev" + sha256: "0b2f2bd91ba804e53a61d757b986f89f1f9eaed5b11e4b2f5a2468d86d6c9fc7" + url: "https://pub.flutter-io.cn" source: hosted - version: "64.0.0" + version: "67.0.0" analyzer: dependency: transitive description: name: analyzer - sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" - url: "https://pub.dev" + sha256: "37577842a27e4338429a1cbc32679d508836510b056f1eedf0c8d20e39c1383d" + url: "https://pub.flutter-io.cn" source: hosted - version: "6.2.0" + version: "6.4.1" archive: dependency: "direct main" description: name: archive - sha256: "06a96f1249f38a00435b3b0c9a3246d934d7dbc8183fc7c9e56989860edb99d4" - url: "https://pub.dev" + sha256: "22600aa1e926be775fa5fe7e6894e7fb3df9efda8891c73f70fb3262399a432d" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.4.4" + version: "3.4.10" args: dependency: transitive description: name: args sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.2" async: @@ -38,7 +38,7 @@ packages: description: name: async sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.11.0" badges: @@ -46,7 +46,7 @@ packages: description: name: badges sha256: a7b6bbd60dce418df0db3058b53f9d083c22cdb5132a052145dc267494df0b84 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" boolean_selector: @@ -54,7 +54,7 @@ packages: description: name: boolean_selector sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" build: @@ -62,7 +62,7 @@ packages: description: name: build sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" build_config: @@ -70,87 +70,87 @@ packages: description: name: build_config sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" - url: "https://pub.dev" + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + url: "https://pub.flutter-io.cn" source: hosted - version: "4.0.0" + version: "4.0.1" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "64e12b0521812d1684b1917bc80945625391cb9bdd4312536b1d69dcb6133ed8" - url: "https://pub.dev" + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.1" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" - url: "https://pub.dev" + sha256: "581bacf68f89ec8792f5e5a0b2c4decd1c948e97ce659dc783688c8a88fbec21" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.6" + version: "2.4.8" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: c9e32d21dd6626b5c163d48b037ce906bbe428bc23ab77bcd77bb21e593b6185 - url: "https://pub.dev" + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + url: "https://pub.flutter-io.cn" source: hosted - version: "7.2.11" + version: "7.3.0" built_collection: dependency: transitive description: name: built_collection sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.1.1" built_value: dependency: transitive description: name: built_value - sha256: a8de5955205b4d1dbbbc267daddf2178bd737e4bab8987c04a500478c9651e74 - url: "https://pub.dev" + sha256: fedde275e0a6b798c3296963c5cd224e3e1b55d0e478d5b7e65e6b540f363a0e + url: "https://pub.flutter-io.cn" source: hosted - version: "8.6.3" + version: "8.9.1" cached_network_image: dependency: "direct main" description: name: cached_network_image - sha256: f98972704692ba679db144261172a8e20feb145636c617af0eb4022132a6797f - url: "https://pub.dev" + sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.3.0" + version: "3.3.1" cached_network_image_platform_interface: dependency: transitive description: name: cached_network_image_platform_interface - sha256: "56aa42a7a01e3c9db8456d9f3f999931f1e05535b5a424271e9a38cabf066613" - url: "https://pub.dev" + sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.0" + version: "4.0.0" cached_network_image_web: dependency: transitive description: name: cached_network_image_web - sha256: "759b9a9f8f6ccbb66c185df805fac107f05730b1dab9c64626d1008cca532257" - url: "https://pub.dev" + sha256: "42a835caa27c220d1294311ac409a43361088625a4f23c820b006dd9bffb3316" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.1.1" characters: dependency: transitive description: name: characters sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.0" checked_yaml: @@ -158,47 +158,47 @@ packages: description: name: checked_yaml sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.3" cherry_toast: dependency: "direct main" description: name: cherry_toast - sha256: cf8f044bb1be3feab50989f964966132b6b6d99a937a14d2dbee95463dde8d5a - url: "https://pub.dev" + sha256: b5d7d40e4bbf0842af400da3670f55220873fd9dac40e54f1aa2c8fda7398518 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.4.3" + version: "1.9.1" clock: dependency: transitive description: name: clock sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" code_builder: dependency: transitive description: name: code_builder - sha256: "1be9be30396d7e4c0db42c35ea6ccd7cc6a1e19916b5dc64d6ac216b5544d677" - url: "https://pub.dev" + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + url: "https://pub.flutter-io.cn" source: hosted - version: "4.7.0" + version: "4.10.0" collection: dependency: transitive description: name: collection - sha256: f092b211a4319e98e5ff58223576de6c2803db36221657b46c82574721240687 - url: "https://pub.dev" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.flutter-io.cn" source: hosted - version: "1.17.2" + version: "1.18.0" colorfilter_generator: dependency: transitive description: name: colorfilter_generator sha256: ccc2995e440b1d828d55d99150e7cad64624f3cb4a1e235000de3f93cf10d35c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.0.8" convert: @@ -206,111 +206,95 @@ packages: description: name: convert sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.1" cross_file: dependency: transitive description: name: cross_file - sha256: fd832b5384d0d6da4f6df60b854d33accaaeb63aa9e10e736a87381f08dee2cb - url: "https://pub.dev" + sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e + url: "https://pub.flutter-io.cn" source: hosted - version: "0.3.3+5" + version: "0.3.3+8" crypto: dependency: transitive description: name: crypto sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.3" - csslib: - dependency: transitive - description: - name: csslib - sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" - source: hosted - version: "1.0.0" - cupertino_icons: - dependency: transitive - description: - name: cupertino_icons - sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d - url: "https://pub.dev" - source: hosted - version: "1.0.6" custom_pop_up_menu: dependency: "direct main" description: name: custom_pop_up_menu sha256: eeac484c6ddffffb25e803dc2a5cc9381e700a29f074e9fcc76fe36b62fde850 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.4" dart_style: dependency: transitive description: name: dart_style - sha256: abd7625e16f51f554ea244d090292945ec4d4be7bfbaf2ec8cccea568919d334 - url: "https://pub.dev" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.3" + version: "2.3.6" dbus: dependency: transitive description: name: dbus - sha256: "6f07cba3f7b3448d42d015bfd3d53fe12e5b36da2423f23838efc1d5fb31a263" - url: "https://pub.dev" + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.7.8" + version: "0.7.10" device_info_plus: dependency: "direct main" description: name: device_info_plus - sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659" - url: "https://pub.dev" + sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" + url: "https://pub.flutter-io.cn" source: hosted - version: "9.0.3" + version: "9.1.2" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.0" dio: dependency: "direct main" description: name: dio - sha256: "417e2a6f9d83ab396ec38ff4ea5da6c254da71e4db765ad737a42af6930140b7" - url: "https://pub.dev" + sha256: "49af28382aefc53562459104f64d16b9dfd1e8ef68c862d5af436cc8356ce5a8" + url: "https://pub.flutter-io.cn" source: hosted - version: "5.3.3" + version: "5.4.1" extended_image: dependency: transitive description: name: extended_image - sha256: b4d72a27851751cfadaf048936d42939db7cd66c08fdcfe651eeaa1179714ee6 - url: "https://pub.dev" + sha256: d7f091d068fcac7246c4b22a84b8dac59a62e04d29a5c172710c696e67a22f94 + url: "https://pub.flutter-io.cn" source: hosted - version: "8.1.1" + version: "8.2.0" extended_image_library: dependency: transitive description: name: extended_image_library - sha256: "8bf87c0b14dcb59200c923a9a3952304e4732a0901e40811428834ef39018ee1" - url: "https://pub.dev" + sha256: a7cc0270299589ba12b21152abd8ac7287ac8e1997c7ce1a26c337bac4429208 + url: "https://pub.flutter-io.cn" source: hosted - version: "3.6.0" + version: "4.0.2" fake_async: dependency: transitive description: name: fake_async sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.1" fast_rsa: @@ -318,31 +302,31 @@ packages: description: name: fast_rsa sha256: "2619f8869c0245919fc8f3695f786bf7a7e75e4bb87a7f13ad3b3223fa35bdf0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.6.1" ffi: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" - url: "https://pub.dev" + sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.0" + version: "2.1.2" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.flutter-io.cn" source: hosted - version: "6.1.4" + version: "7.0.0" file_selector_linux: dependency: transitive description: name: file_selector_linux sha256: "045d372bf19b02aeb69cacf8b4009555fb5f6f0b7ad8016e5f46dd1387ddd492" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.2+1" file_selector_macos: @@ -350,23 +334,23 @@ packages: description: name: file_selector_macos sha256: b15c3da8bd4908b9918111fa486903f5808e388b8d1c559949f584725a6594d6 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+3" file_selector_platform_interface: dependency: transitive description: name: file_selector_platform_interface - sha256: "0aa47a725c346825a2bd396343ce63ac00bda6eff2fbc43eabe99737dede8262" - url: "https://pub.dev" + sha256: a3994c26f10378a039faa11de174d7b78eb8f79e4dd0af2a451410c1a5c3f66b + url: "https://pub.flutter-io.cn" source: hosted - version: "2.6.1" + version: "2.6.2" file_selector_windows: dependency: transitive description: name: file_selector_windows sha256: d3547240c20cabf205c7c7f01a50ecdbc413755814d6677f3cb366f04abcead0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+1" fixnum: @@ -374,7 +358,7 @@ packages: description: name: fixnum sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" flat_buffers: @@ -382,7 +366,7 @@ packages: description: name: flat_buffers sha256: "23e2ced0d8e8ecdffbd9f267f49a668c74438393b9acaeac1c724123e3764263" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.5" flutter: @@ -395,7 +379,7 @@ packages: description: name: flutter_cache_manager sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.1" flutter_colorpicker: @@ -403,63 +387,79 @@ packages: description: name: flutter_colorpicker sha256: "458a6ed8ea480eb16ff892aedb4b7092b2804affd7e046591fb03127e8d8ef8b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.3" flutter_image_compress: dependency: transitive description: name: flutter_image_compress - sha256: "2725cce5c58fdeaf1db8f4203688228bb67e3523a66305ccaa6f99071beb6dc2" - url: "https://pub.dev" + sha256: "4edadb0ca2f957b85190e9c3aa728569b91b64b6e06e0eec5b622d47a8692ab2" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.4" + version: "2.2.0" flutter_image_compress_common: dependency: transitive description: name: flutter_image_compress_common - sha256: "8e7299afe109dc4b97fda34bf0f4967cc1fc10bc8050c374d449cab262d095b3" - url: "https://pub.dev" + sha256: "7f79bc6c8a363063620b4e372fa86bc691e1cb28e58048cd38e030692fbd99ee" + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.0.5" + flutter_image_compress_macos: + dependency: transitive + description: + name: flutter_image_compress_macos + sha256: "26df6385512e92b3789dc76b613b54b55c457a7f1532e59078b04bf189782d47" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" + flutter_image_compress_ohos: + dependency: transitive + description: + name: flutter_image_compress_ohos + sha256: "70360371698be994786e5dd2e364a6525b1c5a4f843bff8af9b8a2fbe808d8d8" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.0.2" flutter_image_compress_platform_interface: dependency: transitive description: name: flutter_image_compress_platform_interface - sha256: "3c7e86da7540b1adfa919b461885a41a018d4a26544d0fcbeaa769f6542e603d" - url: "https://pub.dev" + sha256: "579cb3947fd4309103afe6442a01ca01e1e6f93dc53bb4cbd090e8ce34a41889" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.2" + version: "1.0.5" flutter_image_compress_web: dependency: transitive description: name: flutter_image_compress_web - sha256: e879189dc7f246dcf8f06c07ee849231341508bf51e8ed7d5dcbe778ddde0e81 - url: "https://pub.dev" + sha256: f02fe352b17f82b72f481de45add240db062a2585850bea1667e82cc4cd6c311 + url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.3+1" + version: "0.1.4+1" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 - url: "https://pub.dev" + sha256: e2a421b7e59244faef694ba7b30562e489c2b489866e505074eb005cd7060db7 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.3" + version: "3.0.1" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications - sha256: "501ed9d54f1c8c0535b7991bade36f9e7e3b45a2346401f03775c1ec7a3c06ae" - url: "https://pub.dev" + sha256: f9a05409385b77b06c18f200a41c7c2711ebf7415669350bb0f8474c07bd40d1 + url: "https://pub.flutter-io.cn" source: hosted - version: "15.1.2" + version: "17.0.0" flutter_local_notifications_linux: dependency: transitive description: name: flutter_local_notifications_linux sha256: "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.0+1" flutter_local_notifications_platform_interface: @@ -467,7 +467,7 @@ packages: description: name: flutter_local_notifications_platform_interface sha256: "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.0+1" flutter_pickers: @@ -475,31 +475,31 @@ packages: description: name: flutter_pickers sha256: f38a9d9229afed75f76bae64e628b78b9c20194873e3c141783523cf21ac8a95 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.9" flutter_plugin_android_lifecycle: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: f185ac890306b5779ecbd611f52502d8d4d63d27703ef73161ca0407e815f02c - url: "https://pub.dev" + sha256: b068ffc46f82a55844acfa4fdbb61fad72fa2aef0905548419d97f0f95c456da + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.16" + version: "2.0.17" flutter_secure_storage: dependency: "direct main" description: name: flutter_secure_storage - sha256: "22dbf16f23a4bcf9d35e51be1c84ad5bb6f627750565edd70dab70f3ff5fff8f" - url: "https://pub.dev" + sha256: ffdbb60130e4665d2af814a0267c481bcf522c41ae2e43caf69fa0146876d685 + url: "https://pub.flutter-io.cn" source: hosted - version: "8.1.0" + version: "9.0.0" flutter_secure_storage_linux: dependency: transitive description: name: flutter_secure_storage_linux sha256: "3d5032e314774ee0e1a7d0a9f5e2793486f0dff2dd9ef5a23f4e3fb2a0ae6a9e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" flutter_secure_storage_macos: @@ -507,7 +507,7 @@ packages: description: name: flutter_secure_storage_macos sha256: bd33935b4b628abd0b86c8ca20655c5b36275c3a3f5194769a7b3f37c905369c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" flutter_secure_storage_platform_interface: @@ -515,7 +515,7 @@ packages: description: name: flutter_secure_storage_platform_interface sha256: "0d4d3a5dd4db28c96ae414d7ba3b8422fd735a8255642774803b2532c9a61d7e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" flutter_secure_storage_web: @@ -523,25 +523,25 @@ packages: description: name: flutter_secure_storage_web sha256: "30f84f102df9dcdaa2241866a958c2ec976902ebdaa8883fbfe525f1f2f3cf20" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: "38f9501c7cb6f38961ef0e1eacacee2b2d4715c63cc83fe56449c4d3d0b47255" - url: "https://pub.dev" + sha256: "5809c66f9dd3b4b93b0a6e2e8561539405322ee767ac2f64d084e2ab5429d108" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "3.0.0" flutter_slidable: dependency: "direct main" description: name: flutter_slidable - sha256: cc4231579e3eae41ae166660df717f4bad1359c87f4a4322ad8ba1befeb3d2be - url: "https://pub.dev" + sha256: "673403d2eeef1f9e8483bd6d8d92aae73b1d8bd71f382bc3930f699c731bc27c" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.0" + version: "3.1.0" flutter_test: dependency: "direct dev" description: flutter @@ -551,10 +551,10 @@ packages: dependency: "direct main" description: name: flutter_timezone - sha256: "4508018aba499c837f723e2e718259eb677410490638b7ea669b11113d083e68" - url: "https://pub.dev" + sha256: "06b35132c98fa188db3c4b654b7e1af7ccd01dfe12a004d58be423357605fb24" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.7" + version: "1.0.8" flutter_web_plugins: dependency: transitive description: flutter @@ -564,16 +564,16 @@ packages: dependency: transitive description: name: font_awesome_flutter - sha256: "5fb789145cae1f4c3245c58b3f8fb287d055c26323879eab57a7bf0cfd1e45f3" - url: "https://pub.dev" + sha256: "275ff26905134bcb59417cf60ad979136f1f8257f2f449914b2c3e05bbb4cd6f" + url: "https://pub.flutter-io.cn" source: hosted - version: "10.5.0" + version: "10.7.0" frontend_server_client: dependency: transitive description: name: frontend_server_client sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" functional_listener: @@ -581,23 +581,23 @@ packages: description: name: functional_listener sha256: "026d1bd4f66367f11d9ec9f1f1ddb42b89e4484b356972c76d983266cf82f33f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.1" get_it: dependency: "direct main" description: name: get_it - sha256: f79870884de16d689cf9a7d15eedf31ed61d750e813c538a6efb92660fea83c3 - url: "https://pub.dev" + sha256: e6017ce7fdeaf218dc51a100344d8cb70134b80e28b760f8bb23c242437bafd7 + url: "https://pub.flutter-io.cn" source: hosted - version: "7.6.4" + version: "7.6.7" get_it_mixin: dependency: "direct main" description: name: get_it_mixin sha256: "0ab5c9f3cdaab813ec396de5d43ee3833c418424b3a99bec0071fcbf693c0bad" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.2.2" glob: @@ -605,47 +605,47 @@ packages: description: name: glob sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" go_router: dependency: "direct main" description: name: go_router - sha256: "00d1b67d6e9fa443331da229084dd3eb04407f5a2dff22940bd7bba6af5722c3" - url: "https://pub.dev" + sha256: "7ecb2f391edbca5473db591b48555a8912dde60edd0fb3013bd6743033b2d3f8" + url: "https://pub.flutter-io.cn" source: hosted - version: "7.1.1" + version: "13.2.1" google_fonts: dependency: "direct main" description: name: google_fonts - sha256: "2776c66b3e97c6cdd58d1bd3281548b074b64f1fd5c8f82391f7456e38849567" - url: "https://pub.dev" + sha256: b1ac0fe2832c9cc95e5e88b57d627c5e68c223b9657f4b96e1487aa9098c7b82 + url: "https://pub.flutter-io.cn" source: hosted - version: "4.0.5" + version: "6.2.1" graphs: dependency: transitive description: name: graphs sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.1" hand_signature: dependency: transitive description: name: hand_signature - sha256: "69cc5a978a5a15dfc1fabb01c097efcf91e9af2006475e48bb8f2560db368a97" - url: "https://pub.dev" + sha256: a76d56edd2b31bffb3998937be1c6b1eba98696f6e8d817381260c41da415ede + url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.1" + version: "3.0.2" hive: dependency: "direct main" description: name: hive sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.3" hive_flutter: @@ -653,7 +653,7 @@ packages: description: name: hive_flutter sha256: dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" hive_generator: @@ -661,31 +661,23 @@ packages: description: name: hive_generator sha256: "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" - html: - dependency: transitive - description: - name: html - sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" - source: hosted - version: "0.15.4" http: dependency: transitive description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" - url: "https://pub.dev" + sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba + url: "https://pub.flutter-io.cn" source: hosted - version: "1.1.0" + version: "1.2.0" http_client_helper: dependency: transitive description: name: http_client_helper sha256: "8a9127650734da86b5c73760de2b404494c968a3fd55602045ffec789dac3cb1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" http_multi_server: @@ -693,7 +685,7 @@ packages: description: name: http_multi_server sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.1" http_parser: @@ -701,87 +693,63 @@ packages: description: name: http_parser sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.2" image: dependency: transitive description: name: image - sha256: "028f61960d56f26414eb616b48b04eb37d700cbe477b7fb09bf1d7ce57fd9271" - url: "https://pub.dev" + sha256: "4c68bfd5ae83e700b5204c1e74451e7bf3cf750e6843c6e158289cf56bda018e" + url: "https://pub.flutter-io.cn" source: hosted - version: "4.1.3" - image_editor: - dependency: transitive - description: - name: image_editor - sha256: "9877a057b0cd2fafcd9a3dce5279948bd850d53ce76231a83c9678a2c9f186e9" - url: "https://pub.dev" - source: hosted - version: "1.3.0" - image_editor_common: - dependency: transitive - description: - name: image_editor_common - sha256: "07fc9bcc16918a8230e132b9d9a9f66bb1cef3ac99f5e2939cf2ad7a6775b511" - url: "https://pub.dev" - source: hosted - version: "1.0.1" - image_editor_platform_interface: - dependency: transitive - description: - name: image_editor_platform_interface - sha256: ee01ec5e228e10c40f96d7f822c176d4140c15b6706e4a701866ee0cdd1c2b72 - url: "https://pub.dev" - source: hosted - version: "1.0.1" + version: "4.1.7" image_editor_plus: dependency: "direct main" description: name: image_editor_plus - sha256: cad057b6b0314ba406a5b3a4eefa43342816851e4b485479de6512b4130c0d46 - url: "https://pub.dev" + sha256: "59d0651a4d3d2958f1933ab92857515ee0c59d84011f12003b30346c9f40b838" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.2.6" + version: "1.0.5" image_picker: dependency: "direct main" description: name: image_picker - sha256: "7d7f2768df2a8b0a3cefa5ef4f84636121987d403130e70b17ef7e2cf650ba84" - url: "https://pub.dev" + sha256: "26222b01a0c9a2c8fe02fc90b8208bd3325da5ed1f4a2acabf75939031ac0bdd" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.4" + version: "1.0.7" image_picker_android: dependency: transitive description: name: image_picker_android - sha256: "0c7b83bbe2980c8a8e36e974f055e11e51675784e13a4762889feed0f3937ff2" - url: "https://pub.dev" + sha256: "39f2bfe497e495450c81abcd44b62f56c2a36a37a175da7d137b4454977b51b1" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.8.8+1" + version: "0.8.9+3" image_picker_for_web: dependency: transitive description: name: image_picker_for_web - sha256: "50bc9ae6a77eea3a8b11af5eb6c661eeb858fdd2f734c2a4fd17086922347ef7" - url: "https://pub.dev" + sha256: e2423c53a68b579a7c37a1eda967b8ae536c3d98518e5db95ca1fe5719a730a3 + url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.1" + version: "3.0.2" image_picker_ios: dependency: transitive description: name: image_picker_ios - sha256: c5538cacefacac733c724be7484377923b476216ad1ead35a0d2eadcdc0fc497 - url: "https://pub.dev" + sha256: "917a5cadd67d052554cfb258595e54217de53fac5b52939426e26319a02e6297" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.8.8+2" + version: "0.8.9+2" image_picker_linux: dependency: transitive description: name: image_picker_linux sha256: "4ed1d9bb36f7cd60aa6e6cd479779cc56a4cb4e4de8f49d487b1aaad831300fa" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+1" image_picker_macos: @@ -789,23 +757,23 @@ packages: description: name: image_picker_macos sha256: "3f5ad1e8112a9a6111c46d0b57a7be2286a9a07fc6e1976fdf5be2bd31d4ff62" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+1" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface - sha256: ed9b00e63977c93b0d2d2b343685bed9c324534ba5abafbb3dfbd6a780b1b514 - url: "https://pub.dev" + sha256: "3d2c323daea9d60608f1caf30be32a938916f4975434b8352e6f73dae496da38" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.9.1" + version: "2.9.4" image_picker_windows: dependency: transitive description: name: image_picker_windows sha256: "6ad07afc4eb1bc25f3a01084d28520496c4a3bb0cb13685435838167c9dcedeb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1+1" io: @@ -813,7 +781,7 @@ packages: description: name: io sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" js: @@ -821,7 +789,7 @@ packages: description: name: js sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.7" json_annotation: @@ -829,71 +797,95 @@ packages: description: name: json_annotation sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.8.1" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa" + url: "https://pub.flutter-io.cn" + source: hosted + version: "10.0.0" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47 + url: "https://pub.flutter-io.cn" + source: hosted + version: "2.0.1" lints: dependency: transitive description: name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.dev" + sha256: cbf8d4b858bb0134ef3ef87841abdf8d63bfc255c266b7bf6b39daa1085c4290 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "3.0.0" logging: dependency: "direct main" description: name: logging sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" matcher: dependency: transitive description: name: matcher - sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" - url: "https://pub.dev" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + url: "https://pub.flutter-io.cn" source: hosted - version: "0.12.16" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" - url: "https://pub.dev" + sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.5.0" + version: "0.8.0" matrix2d: dependency: transitive description: name: matrix2d sha256: "188718dd3bc2a31e372cfd0791b0f77f4f13ea76164147342cc378d9132949e7" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.dev" + sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04 + url: "https://pub.flutter-io.cn" source: hosted - version: "1.9.1" + version: "1.11.0" mime: dependency: transitive description: name: mime - sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.4" + version: "1.0.5" octo_image: dependency: transitive description: name: octo_image sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" package_config: @@ -901,111 +893,159 @@ packages: description: name: package_config sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider: dependency: "direct main" description: name: path_provider - sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa - url: "https://pub.dev" + sha256: b27217933eeeba8ff24845c34003b003b2b22151de3c908d0e679e8fe1aa078b + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "6b8b19bd80da4f11ce91b2d1fb931f3006911477cec227cce23d3253d80df3f1" - url: "https://pub.dev" + sha256: "477184d672607c0a3bf68fbbf601805f92ef79c82b64b4d6eb318cbca4c48668" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.0" + version: "2.2.2" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d" - url: "https://pub.dev" + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.1" + version: "2.3.2" path_provider_linux: dependency: transitive description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c" - url: "https://pub.dev" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows sha256: "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" + permission_handler: + dependency: transitive + description: + name: permission_handler + sha256: "74e962b7fad7ff75959161bb2c0ad8fe7f2568ee82621c9c2660b751146bfe44" + url: "https://pub.flutter-io.cn" + source: hosted + version: "11.3.0" + permission_handler_android: + dependency: transitive + description: + name: permission_handler_android + sha256: "1acac6bae58144b442f11e66621c062aead9c99841093c38f5bcdcc24c1c3474" + url: "https://pub.flutter-io.cn" + source: hosted + version: "12.0.5" + permission_handler_apple: + dependency: transitive + description: + name: permission_handler_apple + sha256: bdafc6db74253abb63907f4e357302e6bb786ab41465e8635f362ee71fd8707b + url: "https://pub.flutter-io.cn" + source: hosted + version: "9.4.0" + permission_handler_html: + dependency: transitive + description: + name: permission_handler_html + sha256: "54bf176b90f6eddd4ece307e2c06cf977fb3973719c35a93b85cc7093eb6070d" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.1.1" + permission_handler_platform_interface: + dependency: transitive + description: + name: permission_handler_platform_interface + sha256: "23dfba8447c076ab5be3dee9ceb66aad345c4a648f0cac292c77b1eb0e800b78" + url: "https://pub.flutter-io.cn" + source: hosted + version: "4.2.0" + permission_handler_windows: + dependency: transitive + description: + name: permission_handler_windows + sha256: "1a790728016f79a41216d88672dbc5df30e686e811ad4e698bfc51f76ad91f1e" + url: "https://pub.flutter-io.cn" + source: hosted + version: "0.2.1" petitparser: dependency: transitive description: name: petitparser - sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 - url: "https://pub.dev" + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.flutter-io.cn" source: hosted - version: "5.4.0" + version: "6.0.2" photo_view: dependency: "direct main" description: name: photo_view sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.14.0" platform: dependency: transitive description: name: platform - sha256: ae68c7bfcd7383af3629daafb32fb4e8681c7154428da4febcff06200585f102 - url: "https://pub.dev" + sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.1.2" + version: "3.1.4" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d - url: "https://pub.dev" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.6" + version: "2.1.8" pointycastle: dependency: "direct main" description: name: pointycastle - sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.dev" + sha256: "43ac87de6e10afabc85c445745a7b799e04de84cebaa4fd7bf55a5e1e9604d29" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.7.3" + version: "3.7.4" pool: dependency: transitive description: name: pool sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.1" pub_semver: @@ -1013,7 +1053,7 @@ packages: description: name: pub_semver sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" pubspec_parse: @@ -1021,7 +1061,7 @@ packages: description: name: pubspec_parse sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.3" reorderables: @@ -1029,7 +1069,7 @@ packages: description: name: reorderables sha256: "004a886e4878df1ee27321831c838bc1c976311f4ca6a74ce7d561e506540a77" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.0" rxdart: @@ -1037,79 +1077,79 @@ packages: description: name: rxdart sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.27.7" screenshot: dependency: transitive description: name: screenshot - sha256: "455284ff1f5b911d94a43c25e1385485cf6b4f288293eba68f15dad711c7b81c" - url: "https://pub.dev" + sha256: "5488135006b34529bf3765a7b1900ca94ccafca300c573550a0474a7162ebf95" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.0" + version: "2.3.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: b7f41bad7e521d205998772545de63ff4e6c97714775902c199353f8bf1511ac - url: "https://pub.dev" + sha256: "81429e4481e1ccfb51ede496e916348668fd0921627779233bd24cc3ff6abd02" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.1" + version: "2.2.2" shared_preferences_android: dependency: transitive description: name: shared_preferences_android sha256: "8568a389334b6e83415b6aae55378e158fbc2314e074983362d20c562780fb06" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "7bf53a9f2d007329ee6f3df7268fd498f8373602f943c975598bbb34649b62a7" - url: "https://pub.dev" + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.4" + version: "2.3.5" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: c2eb5bf57a2fe9ad6988121609e47d3e07bb3bdca5b6f8444e4cf302428a128a - url: "https://pub.dev" + sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: d4ec5fc9ebb2f2e056c617112aa75dcf92fc2e4faaf2ae999caa297473f75d8a - url: "https://pub.dev" + sha256: "22e2ecac9419b4246d7c22bfbbda589e3acf5c0351137d87dd2939d984d37c3b" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.1" + version: "2.3.2" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: d762709c2bbe80626ecc819143013cc820fa49ca5e363620ee20a8b15a3e3daf - url: "https://pub.dev" + sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.1" + version: "2.2.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: f763a101313bd3be87edffe0560037500967de9c394a714cd598d945517f694f - url: "https://pub.dev" + sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.1" + version: "2.3.2" shelf: dependency: transitive description: name: shelf sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.1" shelf_web_socket: @@ -1117,7 +1157,7 @@ packages: description: name: shelf_web_socket sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" sky_engine: @@ -1129,16 +1169,16 @@ packages: dependency: transitive description: name: source_gen - sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 - url: "https://pub.dev" + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.4.0" + version: "1.5.0" source_helper: dependency: transitive description: name: source_helper sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.4" source_span: @@ -1146,47 +1186,55 @@ packages: description: name: source_span sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.10.0" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.flutter-io.cn" + source: hosted + version: "7.0.0" sqflite: dependency: transitive description: name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" - url: "https://pub.dev" + sha256: a9016f495c927cb90557c909ff26a6d92d9bd54fc42ba92e19d4e79d61e798c6 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.3.0" + version: "2.3.2" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" - url: "https://pub.dev" + sha256: "28d8c66baee4968519fb8bd6cdbedad982d6e53359091f0b74544a9f32ec72d5" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.5.0" + version: "2.5.3" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.11.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: name: stream_transform sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" string_scanner: @@ -1194,39 +1242,39 @@ packages: description: name: string_scanner sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" synchronized: dependency: transitive description: name: synchronized - sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" - url: "https://pub.dev" + sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.1.0" + version: "3.1.0+1" term_glyph: dependency: transitive description: name: term_glyph sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - sha256: "75760ffd7786fffdfb9597c35c5b27eaeec82be8edfb6d71d32651128ed7aab8" - url: "https://pub.dev" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.6.0" + version: "0.6.1" timezone: dependency: "direct main" description: name: timezone sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.2" timing: @@ -1234,7 +1282,7 @@ packages: description: name: timing sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" typed_data: @@ -1242,137 +1290,105 @@ packages: description: name: typed_data sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.2" uuid: dependency: transitive description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" + sha256: cd210a09f7c18cbe5a02511718e0334de6559871052c90a90c0cca46a4aa81c8 + url: "https://pub.flutter-io.cn" source: hosted - version: "3.0.7" + version: "4.3.3" vector_math: dependency: transitive description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" - video_player: - dependency: "direct main" - description: - name: video_player - sha256: "74b86e63529cf5885130c639d74cd2f9232e7c8a66cbecbddd1dcb9dbd060d1e" - url: "https://pub.dev" - source: hosted - version: "2.7.2" - video_player_android: + vm_service: dependency: transitive description: - name: video_player_android - sha256: "3fe89ab07fdbce786e7eb25b58532d6eaf189ceddc091cb66cba712f8d9e8e55" - url: "https://pub.dev" + name: vm_service + sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.10" - video_player_avfoundation: - dependency: transitive - description: - name: video_player_avfoundation - sha256: "6387c2de77763b45104256b3b00b660089be4f909ded8631457dc11bf635e38f" - url: "https://pub.dev" - source: hosted - version: "2.5.0" - video_player_platform_interface: - dependency: transitive - description: - name: video_player_platform_interface - sha256: be72301bf2c0150ab35a8c34d66e5a99de525f6de1e8d27c0672b836fe48f73a - url: "https://pub.dev" - source: hosted - version: "6.2.1" - video_player_web: - dependency: transitive - description: - name: video_player_web - sha256: "2dd24f7ba46bfb5d070e9c795001db95e0ca5f2a3d025e98f287c10c9f0fd62f" - url: "https://pub.dev" - source: hosted - version: "2.1.1" + version: "13.0.0" watcher: dependency: transitive description: name: watcher sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" web: dependency: transitive description: name: web - sha256: dc8ccd225a2005c1be616fe02951e2e342092edf968cf0844220383757ef8f10 - url: "https://pub.dev" + sha256: "4188706108906f002b3a293509234588823c8c979dc83304e229ff400c996b05" + url: "https://pub.flutter-io.cn" source: hosted - version: "0.1.4-beta" + version: "0.4.2" web_socket_channel: dependency: "direct main" description: name: web_socket_channel - sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.dev" + sha256: "939ab60734a4f8fa95feacb55804fa278de28bdeef38e616dc08e44a84adea23" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.0" + version: "2.4.3" win32: dependency: transitive description: name: win32 - sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" - url: "https://pub.dev" + sha256: "8cb58b45c47dcb42ab3651533626161d6b67a2921917d8d429791f76972b3480" + url: "https://pub.flutter-io.cn" source: hosted - version: "5.0.9" + version: "5.3.0" win32_registry: dependency: transitive description: name: win32_registry sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" worker_manager: dependency: "direct main" description: name: worker_manager - sha256: caab0544cb95471e8d1417d21e25838ee4f614f4651a9e8e5a4f26bfeff5f312 - url: "https://pub.dev" + sha256: c64ada43c5adc1bcd4635f1ce386857e7fdec7fc494589e2ca61cad0a1304377 + url: "https://pub.flutter-io.cn" source: hosted - version: "6.3.1" + version: "6.3.2" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2" - url: "https://pub.dev" + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.flutter-io.cn" source: hosted - version: "1.0.3" + version: "1.0.4" xml: dependency: transitive description: name: xml - sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" - url: "https://pub.dev" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.flutter-io.cn" source: hosted - version: "6.3.0" + version: "6.5.0" yaml: dependency: transitive description: name: yaml sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" sdks: - dart: ">=3.1.0 <4.0.0" - flutter: ">=3.13.0" + dart: ">=3.3.0 <4.0.0" + flutter: ">=3.19.2" diff --git a/pubspec.yaml b/pubspec.yaml index e34f090..645df83 100755 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -34,23 +34,23 @@ dependencies: cached_network_image: ^3.2.3 cherry_toast: ^1.4.3 custom_pop_up_menu: ^1.2.4 - device_info_plus: ^9.0.2 + device_info_plus: ^9.1.2 dio: ^5.2.1+1 fast_rsa: ^3.5.7 flutter: sdk: flutter - flutter_local_notifications: ^15.1.1 + flutter_local_notifications: ^17.0.0 flutter_pickers: ^2.1.9 - flutter_secure_storage: ^8.0.0 + flutter_secure_storage: ^9.0.0 flutter_slidable: ^3.0.0 flutter_timezone: ^1.0.6 get_it: ^7.6.0 get_it_mixin: ^4.2.0 - go_router: ^7.1.1 - google_fonts: ^4.0.0 + go_router: ^13.2.1 + google_fonts: ^6.2.1 hive: ^2.2.3 hive_flutter: ^1.1.0 - image_editor_plus: ^0.2.4 + image_editor_plus: ^1.0.5 image_picker: ^1.0.0 logging: ^1.2.0 path_provider: ^2.0.15 @@ -59,13 +59,12 @@ dependencies: reorderables: ^0.6.0 shared_preferences: ^2.2.0 timezone: ^0.9.2 - video_player: ^2.6.1 web_socket_channel: ^2.4.0 worker_manager: ^6.3.1 dev_dependencies: build_runner: ^2.4.5 - flutter_lints: ^2.0.0 + flutter_lints: ^3.0.1 flutter_test: sdk: flutter diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 9c8bc1a..6752a1f 100755 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -9,6 +9,7 @@ #include #include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { FastRsaPluginRegisterWithRegistrar( @@ -17,4 +18,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("FileSelectorWindows")); FlutterSecureStorageWindowsPluginRegisterWithRegistrar( registry->GetRegistrarForPlugin("FlutterSecureStorageWindowsPlugin")); + PermissionHandlerWindowsPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("PermissionHandlerWindowsPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index 875cd33..ed8353c 100755 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -6,6 +6,7 @@ list(APPEND FLUTTER_PLUGIN_LIST fast_rsa file_selector_windows flutter_secure_storage_windows + permission_handler_windows ) list(APPEND FLUTTER_FFI_PLUGIN_LIST