diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 22c658ac..dbb5a178 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -156,11 +156,11 @@ PODS: - SDWebImage/Core (5.18.5) - sensors_plus (0.0.1): - Flutter - - Sentry/HybridSDK (8.32.0) - - sentry_flutter (8.6.0): + - Sentry/HybridSDK (8.33.0) + - sentry_flutter (8.7.0): - Flutter - FlutterMacOS - - Sentry/HybridSDK (= 8.32.0) + - Sentry/HybridSDK (= 8.33.0) - shared_preferences_foundation (0.0.1): - Flutter - FlutterMacOS @@ -317,8 +317,8 @@ SPEC CHECKSUMS: PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 SDWebImage: 7ac2b7ddc5e8484c79aa90fc4e30b149d6a2c88f sensors_plus: 18a9b346c43e157da17d2c8e99def703f9efb9d8 - Sentry: 96ae1dcdf01a644bc3a3b1dc279cecaf48a833fb - sentry_flutter: 090351ce1ff5f96a4b33ef9455b7e3b28185387d + Sentry: 8560050221424aef0bebc8e31eedf00af80f90a6 + sentry_flutter: e26b861f744e5037a3faf9bf56603ec65d658a61 shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec SwiftyGif: 93a1cc87bf3a51916001cf8f3d63835fb64c819f diff --git a/packages/carousel_slider/.gitignore b/packages/carousel_slider/.gitignore deleted file mode 100644 index ec50b22c..00000000 --- a/packages/carousel_slider/.gitignore +++ /dev/null @@ -1,99 +0,0 @@ -# Miscellaneous -*.class -*.lock -*.log -*.pyc -*.swp -.DS_Store -.atom/ -.buildlog/ -.history -.svn/ - -# IntelliJ related -*.iml -*.ipr -*.iws -.idea/ - -# Visual Studio Code related -.vscode/ - -# Flutter repo-specific -/bin/cache/ -/bin/mingit/ -/dev/benchmarks/mega_gallery/ -/dev/bots/.recipe_deps -/dev/bots/android_tools/ -/dev/docs/doc/ -/dev/docs/flutter.docs.zip -/dev/docs/lib/ -/dev/docs/pubspec.yaml -/dev/integration_tests/**/xcuserdata -/dev/integration_tests/**/Pods -/packages/flutter/coverage/ -version - -# packages file containing multi-root paths -.packages.generated - -# Flutter/Dart/Pub related -**/doc/api/ -.dart_tool/ -.flutter-plugins -.packages -.pub-cache/ -.pub/ -build/ -linked_*.ds -unlinked.ds -unlinked_spec.ds - -# Android related -**/android/**/gradle-wrapper.jar -**/android/.gradle -**/android/captures/ -**/android/gradlew -**/android/gradlew.bat -**/android/local.properties -**/android/**/GeneratedPluginRegistrant.java -**/android/key.properties -*.jks - -# iOS/XCode related -**/ios/**/*.mode1v3 -**/ios/**/*.mode2v3 -**/ios/**/*.moved-aside -**/ios/**/*.pbxuser -**/ios/**/*.perspectivev3 -**/ios/**/*sync/ -**/ios/**/.sconsign.dblite -**/ios/**/.tags* -**/ios/**/.vagrant/ -**/ios/**/DerivedData/ -**/ios/**/Icon? -**/ios/**/Pods/ -**/ios/**/.symlinks/ -**/ios/**/profile -**/ios/**/xcuserdata -**/ios/.generated/ -**/ios/Flutter/App.framework -**/ios/Flutter/Flutter.framework -**/ios/Flutter/Generated.xcconfig -**/ios/Flutter/app.flx -**/ios/Flutter/app.zip -**/ios/Flutter/Flutter.podspec -**/ios/Flutter/flutter_assets/ -**/ios/Flutter/flutter_export_environment.sh -**/ios/ServiceDefinitions.json -**/ios/Runner/GeneratedPluginRegistrant.* - -# Coverage -coverage/ - -# Exceptions to above rules. -!**/ios/**/default.mode1v3 -!**/ios/**/default.mode2v3 -!**/ios/**/default.pbxuser -!**/ios/**/default.perspectivev3 -!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages \ No newline at end of file diff --git a/packages/carousel_slider/.metadata b/packages/carousel_slider/.metadata deleted file mode 100644 index 3c0dd2c8..00000000 --- a/packages/carousel_slider/.metadata +++ /dev/null @@ -1,8 +0,0 @@ -# This file tracks properties of this Flutter project. -# Used by Flutter tool to assess capabilities and perform upgrades etc. -# -# This file should be version controlled and should not be manually edited. - -version: - revision: b397406561f5e7a9c94e28f58d9e49fca0dd58b7 - channel: beta diff --git a/packages/carousel_slider/CHANGELOG.md b/packages/carousel_slider/CHANGELOG.md deleted file mode 100644 index 559a6bb3..00000000 --- a/packages/carousel_slider/CHANGELOG.md +++ /dev/null @@ -1,259 +0,0 @@ -# 4.2.1 - -- [FIX] temporary remove `PointerDeviceKind.trackpad` -- [FIX] fix `'double?'` type - -# 4.2.0 - -- [Add] `enlargeFactor` option -- [Add] `CenterPageEnlargeStrategy.zoom` option -- [Add] `animateToClosest` option - -- [FIX] clear timer if widget was unmounted -- [FIX] scroll carousel using touchpad - -# 4.1.1 - -- Fix code formatting - -# 4.1.0 - -## Add - -- Exposed `clipBehavior` in `CarouselOptions` -- Exposed `padEnds` in `CarouselOptions` -- Add `copyWith` method to `CarouselOptions` - -## Fix - -- [FIX] Can't swipe on web with Flutter 2.5 - - -# 4.0.0 - -- Support null safety (Null safety isn't a breaking change and is Backward compatible meaning you can use it with non-null safe code too) -- Update example code to null safety and add Dark theme support and controller support to indicators in on of the examples and also fix overflow errors. - -# 3.0.0 - -## Add - -- Add third argument in `itemBuilder`, allow Hero and infinite scroll to coexist - -## Breaking change - -- `itemBuilder` needs to accept three arguments, instead of two. - -# 2.3.4 - -## Fix - -- Rollback PR #222, due to it will break the existing project. - -# 2.3.3 - -- Fix code formatting - -# 2.3.2 - -## Fix - -- Double pointer down and up will cause a exception -- Fix `CarouselPageChangedReason` - -## Add - -- Allow Hero and infinite scroll to coexist - -# 2.3.1 - -- Fix code formatting - -# 2.3.0 - -## Fix - -- Fixed unresponsiveness to state changes - -## Add - -- Added start/stop autoplay functionality -- Pause auto play if not current route -- Add `pageSnapping` option for disable page snapping for the carousel - -# 2.2.1 - -## Fix - -- Fixed `carousel_options.dart` and `carousel_controller` not being exported by default. - -# 2.2.0 - -## Add - -- `disableCenter` option - -This option controls whether the carousel slider item should be wrapped in a `Center` widget or not. - -- `enlargeStrategy` option - -This option allow user to set which enlarge strategy to enlarge the center slide. Use `CenterPageEnlargeStrategy.height` if you want to improve the performance. - -## Fix - -- Fixed `CarousePageChangedReason.manual` never being emitted - -# 2.1.0 - -## Add - -- `pauseAutoPlayOnTouch` option - -This option controls whether the carousel slider should pause the auto play function when user is touching the slider - -- `pauseAutoPlayOnManualNavigate` option - -This option controls whether the carousel slider should pause the auto play function when user is calling controller's method. - -- `pauseAutoPlayInFiniteScroll` option - -This option decide the carousel should go to the first item when it reach the last item or not. - -- `pageViewKey` option - -This option is useful when you want to keep the pageview's position when it was recreated. - -## Fix - -- Fix `CarouselPageChangedReason` bug - -## Other updates - -- Use `Transform.scale` instead of `SizedBox` to wrap the slider item - -# 2.0.0 - -## Breaking change - -Instead of passing all the options to the `CarouselSlider`, now you'll need to pass these option to `CarouselOptions`: - -```dart -CarouselSlider( - CarouselOptions(height: 400.0), - items: [1,2,3,4,5].map((i) { - return Builder( - builder: (BuildContext context) { - return Container( - width: MediaQuery.of(context).size.width, - margin: EdgeInsets.symmetric(horizontal: 5.0), - decoration: BoxDecoration( - color: Colors.amber - ), - child: Text('text $i', style: TextStyle(fontSize: 16.0),) - ); - }, - ); - }).toList(), -) -``` - -## Add - -- `CarouselController` - -Since `v2.0.0`, `carousel_slider` plugin provides a way to pass your own `CaourselController`, and you can use `CaouselController` instance to manually control the carousel's position. For a more detailed example please refer to [example project](example/lib/main.dart). - -- `CarouselPageChangedReason` - -Now you can receive a `CarouselPageChangedReason` in `onPageChanged` callback. - -## Remove - -- `pauseAutoPlayOnTouch` - -`pauseAutoPlayOnTouch` option is removed, because it doesn't fix the problem we have. Currently, when we enable the `autoPlay` feature, we can not stop sliding when the user interact with the carousel. This is [a flutter's issue](https://github.com/flutter/flutter/issues/54875). - -# 1.4.1 - -## Fix - -- Fix `animateTo()/jumpTo()` with non-zero initialPage - -# 1.4.0 - -## Add - -- Add on-demand item feature - -## Fix - -- Fix `setState() called after dispose()` bug - -# 1.3.1 - -## Add - -- Scroll physics option - -## Fix - -- onPage indexing bug - - -# 1.3.0 - -## Deprecation - -- Remove the deprecated param: `interval`, `autoPlayDuration`, `distortion`, `updateCallback`. Please use the new param. - -## Fix - -- Fix `enlargeCenterPage` option is not working in `vertical` carousel slider. - -# 1.2.0 - -## Add - -- Vertical scroll support -- Enable/disable infinite scroll - -# 1.1.0 - -## Add - -- Added `pauseAutoPlayOnTouch` option -- Add documentation - -# 1.0.1 - -## Add - -- Update doc - -# 1.0.0 - -## Add - -- Added `distortion` option - - -# 0.0.6 - -## Fix - -- Fix hard coded number - -# 0.0.5 - -## Fix - -- Fix `initialPage` bug, fix crash when widget is disposed. - - -# v0.0.2 - -Remove useless dependencies, add changelog. - -# v0.0.1 - -Initial version. diff --git a/packages/carousel_slider/LICENSE b/packages/carousel_slider/LICENSE deleted file mode 100644 index 431f308c..00000000 --- a/packages/carousel_slider/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017 serenader - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/packages/carousel_slider/README.md b/packages/carousel_slider/README.md deleted file mode 100644 index b0822d50..00000000 --- a/packages/carousel_slider/README.md +++ /dev/null @@ -1,193 +0,0 @@ -# carousel_slider - -A carousel slider widget. - -## Features - -* Infinite scroll -* Custom child widgets -* Auto play - -## Supported platforms - -* Flutter Android -* Flutter iOS -* Flutter web -* Flutter desktop - -## Live preview - -https://serenader2014.github.io/flutter_carousel_slider/#/ - -Note: this page is built with flutter-web. For a better user experience, please use a mobile device to open this link. - -## Installation - -Add `carousel_slider: ^4.2.1` to your `pubspec.yaml` dependencies. And import it: - -```dart -import 'package:carousel_slider/carousel_slider.dart'; -``` - -## How to use - -Simply create a `CarouselSlider` widget, and pass the required params: - -```dart -CarouselSlider( - options: CarouselOptions(height: 400.0), - items: [1,2,3,4,5].map((i) { - return Builder( - builder: (BuildContext context) { - return Container( - width: MediaQuery.of(context).size.width, - margin: EdgeInsets.symmetric(horizontal: 5.0), - decoration: BoxDecoration( - color: Colors.amber - ), - child: Text('text $i', style: TextStyle(fontSize: 16.0),) - ); - }, - ); - }).toList(), -) -``` - -## Params - -```dart - -CarouselSlider( - items: items, - options: CarouselOptions( - height: 400, - aspectRatio: 16/9, - viewportFraction: 0.8, - initialPage: 0, - enableInfiniteScroll: true, - reverse: false, - autoPlay: true, - autoPlayInterval: Duration(seconds: 3), - autoPlayAnimationDuration: Duration(milliseconds: 800), - autoPlayCurve: Curves.fastOutSlowIn, - enlargeCenterPage: true, - enlargeFactor: 0.3, - onPageChanged: callbackFunction, - scrollDirection: Axis.horizontal, - ) - ) -``` - -Since `v2.0.0`, you'll need to pass the options to `CarouselOptions`. For each option's usage you can refer to [carousel_options.dart](./lib/carousel_options.dart). - -**If you pass the `height` parameter, the `aspectRatio` parameter will be ignored.** - -## Build item widgets on demand - -This method will save memory by building items once it becomes necessary. This way they won't be built if they're not currently meant to be visible on screen. -It can be used to build different child item widgets related to content or by item index. - -```dart - -CarouselSlider.builder( - itemCount: 15, - itemBuilder: (BuildContext context, int itemIndex, int pageViewIndex) => - Container( - child: Text(itemIndex.toString()), - ), -) -``` - -## Carousel controller - -In order to manually control the pageview's position, you can create your own `CarouselController`, and pass it to `CarouselSlider`. Then you can use the `CarouselController` instance to manipulate the position. - -```dart -class CarouselDemo extends StatelessWidget { - CarouselController buttonCarouselController = CarouselController(); - - @override - Widget build(BuildContext context) => Column( - children: [ - CarouselSlider( - items: child, - carouselController: buttonCarouselController, - options: CarouselOptions( - autoPlay: false, - enlargeCenterPage: true, - viewportFraction: 0.9, - aspectRatio: 2.0, - initialPage: 2, - ), - ), - RaisedButton( - onPressed: () => buttonCarouselController.nextPage( - duration: Duration(milliseconds: 300), curve: Curves.linear), - child: Text('→'), - ) - ] - ); -} -``` - -### `CarouselController` methods - -#### `.nextPage({Duration duration, Curve curve})` - -Animate to the next page - -#### `.previousPage({Duration duration, Curve curve})` - -Animate to the previous page - -#### `.jumpToPage(int page)` - -Jump to the given page. - -#### `.animateToPage(int page, {Duration duration, Curve curve})` - -Animate to the given page. - -## Screenshot - -Basic text carousel demo: - -![simple](screenshot/basic.gif) - -Basic image carousel demo: - -![image](screenshot/image.gif) - -A more complicated image carousel slider demo: - -![complicated image](screenshot/complicated-image.gif) - -Fullscreen image carousel slider demo: - -![fullscreen](screenshot/fullscreen.gif) - -Image carousel slider with custom indicator demo: - -![indicator](screenshot/indicator.gif) - -Custom `CarouselController` and manually control the pageview position demo: - -![manual](screenshot/manually.gif) - -Vertical carousel slider demo: - -![vertical](screenshot/vertical.gif) - -Simple on-demand image carousel slider, with image auto prefetch demo: - -![prefetch](screenshot/preload.gif) - -No infinite scroll demo: - -![noloop](screenshot/noloop.gif) - -All screenshots above can be found at the example project. - -## License - -MIT diff --git a/packages/carousel_slider/lib/carousel_controller.dart b/packages/carousel_slider/lib/carousel_controller.dart deleted file mode 100644 index 4e747d9d..00000000 --- a/packages/carousel_slider/lib/carousel_controller.dart +++ /dev/null @@ -1,149 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/material.dart' hide CarouselController; - -import 'carousel_options.dart'; -import 'carousel_state.dart'; -import 'utils.dart'; - -abstract class CarouselController { - bool get ready; - - Future get onReady; - - Future nextPage({Duration? duration, Curve? curve}); - - Future previousPage({Duration? duration, Curve? curve}); - - void jumpToPage(int page); - - Future animateToPage(int page, {Duration? duration, Curve? curve}); - - void startAutoPlay(); - - void stopAutoPlay(); - - factory CarouselController() => CarouselControllerImpl(); -} - -class CarouselControllerImpl implements CarouselController { - final Completer _readyCompleter = Completer(); - - CarouselState? _state; - - set state(CarouselState? state) { - _state = state; - if (!_readyCompleter.isCompleted) { - _readyCompleter.complete(); - } - } - - void _setModeController() => - _state!.changeMode(CarouselPageChangedReason.controller); - - @override - bool get ready => _state != null; - - @override - Future get onReady => _readyCompleter.future; - - /// Animates the controlled [CarouselSlider] to the next page. - /// - /// The animation lasts for the given duration and follows the given curve. - /// The returned [Future] resolves when the animation completes. - Future nextPage( - {Duration? duration = const Duration(milliseconds: 300), - Curve? curve = Curves.linear}) async { - final bool isNeedResetTimer = _state!.options.pauseAutoPlayOnManualNavigate; - if (isNeedResetTimer) { - _state!.onResetTimer(); - } - _setModeController(); - await _state!.pageController!.nextPage(duration: duration!, curve: curve!); - if (isNeedResetTimer) { - _state!.onResumeTimer(); - } - } - - /// Animates the controlled [CarouselSlider] to the previous page. - /// - /// The animation lasts for the given duration and follows the given curve. - /// The returned [Future] resolves when the animation completes. - Future previousPage( - {Duration? duration = const Duration(milliseconds: 300), - Curve? curve = Curves.linear}) async { - final bool isNeedResetTimer = _state!.options.pauseAutoPlayOnManualNavigate; - if (isNeedResetTimer) { - _state!.onResetTimer(); - } - _setModeController(); - await _state!.pageController! - .previousPage(duration: duration!, curve: curve!); - if (isNeedResetTimer) { - _state!.onResumeTimer(); - } - } - - /// Changes which page is displayed in the controlled [CarouselSlider]. - /// - /// Jumps the page position from its current value to the given value, - /// without animation, and without checking if the new value is in range. - void jumpToPage(int page) { - final index = getRealIndex(_state!.pageController!.page!.toInt(), - _state!.realPage - _state!.initialPage, _state!.itemCount); - - _setModeController(); - final int pageToJump = _state!.pageController!.page!.toInt() + page - index; - return _state!.pageController!.jumpToPage(pageToJump); - } - - /// Animates the controlled [CarouselSlider] from the current page to the given page. - /// - /// The animation lasts for the given duration and follows the given curve. - /// The returned [Future] resolves when the animation completes. - Future animateToPage(int page, - {Duration? duration = const Duration(milliseconds: 300), - Curve? curve = Curves.linear}) async { - final bool isNeedResetTimer = _state!.options.pauseAutoPlayOnManualNavigate; - if (isNeedResetTimer) { - _state!.onResetTimer(); - } - final index = getRealIndex(_state!.pageController!.page!.toInt(), - _state!.realPage - _state!.initialPage, _state!.itemCount); - int smallestMovement = page - index; - if (_state!.options.enableInfiniteScroll && - _state!.itemCount != null && - _state!.options.animateToClosest) { - if ((page - index).abs() > (page + _state!.itemCount! - index).abs()) { - smallestMovement = page + _state!.itemCount! - index; - } else if ((page - index).abs() > - (page - _state!.itemCount! - index).abs()) { - smallestMovement = page - _state!.itemCount! - index; - } - } - _setModeController(); - await _state!.pageController!.animateToPage( - _state!.pageController!.page!.toInt() + smallestMovement, - duration: duration!, - curve: curve!); - if (isNeedResetTimer) { - _state!.onResumeTimer(); - } - } - - /// Starts the controlled [CarouselSlider] autoplay. - /// - /// The carousel will only autoPlay if the [autoPlay] parameter - /// in [CarouselOptions] is true. - void startAutoPlay() { - _state!.onResumeTimer(); - } - - /// Stops the controlled [CarouselSlider] from autoplaying. - /// - /// This is a more on-demand way of doing this. Use the [autoPlay] - /// parameter in [CarouselOptions] to specify the autoPlay behaviour of the carousel. - void stopAutoPlay() { - _state!.onResetTimer(); - } -} diff --git a/packages/carousel_slider/lib/carousel_options.dart b/packages/carousel_slider/lib/carousel_options.dart deleted file mode 100644 index dec4c531..00000000 --- a/packages/carousel_slider/lib/carousel_options.dart +++ /dev/null @@ -1,223 +0,0 @@ -import 'package:flutter/material.dart' hide CarouselController; - -enum CarouselPageChangedReason { timed, manual, controller } - -enum CenterPageEnlargeStrategy { scale, height, zoom } - -class CarouselOptions { - /// Set carousel height and overrides any existing [aspectRatio]. - final double? height; - - /// Aspect ratio is used if no height have been declared. - /// - /// Defaults to 16:9 aspect ratio. - final double aspectRatio; - - /// The fraction of the viewport that each page should occupy. - /// - /// Defaults to 0.8, which means each page fills 80% of the carousel. - final double viewportFraction; - - /// The initial page to show when first creating the [CarouselSlider]. - /// - /// Defaults to 0. - final int initialPage; - - ///Determines if carousel should loop infinitely or be limited to item length. - /// - ///Defaults to true, i.e. infinite loop. - final bool enableInfiniteScroll; - - ///Determines if carousel should loop to the closest occurence of requested page. - /// - ///Defaults to true. - final bool animateToClosest; - - /// Reverse the order of items if set to true. - /// - /// Defaults to false. - final bool reverse; - - /// Enables auto play, sliding one page at a time. - /// - /// Use [autoPlayInterval] to determent the frequency of slides. - /// Defaults to false. - final bool autoPlay; - - /// Sets Duration to determent the frequency of slides when - /// - /// [autoPlay] is set to true. - /// Defaults to 4 seconds. - final Duration autoPlayInterval; - - /// The animation duration between two transitioning pages while in auto playback. - /// - /// Defaults to 800 ms. - final Duration autoPlayAnimationDuration; - - /// Determines the animation curve physics. - /// - /// Defaults to [Curves.fastOutSlowIn]. - final Curve autoPlayCurve; - - /// Determines if current page should be larger than the side images, - /// creating a feeling of depth in the carousel. - /// - /// Defaults to false. - final bool? enlargeCenterPage; - - /// The axis along which the page view scrolls. - /// - /// Defaults to [Axis.horizontal]. - final Axis scrollDirection; - - /// Called whenever the page in the center of the viewport changes. - final Function(int index, CarouselPageChangedReason reason)? onPageChanged; - - /// Called whenever the carousel is scrolled - final ValueChanged? onScrolled; - - /// How the carousel should respond to user input. - /// - /// For example, determines how the items continues to animate after the - /// user stops dragging the page view. - /// - /// The physics are modified to snap to page boundaries using - /// [PageScrollPhysics] prior to being used. - /// - /// Defaults to matching platform conventions. - final ScrollPhysics? scrollPhysics; - - /// Set to false to disable page snapping, useful for custom scroll behavior. - /// - /// Default to `true`. - final bool pageSnapping; - - /// If `true`, the auto play function will be paused when user is interacting with - /// the carousel, and will be resumed when user finish interacting. - /// Default to `true`. - final bool pauseAutoPlayOnTouch; - - /// If `true`, the auto play function will be paused when user is calling - /// pageController's `nextPage` or `previousPage` or `animateToPage` method. - /// And after the animation complete, the auto play will be resumed. - /// Default to `true`. - final bool pauseAutoPlayOnManualNavigate; - - /// If `enableInfiniteScroll` is `false`, and `autoPlay` is `true`, this option - /// decide the carousel should go to the first item when it reach the last item or not. - /// If set to `true`, the auto play will be paused when it reach the last item. - /// If set to `false`, the auto play function will animate to the first item when it was - /// in the last item. - final bool pauseAutoPlayInFiniteScroll; - - /// Pass a `PageStoragekey` if you want to keep the pageview's position when it was recreated. - final PageStorageKey? pageViewKey; - - /// Use [enlargeStrategy] to determine which method to enlarge the center page. - final CenterPageEnlargeStrategy enlargeStrategy; - - /// How much the pages next to the center page will be scaled down. - /// If `enlargeCenterPage` is false, this property has no effect. - final double enlargeFactor; - - /// Whether or not to disable the `Center` widget for each slide. - final bool disableCenter; - - /// Whether to add padding to both ends of the list. - /// If this is set to true and [viewportFraction] < 1.0, padding will be added such that the first and last child slivers will be in the center of the viewport when scrolled all the way to the start or end, respectively. - /// If [viewportFraction] >= 1.0, this property has no effect. - /// This property defaults to true and must not be null. - final bool padEnds; - - /// Exposed clipBehavior of PageView - final Clip clipBehavior; - - CarouselOptions({ - this.height, - this.aspectRatio = 16 / 9, - this.viewportFraction = 0.8, - this.initialPage = 0, - this.enableInfiniteScroll = true, - this.animateToClosest = true, - this.reverse = false, - this.autoPlay = false, - this.autoPlayInterval = const Duration(seconds: 4), - this.autoPlayAnimationDuration = const Duration(milliseconds: 800), - this.autoPlayCurve = Curves.fastOutSlowIn, - this.enlargeCenterPage = false, - this.onPageChanged, - this.onScrolled, - this.scrollPhysics, - this.pageSnapping = true, - this.scrollDirection = Axis.horizontal, - this.pauseAutoPlayOnTouch = true, - this.pauseAutoPlayOnManualNavigate = true, - this.pauseAutoPlayInFiniteScroll = false, - this.pageViewKey, - this.enlargeStrategy = CenterPageEnlargeStrategy.scale, - this.enlargeFactor = 0.3, - this.disableCenter = false, - this.padEnds = true, - this.clipBehavior = Clip.hardEdge, - }); - - ///Generate new [CarouselOptions] based on old ones. - - CarouselOptions copyWith( - {double? height, - double? aspectRatio, - double? viewportFraction, - int? initialPage, - bool? enableInfiniteScroll, - bool? reverse, - bool? autoPlay, - Duration? autoPlayInterval, - Duration? autoPlayAnimationDuration, - Curve? autoPlayCurve, - bool? enlargeCenterPage, - Function(int index, CarouselPageChangedReason reason)? onPageChanged, - ValueChanged? onScrolled, - ScrollPhysics? scrollPhysics, - bool? pageSnapping, - Axis? scrollDirection, - bool? pauseAutoPlayOnTouch, - bool? pauseAutoPlayOnManualNavigate, - bool? pauseAutoPlayInFiniteScroll, - PageStorageKey? pageViewKey, - CenterPageEnlargeStrategy? enlargeStrategy, - double? enlargeFactor, - bool? disableCenter, - Clip? clipBehavior, - bool? padEnds}) => - CarouselOptions( - height: height ?? this.height, - aspectRatio: aspectRatio ?? this.aspectRatio, - viewportFraction: viewportFraction ?? this.viewportFraction, - initialPage: initialPage ?? this.initialPage, - enableInfiniteScroll: enableInfiniteScroll ?? this.enableInfiniteScroll, - reverse: reverse ?? this.reverse, - autoPlay: autoPlay ?? this.autoPlay, - autoPlayInterval: autoPlayInterval ?? this.autoPlayInterval, - autoPlayAnimationDuration: - autoPlayAnimationDuration ?? this.autoPlayAnimationDuration, - autoPlayCurve: autoPlayCurve ?? this.autoPlayCurve, - enlargeCenterPage: enlargeCenterPage ?? this.enlargeCenterPage, - onPageChanged: onPageChanged ?? this.onPageChanged, - onScrolled: onScrolled ?? this.onScrolled, - scrollPhysics: scrollPhysics ?? this.scrollPhysics, - pageSnapping: pageSnapping ?? this.pageSnapping, - scrollDirection: scrollDirection ?? this.scrollDirection, - pauseAutoPlayOnTouch: pauseAutoPlayOnTouch ?? this.pauseAutoPlayOnTouch, - pauseAutoPlayOnManualNavigate: - pauseAutoPlayOnManualNavigate ?? this.pauseAutoPlayOnManualNavigate, - pauseAutoPlayInFiniteScroll: - pauseAutoPlayInFiniteScroll ?? this.pauseAutoPlayInFiniteScroll, - pageViewKey: pageViewKey ?? this.pageViewKey, - enlargeStrategy: enlargeStrategy ?? this.enlargeStrategy, - enlargeFactor: enlargeFactor ?? this.enlargeFactor, - disableCenter: disableCenter ?? this.disableCenter, - clipBehavior: clipBehavior ?? this.clipBehavior, - padEnds: padEnds ?? this.padEnds, - ); -} diff --git a/packages/carousel_slider/lib/carousel_slider.dart b/packages/carousel_slider/lib/carousel_slider.dart deleted file mode 100644 index 8b33da10..00000000 --- a/packages/carousel_slider/lib/carousel_slider.dart +++ /dev/null @@ -1,398 +0,0 @@ -library carousel_slider; - -import 'dart:async'; - -import 'package:carousel_slider/carousel_state.dart'; -import 'package:flutter/gestures.dart'; -import 'package:flutter/material.dart' hide CarouselController; - -import 'carousel_controller.dart'; -import 'carousel_options.dart'; -import 'utils.dart'; - -export 'carousel_controller.dart'; -export 'carousel_options.dart'; - -typedef Widget ExtendedIndexedWidgetBuilder( - BuildContext context, int index, int realIndex); - -class CarouselSlider extends StatefulWidget { - /// [CarouselOptions] to create a [CarouselState] with - final CarouselOptions options; - - final bool? disableGesture; - - /// The widgets to be shown in the carousel of default constructor - final List? items; - - /// The widget item builder that will be used to build item on demand - /// The third argument is the PageView's real index, can be used to cooperate - /// with Hero. - final ExtendedIndexedWidgetBuilder? itemBuilder; - - /// A [MapController], used to control the map. - final CarouselControllerImpl _carouselController; - - final int? itemCount; - - CarouselSlider( - {required this.items, - required this.options, - this.disableGesture, - CarouselController? carouselController, - Key? key}) - : itemBuilder = null, - itemCount = items != null ? items.length : 0, - _carouselController = carouselController != null - ? carouselController as CarouselControllerImpl - : CarouselController() as CarouselControllerImpl, - super(key: key); - - /// The on demand item builder constructor - CarouselSlider.builder( - {required this.itemCount, - required this.itemBuilder, - required this.options, - this.disableGesture, - CarouselController? carouselController, - Key? key}) - : items = null, - _carouselController = carouselController != null - ? carouselController as CarouselControllerImpl - : CarouselController() as CarouselControllerImpl, - super(key: key); - - @override - CarouselSliderState createState() => CarouselSliderState(_carouselController); -} - -class CarouselSliderState extends State - with TickerProviderStateMixin { - final CarouselControllerImpl carouselController; - Timer? timer; - - CarouselOptions get options => widget.options; - - CarouselState? carouselState; - - PageController? pageController; - - /// mode is related to why the page is being changed - CarouselPageChangedReason mode = CarouselPageChangedReason.controller; - - CarouselSliderState(this.carouselController); - - void changeMode(CarouselPageChangedReason _mode) { - mode = _mode; - } - - @override - void didUpdateWidget(CarouselSlider oldWidget) { - carouselState!.options = options; - carouselState!.itemCount = widget.itemCount; - - // pageController needs to be re-initialized to respond to state changes - pageController = PageController( - viewportFraction: options.viewportFraction, - initialPage: carouselState!.realPage, - ); - carouselState!.pageController = pageController; - - // handle autoplay when state changes - handleAutoPlay(); - - super.didUpdateWidget(oldWidget); - } - - @override - void initState() { - super.initState(); - carouselState = - CarouselState(this.options, clearTimer, resumeTimer, this.changeMode); - - carouselState!.itemCount = widget.itemCount; - carouselController.state = carouselState; - carouselState!.initialPage = widget.options.initialPage; - carouselState!.realPage = options.enableInfiniteScroll - ? carouselState!.realPage + carouselState!.initialPage - : carouselState!.initialPage; - handleAutoPlay(); - - pageController = PageController( - viewportFraction: options.viewportFraction, - initialPage: carouselState!.realPage, - ); - - carouselState!.pageController = pageController; - } - - Timer? getTimer() { - return widget.options.autoPlay - ? Timer.periodic(widget.options.autoPlayInterval, (_) { - if (!mounted) { - clearTimer(); - return; - } - - final route = ModalRoute.of(context); - if (route?.isCurrent == false) { - return; - } - - CarouselPageChangedReason previousReason = mode; - changeMode(CarouselPageChangedReason.timed); - int nextPage = carouselState!.pageController!.page!.round() + 1; - int itemCount = widget.itemCount ?? widget.items!.length; - - if (nextPage >= itemCount && - widget.options.enableInfiniteScroll == false) { - if (widget.options.pauseAutoPlayInFiniteScroll) { - clearTimer(); - return; - } - nextPage = 0; - } - - carouselState!.pageController! - .animateToPage(nextPage, - duration: widget.options.autoPlayAnimationDuration, - curve: widget.options.autoPlayCurve) - .then((_) => changeMode(previousReason)); - }) - : null; - } - - void clearTimer() { - if (timer != null) { - timer?.cancel(); - timer = null; - } - } - - void resumeTimer() { - if (timer == null) { - timer = getTimer(); - } - } - - void handleAutoPlay() { - bool autoPlayEnabled = widget.options.autoPlay; - - if (autoPlayEnabled && timer != null) return; - - clearTimer(); - if (autoPlayEnabled) { - resumeTimer(); - } - } - - Widget getGestureWrapper(Widget child) { - Widget wrapper; - if (widget.options.height != null) { - wrapper = Container(height: widget.options.height, child: child); - } else { - wrapper = - AspectRatio(aspectRatio: widget.options.aspectRatio, child: child); - } - - if (true == widget.disableGesture) { - return NotificationListener( - onNotification: (Notification notification) { - if (widget.options.onScrolled != null && - notification is ScrollUpdateNotification) { - widget.options.onScrolled!(carouselState!.pageController!.page); - } - return false; - }, - child: wrapper, - ); - } - - return RawGestureDetector( - behavior: HitTestBehavior.opaque, - gestures: { - _MultipleGestureRecognizer: - GestureRecognizerFactoryWithHandlers<_MultipleGestureRecognizer>( - () => _MultipleGestureRecognizer(), - (_MultipleGestureRecognizer instance) { - instance.onStart = (_) { - onStart(); - }; - instance.onDown = (_) { - onPanDown(); - }; - instance.onEnd = (_) { - onPanUp(); - }; - instance.onCancel = () { - onPanUp(); - }; - }), - }, - child: NotificationListener( - onNotification: (Notification notification) { - if (widget.options.onScrolled != null && - notification is ScrollUpdateNotification) { - widget.options.onScrolled!(carouselState!.pageController!.page); - } - return false; - }, - child: wrapper, - ), - ); - } - - Widget getCenterWrapper(Widget child) { - if (widget.options.disableCenter) { - return Container( - child: child, - ); - } - return Center(child: child); - } - - Widget getEnlargeWrapper(Widget? child, - {double? width, - double? height, - double? scale, - required double itemOffset}) { - if (widget.options.enlargeStrategy == CenterPageEnlargeStrategy.height) { - return SizedBox(child: child, width: width, height: height); - } - if (widget.options.enlargeStrategy == CenterPageEnlargeStrategy.zoom) { - late Alignment alignment; - final bool horizontal = options.scrollDirection == Axis.horizontal; - if (itemOffset > 0) { - alignment = horizontal ? Alignment.centerRight : Alignment.bottomCenter; - } else { - alignment = horizontal ? Alignment.centerLeft : Alignment.topCenter; - } - return Transform.scale(child: child, scale: scale!, alignment: alignment); - } - return Transform.scale( - scale: scale!, - child: Container(child: child, width: width, height: height)); - } - - void onStart() { - changeMode(CarouselPageChangedReason.manual); - } - - void onPanDown() { - if (widget.options.pauseAutoPlayOnTouch) { - clearTimer(); - } - - changeMode(CarouselPageChangedReason.manual); - } - - void onPanUp() { - if (widget.options.pauseAutoPlayOnTouch) { - resumeTimer(); - } - } - - @override - void dispose() { - super.dispose(); - clearTimer(); - } - - @override - Widget build(BuildContext context) { - return getGestureWrapper(PageView.builder( - padEnds: widget.options.padEnds, - scrollBehavior: ScrollConfiguration.of(context).copyWith( - scrollbars: false, - overscroll: false, - dragDevices: { - PointerDeviceKind.touch, - PointerDeviceKind.mouse, - }, - ), - clipBehavior: widget.options.clipBehavior, - physics: widget.options.scrollPhysics, - scrollDirection: widget.options.scrollDirection, - pageSnapping: widget.options.pageSnapping, - controller: carouselState!.pageController, - reverse: widget.options.reverse, - itemCount: widget.options.enableInfiniteScroll ? null : widget.itemCount, - key: widget.options.pageViewKey, - onPageChanged: (int index) { - int currentPage = getRealIndex(index + carouselState!.initialPage, - carouselState!.realPage, widget.itemCount); - if (widget.options.onPageChanged != null) { - widget.options.onPageChanged!(currentPage, mode); - } - }, - itemBuilder: (BuildContext context, int idx) { - final int index = getRealIndex(idx + carouselState!.initialPage, - carouselState!.realPage, widget.itemCount); - - return AnimatedBuilder( - animation: carouselState!.pageController!, - child: (widget.items != null) - ? (widget.items!.length > 0 ? widget.items![index] : Container()) - : widget.itemBuilder!(context, index, idx), - builder: (BuildContext context, child) { - double distortionValue = 1.0; - // if `enlargeCenterPage` is true, we must calculate the carousel item's height - // to display the visual effect - double itemOffset = 0; - if (widget.options.enlargeCenterPage != null && - widget.options.enlargeCenterPage == true) { - // pageController.page can only be accessed after the first build, - // so in the first build we calculate the itemoffset manually - var position = carouselState?.pageController?.position; - if (position != null && - position.hasPixels && - position.hasContentDimensions) { - var _page = carouselState?.pageController?.page; - if (_page != null) { - itemOffset = _page - idx; - } - } else { - BuildContext storageContext = carouselState! - .pageController!.position.context.storageContext; - final double? previousSavedPosition = - PageStorage.of(storageContext)?.readState(storageContext) - as double?; - if (previousSavedPosition != null) { - itemOffset = previousSavedPosition - idx.toDouble(); - } else { - itemOffset = - carouselState!.realPage.toDouble() - idx.toDouble(); - } - } - - final double enlargeFactor = - options.enlargeFactor.clamp(0.0, 1.0); - final num distortionRatio = - (1 - (itemOffset.abs() * enlargeFactor)).clamp(0.0, 1.0); - distortionValue = - Curves.easeOut.transform(distortionRatio as double); - } - - final double height = widget.options.height ?? - MediaQuery.of(context).size.width * - (1 / widget.options.aspectRatio); - - if (widget.options.scrollDirection == Axis.horizontal) { - return getCenterWrapper(getEnlargeWrapper(child, - height: distortionValue * height, - scale: distortionValue, - itemOffset: itemOffset)); - } else { - return getCenterWrapper(getEnlargeWrapper(child, - width: distortionValue * MediaQuery.of(context).size.width, - scale: distortionValue, - itemOffset: itemOffset)); - } - }, - ); - }, - )); - } -} - -class _MultipleGestureRecognizer extends PanGestureRecognizer {} diff --git a/packages/carousel_slider/lib/carousel_state.dart b/packages/carousel_slider/lib/carousel_state.dart deleted file mode 100644 index b69e07d1..00000000 --- a/packages/carousel_slider/lib/carousel_state.dart +++ /dev/null @@ -1,41 +0,0 @@ -import 'package:carousel_slider/carousel_slider.dart'; -import 'package:flutter/material.dart'; - -class CarouselState { - /// The [CarouselOptions] to create this state - CarouselOptions options; - - /// [pageController] is created using the properties passed to the constructor - /// and can be used to control the [PageView] it is passed to. - PageController? pageController; - - /// The actual index of the [PageView]. - /// - /// This value can be ignored unless you know the carousel will be scrolled - /// backwards more then 10000 pages. - /// Defaults to 10000 to simulate infinite backwards scrolling. - int realPage = 10000; - - /// The initial index of the [PageView] on [CarouselSlider] init. - /// - int initialPage = 0; - - /// The widgets count that should be shown at carousel - int? itemCount; - - /// Will be called when using pageController to go to next page or - /// previous page. It will clear the autoPlay timer. - /// Internal use only - Function onResetTimer; - - /// Will be called when using pageController to go to next page or - /// previous page. It will restart the autoPlay timer. - /// Internal use only - Function onResumeTimer; - - /// The callback to set the Reason Carousel changed - Function(CarouselPageChangedReason) changeMode; - - CarouselState( - this.options, this.onResetTimer, this.onResumeTimer, this.changeMode); -} diff --git a/packages/carousel_slider/lib/utils.dart b/packages/carousel_slider/lib/utils.dart deleted file mode 100644 index dfc54ded..00000000 --- a/packages/carousel_slider/lib/utils.dart +++ /dev/null @@ -1,23 +0,0 @@ -/// Converts an index of a set size to the corresponding index of a collection of another size -/// as if they were circular. -/// -/// Takes a [position] from collection Foo, a [base] from where Foo's index originated -/// and the [length] of a second collection Baa, for which the correlating index is sought. -/// -/// For example; We have a Carousel of 10000(simulating infinity) but only 6 images. -/// We need to repeat the images to give the illusion of a never ending stream. -/// By calling _getRealIndex with position and base we get an offset. -/// This offset modulo our length, 6, will return a number between 0 and 5, which represent the image -/// to be placed in the given position. -int getRealIndex(int position, int base, int? length) { - final int offset = position - base; - return remainder(offset, length); -} - -/// Returns the remainder of the modulo operation [input] % [source], and adjust it for -/// negative values. -int remainder(int input, int? source) { - if (source == 0) return 0; - final int result = input % source!; - return result < 0 ? source + result : result; -} diff --git a/packages/carousel_slider/pubspec.yaml b/packages/carousel_slider/pubspec.yaml deleted file mode 100644 index 7919b651..00000000 --- a/packages/carousel_slider/pubspec.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: carousel_slider -description: A carousel slider widget, support infinite scroll and custom child widget. -homepage: https://github.com/serenader2014/flutter_carousel_slider -repository: https://github.com/serenader2014/flutter_carousel_slider -version: 4.2.1 - -environment: - sdk: '>=3.5.0 <4.0.0' - -dependencies: - flutter: - sdk: flutter - -dev_dependencies: - flutter_test: - sdk: flutter diff --git a/packages/carousel_slider/screenshot/basic.gif b/packages/carousel_slider/screenshot/basic.gif deleted file mode 100644 index 40df4c8e..00000000 Binary files a/packages/carousel_slider/screenshot/basic.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/complicated-image.gif b/packages/carousel_slider/screenshot/complicated-image.gif deleted file mode 100644 index a4ea9a97..00000000 Binary files a/packages/carousel_slider/screenshot/complicated-image.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/fullscreen.gif b/packages/carousel_slider/screenshot/fullscreen.gif deleted file mode 100644 index 32413a23..00000000 Binary files a/packages/carousel_slider/screenshot/fullscreen.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/image.gif b/packages/carousel_slider/screenshot/image.gif deleted file mode 100644 index 6868bd45..00000000 Binary files a/packages/carousel_slider/screenshot/image.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/indicator.gif b/packages/carousel_slider/screenshot/indicator.gif deleted file mode 100644 index 657d6509..00000000 Binary files a/packages/carousel_slider/screenshot/indicator.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/manually.gif b/packages/carousel_slider/screenshot/manually.gif deleted file mode 100644 index f5931d3f..00000000 Binary files a/packages/carousel_slider/screenshot/manually.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/noloop.gif b/packages/carousel_slider/screenshot/noloop.gif deleted file mode 100644 index e6250b5e..00000000 Binary files a/packages/carousel_slider/screenshot/noloop.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/preload.gif b/packages/carousel_slider/screenshot/preload.gif deleted file mode 100644 index fab26392..00000000 Binary files a/packages/carousel_slider/screenshot/preload.gif and /dev/null differ diff --git a/packages/carousel_slider/screenshot/vertical.gif b/packages/carousel_slider/screenshot/vertical.gif deleted file mode 100644 index 93fed67d..00000000 Binary files a/packages/carousel_slider/screenshot/vertical.gif and /dev/null differ diff --git a/pubspec.lock b/pubspec.lock index 42c4afb9..7ade2a7f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -265,10 +265,11 @@ packages: carousel_slider: dependency: "direct main" description: - path: "packages/carousel_slider" - relative: true - source: path - version: "4.2.1" + name: carousel_slider + sha256: "7b006ec356205054af5beaef62e2221160ea36b90fb70a35e4deacd49d0349ae" + url: "https://pub.dev" + source: hosted + version: "5.0.0" characters: dependency: transitive description: @@ -329,10 +330,10 @@ packages: dependency: "direct main" description: name: connectivity_plus - sha256: "3e7d1d9dbae40ae82cbe6c23c518f0c4ffe32764ee9749b9a99d32cbac8734f6" + sha256: "2056db5241f96cdc0126bd94459fc4cdc13876753768fc7a31c425e50a7177d0" url: "https://pub.dev" source: hosted - version: "6.0.4" + version: "6.0.5" connectivity_plus_platform_interface: dependency: transitive description: @@ -433,10 +434,10 @@ packages: dependency: "direct main" description: name: device_info_plus - sha256: "93429694c9253d2871b3af80cf11b3cbb5c65660d402ed7bf69854ce4a089f82" + sha256: a7fd703482b391a87d60b6061d04dfdeab07826b96f9abd8f5ed98068acc0074 url: "https://pub.dev" source: hosted - version: "10.1.1" + version: "10.1.2" device_info_plus_platform_interface: dependency: transitive description: @@ -694,10 +695,10 @@ packages: dependency: "direct main" description: name: flutter_form_builder - sha256: "447f8808f68070f7df968e8063aada3c9d2e90e789b5b70f3b44e4b315212656" + sha256: ba557c8933bef822fe5469f9267579379f362faf60c7a776c93bfa79cdda0446 url: "https://pub.dev" source: hosted - version: "9.3.0" + version: "9.4.0" flutter_gen_core: dependency: transitive description: @@ -1301,10 +1302,10 @@ packages: dependency: "direct main" description: name: package_info_plus - sha256: "4de6c36df77ffbcef0a5aefe04669d33f2d18397fea228277b852a2d4e58e860" + sha256: a75164ade98cb7d24cfd0a13c6408927c6b217fa60dee5a7ff5c116a58f28918 url: "https://pub.dev" source: hosted - version: "8.0.1" + version: "8.0.2" package_info_plus_platform_interface: dependency: transitive description: @@ -1445,10 +1446,10 @@ packages: dependency: transitive description: name: photo_manager - sha256: "2f98fed8fede27eaf55021a1ce382609a715b52096a94a315f99ae33b6d2eaab" + sha256: "1e8bbe46a6858870e34c976aafd85378bed221ce31c1201961eba9ad3d94df9f" url: "https://pub.dev" source: hosted - version: "3.2.2" + version: "3.2.3" photo_manager_image_provider: dependency: transitive description: @@ -1573,34 +1574,34 @@ packages: dependency: transitive description: name: sentry - sha256: "76ad4fab90ff82427c26939bd79dc4df345a081e2b1cd5954b947e340b9af9a5" + sha256: "0f787e27ff617e4f88f7074977240406a9c5509444bac64a4dfa5b3200fb5632" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.7.0" sentry_dio: dependency: "direct main" description: name: sentry_dio - sha256: "843fc5769e6e5e0d6d27b8f8ded1e5abcbe6934a1f2d71c743de4d1d73759e9f" + sha256: "1577428b1f03d65f077cb0e667061f9ae8c2df0cc9c6e77f2616200abaf28d86" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.7.0" sentry_flutter: dependency: "direct main" description: name: sentry_flutter - sha256: a7c92014701093a7c0a373e1a47c54ec428d8468d8bf2b793fee7ea1b085c21b + sha256: fbbb47d72ccca48be25bf3c2ced6ab6e872991af3a0ba78e54be8d138f2e053f url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.7.0" sentry_logging: dependency: "direct main" description: name: sentry_logging - sha256: e381684f55c6b780df0ad030677fe6eb69582034f68291b5336c6a1b89195762 + sha256: "64e8ab603877bb2d8cd844ec057477d6054c2bb5532c6f3b5c3021c25841194a" url: "https://pub.dev" source: hosted - version: "8.6.0" + version: "8.7.0" shared_preferences: dependency: "direct main" description: @@ -1613,26 +1614,26 @@ packages: dependency: transitive description: name: shared_preferences_android - sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" + sha256: a7e8467e9181cef109f601e3f65765685786c1a738a83d7fbbde377589c0d974 url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.3.1" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" + sha256: "776786cff96324851b656777648f36ac772d88bc4c669acff97b7fce5de3c849" url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.5.1" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: @@ -1645,18 +1646,18 @@ packages: dependency: transitive description: name: shared_preferences_web - sha256: "59dc807b94d29d52ddbb1b3c0d3b9d0a67fc535a64e62a5542c8db0513fcb6c2" + sha256: d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shelf: dependency: transitive description: @@ -1994,10 +1995,10 @@ packages: dependency: transitive description: name: url_launcher_linux - sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + sha256: e2b9622b4007f97f504cd64c0128309dfb978ae66adbe944125ed9e1750f06af url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.2.0" url_launcher_macos: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index d3f0e106..cca5b858 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -39,16 +39,15 @@ dependencies: async: ^2.11.0 bloc: ^8.1.4 cached_network_image: ^3.4.0 - carousel_slider: - path: ./packages/carousel_slider + carousel_slider: ^5.0.0 clipboard: ^0.1.3 collection: ^1.18.0 - connectivity_plus: ^6.0.4 + connectivity_plus: ^6.0.5 convert: ^3.1.1 crypto: ^3.0.3 cupertino_icons: ^1.0.8 deep_collection: ^1.0.2 - device_info_plus: ^10.1.1 + device_info_plus: ^10.1.2 dio: ^5.5.0+1 dxcaptcha_flutter: ^0.0.1+1 easy_refresh: ^3.4.0 @@ -62,7 +61,7 @@ dependencies: sdk: flutter flutter_bloc: ^8.1.6 flutter_easyloading: ^3.0.5 - flutter_form_builder: ^9.3.0 + flutter_form_builder: ^9.4.0 flutter_intro: ^3.3.1 flutter_local_notifications: ^17.2.2 flutter_localizations: @@ -88,16 +87,16 @@ dependencies: mime: ^1.0.5 minio: # add dart 3.4.x support path: ./packages/minio - package_info_plus: ^8.0.1 + package_info_plus: ^8.0.2 path: ^1.9.0 path_provider: ^2.1.4 permission_handler: ^11.3.1 photo_view: ^0.15.0 pretty_dio_logger: ^1.4.0 reorderables: ^0.6.0 - sentry_dio: ^8.6.0 - sentry_flutter: ^8.6.0 - sentry_logging: ^8.6.0 + sentry_dio: ^8.7.0 + sentry_flutter: ^8.7.0 + sentry_logging: ^8.7.0 shared_preferences: ^2.3.1 slang: ^3.31.1 slang_flutter: ^3.31.0