From df229dd6198745b06ae6c1ec6041d4ad22f30343 Mon Sep 17 00:00:00 2001 From: nnn-uchisawa <53939263+nnn-uchisawa@users.noreply.github.com> Date: Wed, 22 Oct 2025 18:38:19 +0900 Subject: [PATCH 1/2] Refactor Provider to Riverpod and minimum SDK/Flutter versions - Bump minimum Dart SDK to 3.4.0 and Flutter to 3.22.0 - Add required dependencies: flutter_riverpod, riverpod_annotation, freezed_annotation - Add dev dependencies for code generation: build_runner, riverpod_generator, freezed - Migrate from custom provider to Riverpod with code generation - Add page offset state management using Riverpod and Freezed - Generate necessary code files using build_runner - All static analysis checks pass successfully --- .../example/pubspec.lock | 134 ++++- .../example/pubspec.yaml | 2 +- .../lib/background.dart | 23 +- .../lib/background_body.dart | 3 +- .../lib/background_controller.dart | 9 +- .../lib/background_final_button.dart | 3 +- .../lib/background_image.dart | 48 +- .../lib/flutter_onboarding_slider.dart | 183 +++--- .../lib/onboarding_navigation_bar.dart | 34 +- .../lib/page_offset_notifier.dart | 27 + .../lib/page_offset_notifier.g.dart | 179 ++++++ .../lib/page_offset_provider.dart | 17 - .../lib/page_offset_state.dart | 11 + .../lib/page_offset_state.freezed.dart | 163 ++++++ .../flutter_onboarding_slider/pubspec.lock | 536 ++++++++++++++++-- .../flutter_onboarding_slider/pubspec.yaml | 11 +- 16 files changed, 1167 insertions(+), 216 deletions(-) create mode 100644 packages/flutter_onboarding_slider/lib/page_offset_notifier.dart create mode 100644 packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart delete mode 100644 packages/flutter_onboarding_slider/lib/page_offset_provider.dart create mode 100644 packages/flutter_onboarding_slider/lib/page_offset_state.dart create mode 100644 packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart diff --git a/packages/flutter_onboarding_slider/example/pubspec.lock b/packages/flutter_onboarding_slider/example/pubspec.lock index 369223f8..f5c652d4 100644 --- a/packages/flutter_onboarding_slider/example/pubspec.lock +++ b/packages/flutter_onboarding_slider/example/pubspec.lock @@ -21,26 +21,26 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" collection: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.19.1" cupertino_icons: dependency: "direct main" description: @@ -53,10 +53,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" flutter: dependency: "direct main" description: flutter @@ -77,19 +77,59 @@ packages: relative: true source: path version: "1.0.11" + flutter_riverpod: + dependency: transitive + description: + name: flutter_riverpod + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + url: "https://pub.dev" + source: hosted + version: "2.6.1" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" - js: + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + url: "https://pub.dev" + source: hosted + version: "2.4.4" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + url: "https://pub.dev" + source: hosted + version: "11.0.2" + leak_tracker_flutter_testing: dependency: transitive description: - name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" lints: dependency: transitive description: @@ -102,26 +142,26 @@ packages: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.16.0" nested: dependency: transitive description: @@ -134,10 +174,10 @@ packages: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.1" provider: dependency: transitive description: @@ -146,11 +186,27 @@ packages: url: "https://pub.dev" source: hosted version: "6.0.1" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + riverpod_annotation: + dependency: transitive + description: + name: riverpod_annotation + sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 + url: "https://pub.dev" + source: hosted + version: "2.6.1" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: @@ -163,18 +219,26 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.1" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" string_scanner: dependency: transitive description: @@ -195,18 +259,26 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.7.6" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" + source: hosted + version: "15.0.2" sdks: - dart: ">=3.0.0-0 <4.0.0" - flutter: ">=1.17.0" + dart: ">=3.8.0-0 <4.0.0" + flutter: ">=3.22.0" diff --git a/packages/flutter_onboarding_slider/example/pubspec.yaml b/packages/flutter_onboarding_slider/example/pubspec.yaml index 68186a2a..28e13654 100644 --- a/packages/flutter_onboarding_slider/example/pubspec.yaml +++ b/packages/flutter_onboarding_slider/example/pubspec.yaml @@ -20,7 +20,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev version: 1.0.0+1 environment: - sdk: '>=2.18.6 <3.0.0' + sdk: '>=3.4.0 <4.0.0' # Dependencies specify other packages that your package needs in order to work. # To automatically upgrade your package dependencies to the latest versions diff --git a/packages/flutter_onboarding_slider/lib/background.dart b/packages/flutter_onboarding_slider/lib/background.dart index b160e085..a7a71f6c 100644 --- a/packages/flutter_onboarding_slider/lib/background.dart +++ b/packages/flutter_onboarding_slider/lib/background.dart @@ -1,5 +1,7 @@ +import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_onboarding_slider/background_image.dart'; + +import 'background_image.dart'; class Background extends StatelessWidget { final Widget child; @@ -9,8 +11,10 @@ class Background extends StatelessWidget { final double imageVerticalOffset; final double imageHorizontalOffset; final bool centerBackground; + final PageController pageController; - Background({ + const Background({ + super.key, required this.imageVerticalOffset, required this.child, required this.centerBackground, @@ -18,6 +22,7 @@ class Background extends StatelessWidget { required this.background, required this.speed, required this.imageHorizontalOffset, + required this.pageController, }); @override @@ -27,12 +32,14 @@ class Background extends StatelessWidget { children: [ for (int i = 0; i < totalPage; i++) BackgroundImage( - centerBackground: centerBackground, - imageHorizontalOffset: imageHorizontalOffset, - imageVerticalOffset: imageVerticalOffset, - id: totalPage - i, - speed: speed, - background: background[totalPage - i - 1]), + centerBackground: centerBackground, + imageHorizontalOffset: imageHorizontalOffset, + imageVerticalOffset: imageVerticalOffset, + id: totalPage - i, + speed: speed, + background: background[totalPage - i - 1], + pageController: pageController, + ), child, ], ); diff --git a/packages/flutter_onboarding_slider/lib/background_body.dart b/packages/flutter_onboarding_slider/lib/background_body.dart index 8268a735..1ce6b91e 100644 --- a/packages/flutter_onboarding_slider/lib/background_body.dart +++ b/packages/flutter_onboarding_slider/lib/background_body.dart @@ -6,7 +6,8 @@ class BackgroundBody extends StatelessWidget { final int totalPage; final List bodies; - BackgroundBody({ + const BackgroundBody({ + super.key, required this.controller, required this.function, required this.totalPage, diff --git a/packages/flutter_onboarding_slider/lib/background_controller.dart b/packages/flutter_onboarding_slider/lib/background_controller.dart index c4e30e70..92e7b0d9 100644 --- a/packages/flutter_onboarding_slider/lib/background_controller.dart +++ b/packages/flutter_onboarding_slider/lib/background_controller.dart @@ -7,20 +7,24 @@ class BackgroundController extends StatelessWidget { final bool indicatorAbove; final double indicatorPosition; final bool hasFloatingButton; + final Color backgroundColor; - BackgroundController({ + const BackgroundController({ + super.key, required this.currentPage, required this.totalPage, required this.controllerColor, required this.indicatorAbove, required this.hasFloatingButton, required this.indicatorPosition, + required this.backgroundColor, }); @override Widget build(BuildContext context) { return indicatorAbove ? Container( + color: backgroundColor, padding: EdgeInsets.only(bottom: 10), child: Row( mainAxisAlignment: MainAxisAlignment.center, @@ -30,6 +34,7 @@ class BackgroundController extends StatelessWidget { : (currentPage == totalPage - 1) && hasFloatingButton ? SizedBox.shrink() : Container( + color: backgroundColor, padding: EdgeInsets.only(bottom: 10), child: Row( mainAxisAlignment: MainAxisAlignment.center, @@ -62,7 +67,7 @@ class BackgroundController extends StatelessWidget { decoration: BoxDecoration( color: isActive ? controllerColor ?? Colors.white - : (controllerColor ?? Colors.white).withOpacity(0.5), + : (controllerColor ?? Colors.white).withValues(alpha: .5), borderRadius: BorderRadius.all(Radius.circular(12)), ), ); diff --git a/packages/flutter_onboarding_slider/lib/background_final_button.dart b/packages/flutter_onboarding_slider/lib/background_final_button.dart index bc8fa928..3fffe055 100644 --- a/packages/flutter_onboarding_slider/lib/background_final_button.dart +++ b/packages/flutter_onboarding_slider/lib/background_final_button.dart @@ -46,7 +46,8 @@ class BackgroundFinalButton extends StatelessWidget { final Icon skipIcon; final FinishButtonStyle? finishButtonStyle; - BackgroundFinalButton({ + const BackgroundFinalButton({ + super.key, required this.currentPage, required this.pageController, required this.totalPage, diff --git a/packages/flutter_onboarding_slider/lib/background_image.dart b/packages/flutter_onboarding_slider/lib/background_image.dart index 48af2fae..a48ac01d 100644 --- a/packages/flutter_onboarding_slider/lib/background_image.dart +++ b/packages/flutter_onboarding_slider/lib/background_image.dart @@ -1,46 +1,44 @@ import 'package:flutter/material.dart'; -import 'package:flutter_onboarding_slider/page_offset_provider.dart'; -import 'package:provider/provider.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; -class BackgroundImage extends StatelessWidget { +import 'page_offset_notifier.dart'; + +class BackgroundImage extends ConsumerWidget { final int id; final Widget background; final double imageVerticalOffset; final double speed; final double imageHorizontalOffset; final bool centerBackground; + final PageController pageController; - BackgroundImage({ + const BackgroundImage({ + super.key, required this.id, required this.speed, required this.background, required this.imageVerticalOffset, required this.centerBackground, required this.imageHorizontalOffset, + required this.pageController, }); @override - Widget build(BuildContext context) { - return Consumer( - builder: (context, notifier, child) { - return Stack(children: [ - Positioned( - top: imageVerticalOffset, - left: MediaQuery.of(context).size.width * ((id - 1) * speed) - - speed * notifier.offset + - (centerBackground ? 0 : imageHorizontalOffset), - child: centerBackground - ? Container( - width: MediaQuery.of(context).size.width, - child: child!, - ) - : child!, - ), - ]); - }, - child: Container( - child: background, + Widget build(BuildContext context, WidgetRef ref) { + final state = ref.watch(pageOffsetNotifierProvider(pageController)); + return Stack(children: [ + Positioned( + top: imageVerticalOffset, + left: MediaQuery.of(context).size.width * ((id - 1) * speed) - + speed * state.offset + + (centerBackground ? 0 : imageHorizontalOffset), + child: centerBackground + ? SizedBox( + width: MediaQuery.of(context).size.width, + child: background, + ) + : background, ), - ); + ]); } } diff --git a/packages/flutter_onboarding_slider/lib/flutter_onboarding_slider.dart b/packages/flutter_onboarding_slider/lib/flutter_onboarding_slider.dart index 8784ddba..540e8bc5 100644 --- a/packages/flutter_onboarding_slider/lib/flutter_onboarding_slider.dart +++ b/packages/flutter_onboarding_slider/lib/flutter_onboarding_slider.dart @@ -1,15 +1,34 @@ -library flutter_onboarding_slider; - +/* +The MIT License (MIT) + +Copyright (c) 2021 APPINIO GmbH + +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. +*/ import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_onboarding_slider/background_controller.dart'; -import 'package:flutter_onboarding_slider/background_final_button.dart'; -import 'package:flutter_onboarding_slider/onboarding_navigation_bar.dart'; -import 'package:flutter_onboarding_slider/page_offset_provider.dart'; -import 'package:provider/provider.dart'; import 'background.dart'; import 'background_body.dart'; +import 'background_controller.dart'; +import 'background_final_button.dart'; +import 'onboarding_navigation_bar.dart'; export 'background.dart'; export 'background_final_button.dart'; @@ -28,7 +47,7 @@ class OnBoardingSlider extends StatefulWidget { final double speed; /// Background Color of whole screen apart from the NavigationBar. - final Color? pageBackgroundColor; + final Color pageBackgroundColor; /// Background Gradient of whole screen apart from the NavigationBar. final Gradient? pageBackgroundGradient; @@ -101,17 +120,18 @@ class OnBoardingSlider extends StatefulWidget { /// override the function for kip button in the navigator. final Function? skipFunctionOverride; - OnBoardingSlider({ + const OnBoardingSlider({ + super.key, required this.totalPage, required this.headerBackgroundColor, required this.background, required this.speed, required this.pageBodies, + required this.pageBackgroundColor, this.onFinish, this.trailingFunction, this.trailing, this.skipTextButton, - this.pageBackgroundColor, this.pageBackgroundGradient, this.finishButtonStyle, this.finishButtonText, @@ -139,13 +159,13 @@ class OnBoardingSlider extends StatefulWidget { }); @override - _OnBoardingSliderState createState() => _OnBoardingSliderState(); + OnBoardingSliderState createState() => OnBoardingSliderState(); } -class _OnBoardingSliderState extends State { +class OnBoardingSliderState extends State { final PageController _pageController = PageController(initialPage: 0); - int _currentPage = 0; + int currentPage = 0; @override void initState() { @@ -154,75 +174,74 @@ class _OnBoardingSliderState extends State { @override Widget build(BuildContext context) { - return ChangeNotifierProvider( - create: (BuildContext context) => PageOffsetNotifier(_pageController), - child: Scaffold( - backgroundColor: widget.pageBackgroundColor ?? null, - floatingActionButton: widget.hasFloatingButton - ? BackgroundFinalButton( - buttonTextStyle: widget.finishButtonTextStyle, - skipIcon: widget.skipIcon, - addButton: widget.addButton, - currentPage: _currentPage, - pageController: _pageController, - totalPage: widget.totalPage, - onPageFinish: widget.onFinish, - finishButtonStyle: widget.finishButtonStyle, - buttonText: widget.finishButtonText, - hasSkip: widget.hasSkip, - ) - : SizedBox.shrink(), - body: CupertinoPageScaffold( - navigationBar: OnBoardingNavigationBar( - skipFunctionOverride: widget.skipFunctionOverride, - leading: widget.leading, - middle: widget.middle, - totalPage: widget.totalPage, - currentPage: _currentPage, - onSkip: _onSkip, - headerBackgroundColor: widget.headerBackgroundColor, - onFinish: widget.trailingFunction, - finishButton: widget.trailing, - skipTextButton: widget.skipTextButton, + return Scaffold( + backgroundColor: widget.pageBackgroundColor, + floatingActionButton: widget.hasFloatingButton + ? BackgroundFinalButton( + buttonTextStyle: widget.finishButtonTextStyle, + skipIcon: widget.skipIcon, + addButton: widget.addButton, + currentPage: currentPage, + pageController: _pageController, + totalPage: widget.totalPage, + onPageFinish: widget.onFinish, + finishButtonStyle: widget.finishButtonStyle, + buttonText: widget.finishButtonText, + hasSkip: widget.hasSkip, + ) + : SizedBox.shrink(), + body: CupertinoPageScaffold( + navigationBar: OnBoardingNavigationBar( + skipFunctionOverride: widget.skipFunctionOverride, + leading: widget.leading, + middle: widget.middle, + totalPage: widget.totalPage, + currentPage: currentPage, + onSkip: _onSkip, + headerBackgroundColor: widget.headerBackgroundColor, + onFinish: widget.trailingFunction, + finishButton: widget.trailing, + skipTextButton: widget.skipTextButton, + ), + child: Container( + height: MediaQuery.of(context).size.height, + decoration: BoxDecoration( + gradient: widget.pageBackgroundGradient, + color: widget.pageBackgroundColor, ), - child: Container( - height: MediaQuery.of(context).size.height, - decoration: BoxDecoration( - gradient: widget.pageBackgroundGradient ?? null, - color: widget.pageBackgroundColor ?? null, - ), - child: SafeArea( - child: Background( - centerBackground: widget.centerBackground, - imageHorizontalOffset: widget.imageHorizontalOffset, - imageVerticalOffset: widget.imageVerticalOffset, - background: widget.background, - speed: widget.speed, - totalPage: widget.totalPage, - child: Column( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Expanded( - child: BackgroundBody( - controller: _pageController, - function: slide, - totalPage: widget.totalPage, - bodies: widget.pageBodies, - ), + child: SafeArea( + child: Background( + centerBackground: widget.centerBackground, + imageHorizontalOffset: widget.imageHorizontalOffset, + imageVerticalOffset: widget.imageVerticalOffset, + background: widget.background, + speed: widget.speed, + totalPage: widget.totalPage, + pageController: _pageController, + child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: BackgroundBody( + controller: _pageController, + function: slide, + totalPage: widget.totalPage, + bodies: widget.pageBodies, ), - widget.addController - ? BackgroundController( - hasFloatingButton: widget.hasFloatingButton, - indicatorPosition: widget.indicatorPosition, - indicatorAbove: widget.indicatorAbove, - currentPage: _currentPage, - totalPage: widget.totalPage, - controllerColor: widget.controllerColor, - ) - : SizedBox.shrink(), - ]), - ), + ), + widget.addController + ? BackgroundController( + backgroundColor: widget.pageBackgroundColor, + hasFloatingButton: widget.hasFloatingButton, + indicatorPosition: widget.indicatorPosition, + indicatorAbove: widget.indicatorAbove, + currentPage: currentPage, + totalPage: widget.totalPage, + controllerColor: widget.controllerColor, + ) + : SizedBox.shrink(), + ]), ), ), ), @@ -233,7 +252,7 @@ class _OnBoardingSliderState extends State { /// Slide to Next Page. void slide(int page) { setState(() { - _currentPage = page; + currentPage = page; }); } @@ -241,7 +260,7 @@ class _OnBoardingSliderState extends State { void _onSkip() { _pageController.jumpToPage(widget.totalPage - 1); setState(() { - _currentPage = widget.totalPage - 1; + currentPage = widget.totalPage - 1; }); } } diff --git a/packages/flutter_onboarding_slider/lib/onboarding_navigation_bar.dart b/packages/flutter_onboarding_slider/lib/onboarding_navigation_bar.dart index cb591887..3a7852a6 100644 --- a/packages/flutter_onboarding_slider/lib/onboarding_navigation_bar.dart +++ b/packages/flutter_onboarding_slider/lib/onboarding_navigation_bar.dart @@ -14,7 +14,8 @@ class OnBoardingNavigationBar extends StatelessWidget final Widget? middle; final Function? skipFunctionOverride; - OnBoardingNavigationBar({ + const OnBoardingNavigationBar({ + super.key, required this.currentPage, required this.onSkip, required this.headerBackgroundColor, @@ -28,34 +29,49 @@ class OnBoardingNavigationBar extends StatelessWidget }); @override - Size get preferredSize => Size.fromHeight(40); + Size get preferredSize => Size.fromHeight(44); @override bool shouldFullyObstruct(BuildContext context) { - return true; + return false; } @override Widget build(BuildContext context) { - if (hideNavigationBar) return SizedBox.shrink(); + if (hideNavigationBar) { + return Container( + width: double.infinity, + height: 44.0, + color: headerBackgroundColor, + ); + } return CupertinoNavigationBar( automaticallyImplyLeading: false, + automaticBackgroundVisibility: false, leading: leading, middle: middle, trailing: currentPage == totalPage - 1 ? finishButton == null - ? SizedBox.shrink() + ? Container( + width: double.infinity, + height: 44.0, + color: headerBackgroundColor, + ) : Container( - color: Colors.transparent, + color: headerBackgroundColor, child: TextButton( onPressed: () => onFinish?.call(), child: finishButton!, ), ) : skipTextButton == null - ? SizedBox.shrink() + ? Container( + width: double.infinity, + height: 44.0, + color: headerBackgroundColor, + ) : Container( - color: Colors.transparent, + color: headerBackgroundColor, child: TextButton( onPressed: () { if (skipFunctionOverride == null) { @@ -68,7 +84,7 @@ class OnBoardingNavigationBar extends StatelessWidget ), ), border: Border( - bottom: BorderSide(color: Colors.transparent), + bottom: BorderSide(color: headerBackgroundColor), ), backgroundColor: headerBackgroundColor, ); diff --git a/packages/flutter_onboarding_slider/lib/page_offset_notifier.dart b/packages/flutter_onboarding_slider/lib/page_offset_notifier.dart new file mode 100644 index 00000000..4b145019 --- /dev/null +++ b/packages/flutter_onboarding_slider/lib/page_offset_notifier.dart @@ -0,0 +1,27 @@ +import 'package:flutter/cupertino.dart'; +// ignore: depend_on_referenced_packages +import 'package:riverpod_annotation/riverpod_annotation.dart'; + +import 'page_offset_state.dart'; + +part 'page_offset_notifier.g.dart'; + +@riverpod +class PageOffsetNotifier extends _$PageOffsetNotifier { + late final PageController _controller; + late final VoidCallback _listener; + + @override + PageOffsetState build(PageController controller) { + _controller = controller; + _listener = () { + state = state.copyWith( + offset: _controller.offset, + page: _controller.page ?? 0, + ); + }; + _controller.addListener(_listener); + ref.onDispose(() => _controller.removeListener(_listener)); + return const PageOffsetState(); + } +} diff --git a/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart b/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart new file mode 100644 index 00000000..a42c4bcf --- /dev/null +++ b/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart @@ -0,0 +1,179 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'page_offset_notifier.dart'; + +// ************************************************************************** +// RiverpodGenerator +// ************************************************************************** + +String _$pageOffsetNotifierHash() => + r'bc3dccd56f99e687707efe2a1205be0b8c260fbb'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +abstract class _$PageOffsetNotifier + extends BuildlessAutoDisposeNotifier { + late final PageController controller; + + PageOffsetState build( + PageController controller, + ); +} + +/// See also [PageOffsetNotifier]. +@ProviderFor(PageOffsetNotifier) +const pageOffsetNotifierProvider = PageOffsetNotifierFamily(); + +/// See also [PageOffsetNotifier]. +class PageOffsetNotifierFamily extends Family { + /// See also [PageOffsetNotifier]. + const PageOffsetNotifierFamily(); + + /// See also [PageOffsetNotifier]. + PageOffsetNotifierProvider call( + PageController controller, + ) { + return PageOffsetNotifierProvider( + controller, + ); + } + + @override + PageOffsetNotifierProvider getProviderOverride( + covariant PageOffsetNotifierProvider provider, + ) { + return call( + provider.controller, + ); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'pageOffsetNotifierProvider'; +} + +/// See also [PageOffsetNotifier]. +class PageOffsetNotifierProvider extends AutoDisposeNotifierProviderImpl< + PageOffsetNotifier, PageOffsetState> { + /// See also [PageOffsetNotifier]. + PageOffsetNotifierProvider( + PageController controller, + ) : this._internal( + () => PageOffsetNotifier()..controller = controller, + from: pageOffsetNotifierProvider, + name: r'pageOffsetNotifierProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') + ? null + : _$pageOffsetNotifierHash, + dependencies: PageOffsetNotifierFamily._dependencies, + allTransitiveDependencies: + PageOffsetNotifierFamily._allTransitiveDependencies, + controller: controller, + ); + + PageOffsetNotifierProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.controller, + }) : super.internal(); + + final PageController controller; + + @override + PageOffsetState runNotifierBuild( + covariant PageOffsetNotifier notifier, + ) { + return notifier.build( + controller, + ); + } + + @override + Override overrideWith(PageOffsetNotifier Function() create) { + return ProviderOverride( + origin: this, + override: PageOffsetNotifierProvider._internal( + () => create()..controller = controller, + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + controller: controller, + ), + ); + } + + @override + AutoDisposeNotifierProviderElement + createElement() { + return _PageOffsetNotifierProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is PageOffsetNotifierProvider && + other.controller == controller; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, controller.hashCode); + + return _SystemHash.finish(hash); + } +} + +@Deprecated('Will be removed in 3.0. Use Ref instead') +// ignore: unused_element +mixin PageOffsetNotifierRef on AutoDisposeNotifierProviderRef { + /// The parameter `controller` of this provider. + PageController get controller; +} + +class _PageOffsetNotifierProviderElement + extends AutoDisposeNotifierProviderElement with PageOffsetNotifierRef { + _PageOffsetNotifierProviderElement(super.provider); + + @override + PageController get controller => + (origin as PageOffsetNotifierProvider).controller; +} +// ignore_for_file: type=lint +// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/packages/flutter_onboarding_slider/lib/page_offset_provider.dart b/packages/flutter_onboarding_slider/lib/page_offset_provider.dart deleted file mode 100644 index 2e8b4da8..00000000 --- a/packages/flutter_onboarding_slider/lib/page_offset_provider.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:flutter/cupertino.dart'; - -class PageOffsetNotifier with ChangeNotifier { - double _offset = 0; - double _page = 0; - - PageOffsetNotifier(PageController pageController) { - pageController.addListener(() { - _offset = pageController.offset; - _page = pageController.page ?? 0; - notifyListeners(); - }); - } - - double get offset => _offset; - double get page => _page; -} diff --git a/packages/flutter_onboarding_slider/lib/page_offset_state.dart b/packages/flutter_onboarding_slider/lib/page_offset_state.dart new file mode 100644 index 00000000..1ed415f8 --- /dev/null +++ b/packages/flutter_onboarding_slider/lib/page_offset_state.dart @@ -0,0 +1,11 @@ +import 'package:freezed_annotation/freezed_annotation.dart'; + +part 'page_offset_state.freezed.dart'; + +@freezed +abstract class PageOffsetState with _$PageOffsetState { + const factory PageOffsetState({ + @Default(0.0) double offset, + @Default(0.0) double page, + }) = _PageOffsetState; +} diff --git a/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart b/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart new file mode 100644 index 00000000..cf978ee8 --- /dev/null +++ b/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart @@ -0,0 +1,163 @@ +// coverage:ignore-file +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint +// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark + +part of 'page_offset_state.dart'; + +// ************************************************************************** +// FreezedGenerator +// ************************************************************************** + +T _$identity(T value) => value; + +final _privateConstructorUsedError = UnsupportedError( + 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); + +/// @nodoc +mixin _$PageOffsetState { + double get offset => throw _privateConstructorUsedError; + double get page => throw _privateConstructorUsedError; + + /// Create a copy of PageOffsetState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + $PageOffsetStateCopyWith get copyWith => + throw _privateConstructorUsedError; +} + +/// @nodoc +abstract class $PageOffsetStateCopyWith<$Res> { + factory $PageOffsetStateCopyWith( + PageOffsetState value, $Res Function(PageOffsetState) then) = + _$PageOffsetStateCopyWithImpl<$Res, PageOffsetState>; + @useResult + $Res call({double offset, double page}); +} + +/// @nodoc +class _$PageOffsetStateCopyWithImpl<$Res, $Val extends PageOffsetState> + implements $PageOffsetStateCopyWith<$Res> { + _$PageOffsetStateCopyWithImpl(this._value, this._then); + + // ignore: unused_field + final $Val _value; + // ignore: unused_field + final $Res Function($Val) _then; + + /// Create a copy of PageOffsetState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? offset = null, + Object? page = null, + }) { + return _then(_value.copyWith( + offset: null == offset + ? _value.offset + : offset // ignore: cast_nullable_to_non_nullable + as double, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as double, + ) as $Val); + } +} + +/// @nodoc +abstract class _$$PageOffsetStateImplCopyWith<$Res> + implements $PageOffsetStateCopyWith<$Res> { + factory _$$PageOffsetStateImplCopyWith(_$PageOffsetStateImpl value, + $Res Function(_$PageOffsetStateImpl) then) = + __$$PageOffsetStateImplCopyWithImpl<$Res>; + @override + @useResult + $Res call({double offset, double page}); +} + +/// @nodoc +class __$$PageOffsetStateImplCopyWithImpl<$Res> + extends _$PageOffsetStateCopyWithImpl<$Res, _$PageOffsetStateImpl> + implements _$$PageOffsetStateImplCopyWith<$Res> { + __$$PageOffsetStateImplCopyWithImpl( + _$PageOffsetStateImpl _value, $Res Function(_$PageOffsetStateImpl) _then) + : super(_value, _then); + + /// Create a copy of PageOffsetState + /// with the given fields replaced by the non-null parameter values. + @pragma('vm:prefer-inline') + @override + $Res call({ + Object? offset = null, + Object? page = null, + }) { + return _then(_$PageOffsetStateImpl( + offset: null == offset + ? _value.offset + : offset // ignore: cast_nullable_to_non_nullable + as double, + page: null == page + ? _value.page + : page // ignore: cast_nullable_to_non_nullable + as double, + )); + } +} + +/// @nodoc + +class _$PageOffsetStateImpl implements _PageOffsetState { + const _$PageOffsetStateImpl({this.offset = 0.0, this.page = 0.0}); + + @override + @JsonKey() + final double offset; + @override + @JsonKey() + final double page; + + @override + String toString() { + return 'PageOffsetState(offset: $offset, page: $page)'; + } + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is _$PageOffsetStateImpl && + (identical(other.offset, offset) || other.offset == offset) && + (identical(other.page, page) || other.page == page)); + } + + @override + int get hashCode => Object.hash(runtimeType, offset, page); + + /// Create a copy of PageOffsetState + /// with the given fields replaced by the non-null parameter values. + @JsonKey(includeFromJson: false, includeToJson: false) + @override + @pragma('vm:prefer-inline') + _$$PageOffsetStateImplCopyWith<_$PageOffsetStateImpl> get copyWith => + __$$PageOffsetStateImplCopyWithImpl<_$PageOffsetStateImpl>( + this, _$identity); +} + +abstract class _PageOffsetState implements PageOffsetState { + const factory _PageOffsetState({final double offset, final double page}) = + _$PageOffsetStateImpl; + + @override + double get offset; + @override + double get page; + + /// Create a copy of PageOffsetState + /// with the given fields replaced by the non-null parameter values. + @override + @JsonKey(includeFromJson: false, includeToJson: false) + _$$PageOffsetStateImplCopyWith<_$PageOffsetStateImpl> get copyWith => + throw _privateConstructorUsedError; +} diff --git a/packages/flutter_onboarding_slider/pubspec.lock b/packages/flutter_onboarding_slider/pubspec.lock index 3379e195..90e5ed3a 100644 --- a/packages/flutter_onboarding_slider/pubspec.lock +++ b/packages/flutter_onboarding_slider/pubspec.lock @@ -1,6 +1,38 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f + url: "https://pub.dev" + source: hosted + version: "85.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: f4ad0fea5f102201015c9aae9d93bc02f75dd9491529a8c21f88d17a8523d44c + url: "https://pub.dev" + source: hosted + version: "7.6.0" + analyzer_plugin: + dependency: transitive + description: + name: analyzer_plugin + sha256: a5ab7590c27b779f3d4de67f31c4109dbe13dd7339f86461a6f2a8ab2594d8ce + url: "https://pub.dev" + source: hosted + version: "0.13.4" + args: + dependency: transitive + description: + name: args + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" + source: hosted + version: "2.7.0" async: dependency: transitive description: @@ -17,109 +49,445 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.1" + build: + dependency: transitive + description: + name: build + sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_config: + dependency: transitive + description: + name: build_config + sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + url: "https://pub.dev" + source: hosted + version: "1.1.2" + build_daemon: + dependency: transitive + description: + name: build_daemon + sha256: "409002f1adeea601018715d613115cfaf0e31f512cb80ae4534c79867ae2363d" + url: "https://pub.dev" + source: hosted + version: "4.1.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner: + dependency: "direct dev" + description: + name: build_runner + sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + url: "https://pub.dev" + source: hosted + version: "2.5.4" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" + url: "https://pub.dev" + source: hosted + version: "9.1.2" + built_collection: + dependency: transitive + description: + name: built_collection + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" + source: hosted + version: "5.1.1" + built_value: + dependency: transitive + description: + name: built_value + sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d + url: "https://pub.dev" + source: hosted + version: "8.12.0" characters: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" + checked_yaml: + dependency: transitive + description: + name: checked_yaml + sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" + url: "https://pub.dev" + source: hosted + version: "2.0.4" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" + url: "https://pub.dev" + source: hosted + version: "4.11.0" collection: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" + source: hosted + version: "1.19.1" + convert: + dependency: transitive + description: + name: convert + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" + source: hosted + version: "3.1.2" + crypto: + dependency: transitive + description: + name: crypto + sha256: "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855" + url: "https://pub.dev" + source: hosted + version: "3.0.6" + custom_lint_core: + dependency: transitive + description: + name: custom_lint_core + sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be" + url: "https://pub.dev" + source: hosted + version: "0.7.5" + custom_lint_visitor: + dependency: transitive + description: + name: custom_lint_visitor + sha256: "4a86a0d8415a91fbb8298d6ef03e9034dc8e323a599ddc4120a0e36c433983a2" url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.0.0+7.7.0" + dart_style: + dependency: transitive + description: + name: dart_style + sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" + url: "https://pub.dev" + source: hosted + version: "3.1.1" fake_async: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" + source: hosted + version: "1.3.3" + file: + dependency: transitive + description: + name: file + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "7.0.1" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be + url: "https://pub.dev" + source: hosted + version: "1.1.1" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_riverpod: + dependency: "direct main" + description: + name: flutter_riverpod + sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + url: "https://pub.dev" + source: hosted + version: "2.6.1" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + freezed: + dependency: "direct dev" + description: + name: freezed + sha256: "59a584c24b3acdc5250bb856d0d3e9c0b798ed14a4af1ddb7dc1c7b41df91c9c" + url: "https://pub.dev" + source: hosted + version: "2.5.8" + freezed_annotation: + dependency: "direct main" + description: + name: freezed_annotation + sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + url: "https://pub.dev" + source: hosted + version: "2.4.4" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" + source: hosted + version: "4.0.0" + glob: + dependency: transitive + description: + name: glob + sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de + url: "https://pub.dev" + source: hosted + version: "2.1.3" + graphs: + dependency: transitive + description: + name: graphs + sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" + url: "https://pub.dev" + source: hosted + version: "2.3.2" + http: + dependency: transitive + description: + name: http + sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 + url: "https://pub.dev" + source: hosted + version: "1.5.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 + url: "https://pub.dev" + source: hosted + version: "3.2.2" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" + io: + dependency: transitive + description: + name: io + sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b + url: "https://pub.dev" + source: hosted + version: "1.0.5" js: dependency: transitive description: name: js - sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + sha256: "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc" + url: "https://pub.dev" + source: hosted + version: "0.7.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" + source: hosted + version: "4.9.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "0.6.7" + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" + source: hosted + version: "1.3.0" matcher: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.9.1" - nested: + version: "1.16.0" + mime: dependency: transitive description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + name: mime + sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "2.0.0" + package_config: + dependency: transitive + description: + name: package_config + sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc + url: "https://pub.dev" + source: hosted + version: "2.2.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + pool: + dependency: transitive + description: + name: pool + sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" + url: "https://pub.dev" + source: hosted + version: "1.5.2" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" + url: "https://pub.dev" + source: hosted + version: "2.2.0" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" + url: "https://pub.dev" + source: hosted + version: "1.5.0" + riverpod: + dependency: transitive + description: + name: riverpod + sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + url: "https://pub.dev" + source: hosted + version: "2.6.1" + riverpod_analyzer_utils: + dependency: transitive + description: + name: riverpod_analyzer_utils + sha256: "837a6dc33f490706c7f4632c516bcd10804ee4d9ccc8046124ca56388715fdf3" url: "https://pub.dev" source: hosted - version: "1.8.3" - provider: + version: "0.5.9" + riverpod_annotation: dependency: "direct main" description: - name: provider - sha256: dc18c7bddb94a1eb3c3154587d16175a657356c80566712e6cd8ca4825eae112 + name: riverpod_annotation + sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 + url: "https://pub.dev" + source: hosted + version: "2.6.1" + riverpod_generator: + dependency: "direct dev" + description: + name: riverpod_generator + sha256: "120d3310f687f43e7011bb213b90a436f1bbc300f0e4b251a72c39bccb017a4f" + url: "https://pub.dev" + source: hosted + version: "2.6.4" + shelf: + dependency: transitive + description: + name: shelf + sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "1.4.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" + url: "https://pub.dev" + source: hosted + version: "3.0.0" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" + source_gen: + dependency: transitive + description: + name: source_gen + sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + url: "https://pub.dev" + source: hosted + version: "2.0.0" source_span: dependency: transitive description: @@ -128,19 +496,43 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" + sprintf: + dependency: transitive + description: + name: sprintf + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" + source: hosted + version: "7.0.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.1" + state_notifier: + dependency: transitive + description: + name: state_notifier + sha256: b8677376aa54f2d7c58280d5a007f9e8774f1968d1fb1c096adcb4792fba29bb + url: "https://pub.dev" + source: hosted + version: "1.0.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + stream_transform: + dependency: transitive + description: + name: stream_transform + sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 url: "https://pub.dev" source: hosted version: "2.1.1" @@ -164,18 +556,90 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" + url: "https://pub.dev" + source: hosted + version: "0.7.6" + timing: + dependency: transitive + description: + name: timing + sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" + url: "https://pub.dev" + source: hosted + version: "1.0.2" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "1.4.0" + uuid: + dependency: transitive + description: + name: uuid + sha256: a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff + url: "https://pub.dev" + source: hosted + version: "4.5.1" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" + url: "https://pub.dev" + source: hosted + version: "15.0.2" + watcher: + dependency: transitive + description: + name: watcher + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" + url: "https://pub.dev" + source: hosted + version: "1.1.4" + web: + dependency: transitive + description: + name: web + sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" + url: "https://pub.dev" + source: hosted + version: "1.1.1" + web_socket: + dependency: transitive + description: + name: web_socket + sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" + url: "https://pub.dev" + source: hosted + version: "1.0.1" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 + url: "https://pub.dev" + source: hosted + version: "3.0.3" + yaml: + dependency: transitive + description: + name: yaml + sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce + url: "https://pub.dev" + source: hosted + version: "3.1.3" sdks: - dart: ">=3.0.0-0 <4.0.0" - flutter: ">=1.17.0" + dart: ">=3.8.0 <4.0.0" + flutter: ">=3.22.0" diff --git a/packages/flutter_onboarding_slider/pubspec.yaml b/packages/flutter_onboarding_slider/pubspec.yaml index aee61ff0..60251272 100644 --- a/packages/flutter_onboarding_slider/pubspec.yaml +++ b/packages/flutter_onboarding_slider/pubspec.yaml @@ -5,17 +5,22 @@ homepage: https://github.com/appinioGmbH/flutter_packages repository: https://github.com/appinioGmbH/flutter_packages/tree/main/packages/flutter_onboarding_slider environment: - sdk: ">=2.12.0 <4.0.0" - flutter: ">=1.17.0" + sdk: ">=3.4.0 <4.0.0" + flutter: ">=3.22.0" dependencies: flutter: sdk: flutter - provider: ^6.0.0 + flutter_riverpod: ^2.5.1 + riverpod_annotation: ^2.3.5 + freezed_annotation: ^2.4.4 dev_dependencies: flutter_test: sdk: flutter + build_runner: ^2.4.11 + riverpod_generator: ^2.4.3 + freezed: ^2.5.7 # The following section is specific to Flutter. flutter: From a4cba537de8646f98712cc81993dc67685ec9917 Mon Sep 17 00:00:00 2001 From: nnn-uchisawa <53939263+nnn-uchisawa@users.noreply.github.com> Date: Mon, 27 Oct 2025 09:46:59 +0900 Subject: [PATCH 2/2] update dependencies --- .../example/pubspec.lock | 16 - .../lib/background_image.dart | 2 +- .../lib/page_offset_notifier.g.dart | 216 ++++-------- .../lib/page_offset_state.freezed.dart | 310 +++++++++++++----- .../flutter_onboarding_slider/pubspec.lock | 180 +++++++--- .../flutter_onboarding_slider/pubspec.yaml | 12 +- 6 files changed, 446 insertions(+), 290 deletions(-) diff --git a/packages/flutter_onboarding_slider/example/pubspec.lock b/packages/flutter_onboarding_slider/example/pubspec.lock index f5c652d4..cc50a00e 100644 --- a/packages/flutter_onboarding_slider/example/pubspec.lock +++ b/packages/flutter_onboarding_slider/example/pubspec.lock @@ -162,14 +162,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.16.0" - nested: - dependency: transitive - description: - name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" - source: hosted - version: "1.0.0" path: dependency: transitive description: @@ -178,14 +170,6 @@ packages: url: "https://pub.dev" source: hosted version: "1.9.1" - provider: - dependency: transitive - description: - name: provider - sha256: dc18c7bddb94a1eb3c3154587d16175a657356c80566712e6cd8ca4825eae112 - url: "https://pub.dev" - source: hosted - version: "6.0.1" riverpod: dependency: transitive description: diff --git a/packages/flutter_onboarding_slider/lib/background_image.dart b/packages/flutter_onboarding_slider/lib/background_image.dart index a48ac01d..432ecc45 100644 --- a/packages/flutter_onboarding_slider/lib/background_image.dart +++ b/packages/flutter_onboarding_slider/lib/background_image.dart @@ -25,7 +25,7 @@ class BackgroundImage extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final state = ref.watch(pageOffsetNotifierProvider(pageController)); + final state = ref.watch(pageOffsetProvider(pageController)); return Stack(children: [ Positioned( top: imageVerticalOffset, diff --git a/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart b/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart index a42c4bcf..64946a53 100644 --- a/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart +++ b/packages/flutter_onboarding_slider/lib/page_offset_notifier.g.dart @@ -6,174 +6,102 @@ part of 'page_offset_notifier.dart'; // RiverpodGenerator // ************************************************************************** -String _$pageOffsetNotifierHash() => - r'bc3dccd56f99e687707efe2a1205be0b8c260fbb'; - -/// Copied from Dart SDK -class _SystemHash { - _SystemHash._(); - - static int combine(int hash, int value) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + value); - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); - return hash ^ (hash >> 6); - } - - static int finish(int hash) { - // ignore: parameter_assignments - hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); - // ignore: parameter_assignments - hash = hash ^ (hash >> 11); - return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); - } -} - -abstract class _$PageOffsetNotifier - extends BuildlessAutoDisposeNotifier { - late final PageController controller; - - PageOffsetState build( - PageController controller, - ); -} +// GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: type=lint, type=warning -/// See also [PageOffsetNotifier]. @ProviderFor(PageOffsetNotifier) -const pageOffsetNotifierProvider = PageOffsetNotifierFamily(); - -/// See also [PageOffsetNotifier]. -class PageOffsetNotifierFamily extends Family { - /// See also [PageOffsetNotifier]. - const PageOffsetNotifierFamily(); - - /// See also [PageOffsetNotifier]. - PageOffsetNotifierProvider call( - PageController controller, - ) { - return PageOffsetNotifierProvider( - controller, - ); - } - - @override - PageOffsetNotifierProvider getProviderOverride( - covariant PageOffsetNotifierProvider provider, - ) { - return call( - provider.controller, - ); - } - - static const Iterable? _dependencies = null; - - @override - Iterable? get dependencies => _dependencies; - - static const Iterable? _allTransitiveDependencies = null; - - @override - Iterable? get allTransitiveDependencies => - _allTransitiveDependencies; - - @override - String? get name => r'pageOffsetNotifierProvider'; -} - -/// See also [PageOffsetNotifier]. -class PageOffsetNotifierProvider extends AutoDisposeNotifierProviderImpl< - PageOffsetNotifier, PageOffsetState> { - /// See also [PageOffsetNotifier]. - PageOffsetNotifierProvider( - PageController controller, - ) : this._internal( - () => PageOffsetNotifier()..controller = controller, - from: pageOffsetNotifierProvider, - name: r'pageOffsetNotifierProvider', - debugGetCreateSourceHash: - const bool.fromEnvironment('dart.vm.product') - ? null - : _$pageOffsetNotifierHash, - dependencies: PageOffsetNotifierFamily._dependencies, - allTransitiveDependencies: - PageOffsetNotifierFamily._allTransitiveDependencies, - controller: controller, +const pageOffsetProvider = PageOffsetNotifierFamily._(); + +final class PageOffsetNotifierProvider + extends $NotifierProvider { + const PageOffsetNotifierProvider._( + {required PageOffsetNotifierFamily super.from, + required PageController super.argument}) + : super( + retry: null, + name: r'pageOffsetProvider', + isAutoDispose: true, + dependencies: null, + $allTransitiveDependencies: null, ); - PageOffsetNotifierProvider._internal( - super._createNotifier, { - required super.name, - required super.dependencies, - required super.allTransitiveDependencies, - required super.debugGetCreateSourceHash, - required super.from, - required this.controller, - }) : super.internal(); - - final PageController controller; + @override + String debugGetCreateSourceHash() => _$pageOffsetNotifierHash(); @override - PageOffsetState runNotifierBuild( - covariant PageOffsetNotifier notifier, - ) { - return notifier.build( - controller, - ); + String toString() { + return r'pageOffsetProvider' + '' + '($argument)'; } + @$internal @override - Override overrideWith(PageOffsetNotifier Function() create) { - return ProviderOverride( + PageOffsetNotifier create() => PageOffsetNotifier(); + + /// {@macro riverpod.override_with_value} + Override overrideWithValue(PageOffsetState value) { + return $ProviderOverride( origin: this, - override: PageOffsetNotifierProvider._internal( - () => create()..controller = controller, - from: from, - name: null, - dependencies: null, - allTransitiveDependencies: null, - debugGetCreateSourceHash: null, - controller: controller, - ), + providerOverride: $SyncValueProvider(value), ); } - @override - AutoDisposeNotifierProviderElement - createElement() { - return _PageOffsetNotifierProviderElement(this); - } - @override bool operator ==(Object other) { - return other is PageOffsetNotifierProvider && - other.controller == controller; + return other is PageOffsetNotifierProvider && other.argument == argument; } @override int get hashCode { - var hash = _SystemHash.combine(0, runtimeType.hashCode); - hash = _SystemHash.combine(hash, controller.hashCode); - - return _SystemHash.finish(hash); + return argument.hashCode; } } -@Deprecated('Will be removed in 3.0. Use Ref instead') -// ignore: unused_element -mixin PageOffsetNotifierRef on AutoDisposeNotifierProviderRef { - /// The parameter `controller` of this provider. - PageController get controller; +String _$pageOffsetNotifierHash() => + r'bc3dccd56f99e687707efe2a1205be0b8c260fbb'; + +final class PageOffsetNotifierFamily extends $Family + with + $ClassFamilyOverride { + const PageOffsetNotifierFamily._() + : super( + retry: null, + name: r'pageOffsetProvider', + dependencies: null, + $allTransitiveDependencies: null, + isAutoDispose: true, + ); + + PageOffsetNotifierProvider call( + PageController controller, + ) => + PageOffsetNotifierProvider._(argument: controller, from: this); + + @override + String toString() => r'pageOffsetProvider'; } -class _PageOffsetNotifierProviderElement - extends AutoDisposeNotifierProviderElement with PageOffsetNotifierRef { - _PageOffsetNotifierProviderElement(super.provider); +abstract class _$PageOffsetNotifier extends $Notifier { + late final _$args = ref.$arg as PageController; + PageController get controller => _$args; + PageOffsetState build( + PageController controller, + ); + @$mustCallSuper @override - PageController get controller => - (origin as PageOffsetNotifierProvider).controller; + void runBuild() { + final created = build( + _$args, + ); + final ref = this.ref as $Ref; + final element = ref.element as $ClassProviderElement< + AnyNotifier, + PageOffsetState, + Object?, + Object?>; + element.handleValue(ref, created); + } } -// ignore_for_file: type=lint -// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package diff --git a/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart b/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart index cf978ee8..b4a04d7b 100644 --- a/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart +++ b/packages/flutter_onboarding_slider/lib/page_offset_state.freezed.dart @@ -1,5 +1,5 @@ -// coverage:ignore-file // GENERATED CODE - DO NOT MODIFY BY HAND +// coverage:ignore-file // ignore_for_file: type=lint // ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark @@ -9,41 +9,56 @@ part of 'page_offset_state.dart'; // FreezedGenerator // ************************************************************************** +// dart format off T _$identity(T value) => value; -final _privateConstructorUsedError = UnsupportedError( - 'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models'); - /// @nodoc mixin _$PageOffsetState { - double get offset => throw _privateConstructorUsedError; - double get page => throw _privateConstructorUsedError; + double get offset; + double get page; /// Create a copy of PageOffsetState /// with the given fields replaced by the non-null parameter values. @JsonKey(includeFromJson: false, includeToJson: false) + @pragma('vm:prefer-inline') $PageOffsetStateCopyWith get copyWith => - throw _privateConstructorUsedError; + _$PageOffsetStateCopyWithImpl( + this as PageOffsetState, _$identity); + + @override + bool operator ==(Object other) { + return identical(this, other) || + (other.runtimeType == runtimeType && + other is PageOffsetState && + (identical(other.offset, offset) || other.offset == offset) && + (identical(other.page, page) || other.page == page)); + } + + @override + int get hashCode => Object.hash(runtimeType, offset, page); + + @override + String toString() { + return 'PageOffsetState(offset: $offset, page: $page)'; + } } /// @nodoc -abstract class $PageOffsetStateCopyWith<$Res> { +abstract mixin class $PageOffsetStateCopyWith<$Res> { factory $PageOffsetStateCopyWith( - PageOffsetState value, $Res Function(PageOffsetState) then) = - _$PageOffsetStateCopyWithImpl<$Res, PageOffsetState>; + PageOffsetState value, $Res Function(PageOffsetState) _then) = + _$PageOffsetStateCopyWithImpl; @useResult $Res call({double offset, double page}); } /// @nodoc -class _$PageOffsetStateCopyWithImpl<$Res, $Val extends PageOffsetState> +class _$PageOffsetStateCopyWithImpl<$Res> implements $PageOffsetStateCopyWith<$Res> { - _$PageOffsetStateCopyWithImpl(this._value, this._then); + _$PageOffsetStateCopyWithImpl(this._self, this._then); - // ignore: unused_field - final $Val _value; - // ignore: unused_field - final $Res Function($Val) _then; + final PageOffsetState _self; + final $Res Function(PageOffsetState) _then; /// Create a copy of PageOffsetState /// with the given fields replaced by the non-null parameter values. @@ -53,63 +68,180 @@ class _$PageOffsetStateCopyWithImpl<$Res, $Val extends PageOffsetState> Object? offset = null, Object? page = null, }) { - return _then(_value.copyWith( + return _then(_self.copyWith( offset: null == offset - ? _value.offset + ? _self.offset : offset // ignore: cast_nullable_to_non_nullable as double, page: null == page - ? _value.page + ? _self.page : page // ignore: cast_nullable_to_non_nullable as double, - ) as $Val); + )); } } -/// @nodoc -abstract class _$$PageOffsetStateImplCopyWith<$Res> - implements $PageOffsetStateCopyWith<$Res> { - factory _$$PageOffsetStateImplCopyWith(_$PageOffsetStateImpl value, - $Res Function(_$PageOffsetStateImpl) then) = - __$$PageOffsetStateImplCopyWithImpl<$Res>; - @override - @useResult - $Res call({double offset, double page}); -} +/// Adds pattern-matching-related methods to [PageOffsetState]. +extension PageOffsetStatePatterns on PageOffsetState { + /// A variant of `map` that fallback to returning `orElse`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` -/// @nodoc -class __$$PageOffsetStateImplCopyWithImpl<$Res> - extends _$PageOffsetStateCopyWithImpl<$Res, _$PageOffsetStateImpl> - implements _$$PageOffsetStateImplCopyWith<$Res> { - __$$PageOffsetStateImplCopyWithImpl( - _$PageOffsetStateImpl _value, $Res Function(_$PageOffsetStateImpl) _then) - : super(_value, _then); + @optionalTypeArgs + TResult maybeMap( + TResult Function(_PageOffsetState value)? $default, { + required TResult orElse(), + }) { + final _that = this; + switch (_that) { + case _PageOffsetState() when $default != null: + return $default(_that); + case _: + return orElse(); + } + } - /// Create a copy of PageOffsetState - /// with the given fields replaced by the non-null parameter values. - @pragma('vm:prefer-inline') - @override - $Res call({ - Object? offset = null, - Object? page = null, + /// A `switch`-like method, using callbacks. + /// + /// Callbacks receives the raw object, upcasted. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case final Subclass2 value: + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult map( + TResult Function(_PageOffsetState value) $default, + ) { + final _that = this; + switch (_that) { + case _PageOffsetState(): + return $default(_that); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `map` that fallback to returning `null`. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case final Subclass value: + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? mapOrNull( + TResult? Function(_PageOffsetState value)? $default, + ) { + final _that = this; + switch (_that) { + case _PageOffsetState() when $default != null: + return $default(_that); + case _: + return null; + } + } + + /// A variant of `when` that fallback to an `orElse` callback. + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return orElse(); + /// } + /// ``` + + @optionalTypeArgs + TResult maybeWhen( + TResult Function(double offset, double page)? $default, { + required TResult orElse(), }) { - return _then(_$PageOffsetStateImpl( - offset: null == offset - ? _value.offset - : offset // ignore: cast_nullable_to_non_nullable - as double, - page: null == page - ? _value.page - : page // ignore: cast_nullable_to_non_nullable - as double, - )); + final _that = this; + switch (_that) { + case _PageOffsetState() when $default != null: + return $default(_that.offset, _that.page); + case _: + return orElse(); + } + } + + /// A `switch`-like method, using callbacks. + /// + /// As opposed to `map`, this offers destructuring. + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case Subclass2(:final field2): + /// return ...; + /// } + /// ``` + + @optionalTypeArgs + TResult when( + TResult Function(double offset, double page) $default, + ) { + final _that = this; + switch (_that) { + case _PageOffsetState(): + return $default(_that.offset, _that.page); + case _: + throw StateError('Unexpected subclass'); + } + } + + /// A variant of `when` that fallback to returning `null` + /// + /// It is equivalent to doing: + /// ```dart + /// switch (sealedClass) { + /// case Subclass(:final field): + /// return ...; + /// case _: + /// return null; + /// } + /// ``` + + @optionalTypeArgs + TResult? whenOrNull( + TResult? Function(double offset, double page)? $default, + ) { + final _that = this; + switch (_that) { + case _PageOffsetState() when $default != null: + return $default(_that.offset, _that.page); + case _: + return null; + } } } /// @nodoc -class _$PageOffsetStateImpl implements _PageOffsetState { - const _$PageOffsetStateImpl({this.offset = 0.0, this.page = 0.0}); +class _PageOffsetState implements PageOffsetState { + const _PageOffsetState({this.offset = 0.0, this.page = 0.0}); @override @JsonKey() @@ -118,16 +250,19 @@ class _$PageOffsetStateImpl implements _PageOffsetState { @JsonKey() final double page; + /// Create a copy of PageOffsetState + /// with the given fields replaced by the non-null parameter values. @override - String toString() { - return 'PageOffsetState(offset: $offset, page: $page)'; - } + @JsonKey(includeFromJson: false, includeToJson: false) + @pragma('vm:prefer-inline') + _$PageOffsetStateCopyWith<_PageOffsetState> get copyWith => + __$PageOffsetStateCopyWithImpl<_PageOffsetState>(this, _$identity); @override bool operator ==(Object other) { return identical(this, other) || (other.runtimeType == runtimeType && - other is _$PageOffsetStateImpl && + other is _PageOffsetState && (identical(other.offset, offset) || other.offset == offset) && (identical(other.page, page) || other.page == page)); } @@ -135,29 +270,50 @@ class _$PageOffsetStateImpl implements _PageOffsetState { @override int get hashCode => Object.hash(runtimeType, offset, page); - /// Create a copy of PageOffsetState - /// with the given fields replaced by the non-null parameter values. - @JsonKey(includeFromJson: false, includeToJson: false) @override - @pragma('vm:prefer-inline') - _$$PageOffsetStateImplCopyWith<_$PageOffsetStateImpl> get copyWith => - __$$PageOffsetStateImplCopyWithImpl<_$PageOffsetStateImpl>( - this, _$identity); + String toString() { + return 'PageOffsetState(offset: $offset, page: $page)'; + } } -abstract class _PageOffsetState implements PageOffsetState { - const factory _PageOffsetState({final double offset, final double page}) = - _$PageOffsetStateImpl; - - @override - double get offset; +/// @nodoc +abstract mixin class _$PageOffsetStateCopyWith<$Res> + implements $PageOffsetStateCopyWith<$Res> { + factory _$PageOffsetStateCopyWith( + _PageOffsetState value, $Res Function(_PageOffsetState) _then) = + __$PageOffsetStateCopyWithImpl; @override - double get page; + @useResult + $Res call({double offset, double page}); +} + +/// @nodoc +class __$PageOffsetStateCopyWithImpl<$Res> + implements _$PageOffsetStateCopyWith<$Res> { + __$PageOffsetStateCopyWithImpl(this._self, this._then); + + final _PageOffsetState _self; + final $Res Function(_PageOffsetState) _then; /// Create a copy of PageOffsetState /// with the given fields replaced by the non-null parameter values. @override - @JsonKey(includeFromJson: false, includeToJson: false) - _$$PageOffsetStateImplCopyWith<_$PageOffsetStateImpl> get copyWith => - throw _privateConstructorUsedError; + @pragma('vm:prefer-inline') + $Res call({ + Object? offset = null, + Object? page = null, + }) { + return _then(_PageOffsetState( + offset: null == offset + ? _self.offset + : offset // ignore: cast_nullable_to_non_nullable + as double, + page: null == page + ? _self.page + : page // ignore: cast_nullable_to_non_nullable + as double, + )); + } } + +// dart format on diff --git a/packages/flutter_onboarding_slider/pubspec.lock b/packages/flutter_onboarding_slider/pubspec.lock index 90e5ed3a..8aa9fc07 100644 --- a/packages/flutter_onboarding_slider/pubspec.lock +++ b/packages/flutter_onboarding_slider/pubspec.lock @@ -17,6 +17,14 @@ packages: url: "https://pub.dev" source: hosted version: "7.6.0" + analyzer_buffer: + dependency: transitive + description: + name: analyzer_buffer + sha256: f7833bee67c03c37241c67f8741b17cc501b69d9758df7a5a4a13ed6c947be43 + url: "https://pub.dev" + source: hosted + version: "0.1.10" analyzer_plugin: dependency: transitive description: @@ -37,34 +45,34 @@ packages: dependency: transitive description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb" url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.13.0" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" build: dependency: transitive description: name: build - sha256: "51dc711996cbf609b90cbe5b335bbce83143875a9d58e4b5c6d3c4f684d3dda7" + sha256: ce76b1d48875e3233fde17717c23d1f60a91cc631597e49a400c89b475395b1d url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "3.1.0" build_config: dependency: transitive description: name: build_config - sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" + sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" url: "https://pub.dev" source: hosted - version: "1.1.2" + version: "1.2.0" build_daemon: dependency: transitive description: @@ -77,26 +85,26 @@ packages: dependency: transitive description: name: build_resolvers - sha256: ee4257b3f20c0c90e72ed2b57ad637f694ccba48839a821e87db762548c22a62 + sha256: d1d57f7807debd7349b4726a19fd32ec8bc177c71ad0febf91a20f84cd2d4b46 url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "3.0.3" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "382a4d649addbfb7ba71a3631df0ec6a45d5ab9b098638144faf27f02778eb53" + sha256: b24597fceb695969d47025c958f3837f9f0122e237c6a22cb082a5ac66c3ca30 url: "https://pub.dev" source: hosted - version: "2.5.4" + version: "2.7.1" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "85fbbb1036d576d966332a3f5ce83f2ce66a40bea1a94ad2d5fc29a19a0d3792" + sha256: "066dda7f73d8eb48ba630a55acb50c4a84a2e6b453b1cb4567f581729e794f7b" url: "https://pub.dev" source: hosted - version: "9.1.2" + version: "9.3.1" built_collection: dependency: transitive description: @@ -129,6 +137,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.4" + cli_config: + dependency: transitive + description: + name: cli_config + sha256: ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec + url: "https://pub.dev" + source: hosted + version: "0.2.0" clock: dependency: transitive description: @@ -161,6 +177,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.2" + coverage: + dependency: transitive + description: + name: coverage + sha256: "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d" + url: "https://pub.dev" + source: hosted + version: "1.15.0" crypto: dependency: transitive description: @@ -173,10 +197,10 @@ packages: dependency: transitive description: name: custom_lint_core - sha256: "31110af3dde9d29fb10828ca33f1dce24d2798477b167675543ce3d208dee8be" + sha256: cc4684d22ca05bf0a4a51127e19a8aea576b42079ed2bc9e956f11aaebe35dd1 url: "https://pub.dev" source: hosted - version: "0.7.5" + version: "0.8.0" custom_lint_visitor: dependency: transitive description: @@ -226,10 +250,10 @@ packages: dependency: "direct main" description: name: flutter_riverpod - sha256: "9532ee6db4a943a1ed8383072a2e3eeda041db5657cdf6d2acecf3c21ecbe7e1" + sha256: "9e2d6907f12cc7d23a846847615941bddee8709bf2bfd274acdf5e80bcf22fde" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.3" flutter_test: dependency: "direct dev" description: flutter @@ -239,18 +263,18 @@ packages: dependency: "direct dev" description: name: freezed - sha256: "59a584c24b3acdc5250bb856d0d3e9c0b798ed14a4af1ddb7dc1c7b41df91c9c" + sha256: "13065f10e135263a4f5a4391b79a8efc5fb8106f8dd555a9e49b750b45393d77" url: "https://pub.dev" source: hosted - version: "2.5.8" + version: "3.2.3" freezed_annotation: dependency: "direct main" description: name: freezed_annotation - sha256: c2e2d632dd9b8a2b7751117abcfc2b4888ecfe181bd9fca7170d9ef02e595fe2 + sha256: "7294967ff0a6d98638e7acb774aac3af2550777accd8149c90af5b014e6d44d8" url: "https://pub.dev" source: hosted - version: "2.4.4" + version: "3.1.0" frontend_server_client: dependency: transitive description: @@ -275,14 +299,6 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" - http: - dependency: transitive - description: - name: http - sha256: bb2ce4590bc2667c96f318d68cac1b5a7987ec819351d32b1c987239a815e007 - url: "https://pub.dev" - source: hosted - version: "1.5.0" http_multi_server: dependency: transitive description: @@ -387,6 +403,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.0" + mockito: + dependency: transitive + description: + name: mockito + sha256: "2314cbe9165bcd16106513df9cf3c3224713087f09723b128928dc11a4379f99" + url: "https://pub.dev" + source: hosted + version: "5.5.0" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" package_config: dependency: transitive description: @@ -431,34 +463,34 @@ packages: dependency: transitive description: name: riverpod - sha256: "59062512288d3056b2321804332a13ffdd1bf16df70dcc8e506e411280a72959" + sha256: c406de02bff19d920b832bddfb8283548bfa05ce41c59afba57ce643e116aa59 url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.3" riverpod_analyzer_utils: dependency: transitive description: name: riverpod_analyzer_utils - sha256: "837a6dc33f490706c7f4632c516bcd10804ee4d9ccc8046124ca56388715fdf3" + sha256: a0f68adb078b790faa3c655110a017f9a7b7b079a57bbd40f540e80dce5fcd29 url: "https://pub.dev" source: hosted - version: "0.5.9" + version: "1.0.0-dev.7" riverpod_annotation: dependency: "direct main" description: name: riverpod_annotation - sha256: e14b0bf45b71326654e2705d462f21b958f987087be850afd60578fcd502d1b8 + sha256: "7230014155777fc31ba3351bc2cb5a3b5717b11bfafe52b1553cb47d385f8897" url: "https://pub.dev" source: hosted - version: "2.6.1" + version: "3.0.3" riverpod_generator: dependency: "direct dev" description: name: riverpod_generator - sha256: "120d3310f687f43e7011bb213b90a436f1bbc300f0e4b251a72c39bccb017a4f" + sha256: "49894543a42cf7a9954fc4e7366b6d3cb2e6ec0fa07775f660afcdd92d097702" url: "https://pub.dev" source: hosted - version: "2.6.4" + version: "3.0.3" shelf: dependency: transitive description: @@ -467,6 +499,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.4.2" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3 + url: "https://pub.dev" + source: hosted + version: "1.1.3" shelf_web_socket: dependency: transitive description: @@ -484,18 +532,34 @@ packages: dependency: transitive description: name: source_gen - sha256: "35c8150ece9e8c8d263337a265153c3329667640850b9304861faea59fc98f6b" + sha256: "7b19d6ba131c6eb98bfcbf8d56c1a7002eba438af2e7ae6f8398b2b0f4f381e3" url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "3.1.0" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b + url: "https://pub.dev" + source: hosted + version: "2.1.2" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812" + url: "https://pub.dev" + source: hosted + version: "0.10.13" source_span: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.1" sprintf: dependency: transitive description: @@ -540,18 +604,26 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" + test: + dependency: transitive + description: + name: test + sha256: "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb" + url: "https://pub.dev" + source: hosted + version: "1.26.2" test_api: dependency: transitive description: @@ -560,6 +632,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.6" + test_core: + dependency: transitive + description: + name: test_core + sha256: "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a" + url: "https://pub.dev" + source: hosted + version: "0.6.11" timing: dependency: transitive description: @@ -632,6 +712,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.3" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572" + url: "https://pub.dev" + source: hosted + version: "1.2.1" yaml: dependency: transitive description: diff --git a/packages/flutter_onboarding_slider/pubspec.yaml b/packages/flutter_onboarding_slider/pubspec.yaml index 60251272..c862fc7e 100644 --- a/packages/flutter_onboarding_slider/pubspec.yaml +++ b/packages/flutter_onboarding_slider/pubspec.yaml @@ -11,16 +11,16 @@ environment: dependencies: flutter: sdk: flutter - flutter_riverpod: ^2.5.1 - riverpod_annotation: ^2.3.5 - freezed_annotation: ^2.4.4 + flutter_riverpod: ^3.0.3 + riverpod_annotation: ^3.0.3 + freezed_annotation: 3.1.0 dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.4.11 - riverpod_generator: ^2.4.3 - freezed: ^2.5.7 + build_runner: ^2.7.1 + riverpod_generator: ^3.0.3 + freezed: ^3.2.3 # The following section is specific to Flutter. flutter: