diff --git a/analysis_options.yaml b/analysis_options.yaml index a3be6b8..17d6dbf 100644 --- a/analysis_options.yaml +++ b/analysis_options.yaml @@ -1 +1 @@ -include: package:flutter_lints/flutter.yaml \ No newline at end of file +include: package:lint/analysis_options_package.yaml \ No newline at end of file diff --git a/example/analysis_options.yaml b/example/analysis_options.yaml index a3be6b8..26128b9 100644 --- a/example/analysis_options.yaml +++ b/example/analysis_options.yaml @@ -1 +1 @@ -include: package:flutter_lints/flutter.yaml \ No newline at end of file +include: package:lint/analysis_options.yaml \ No newline at end of file diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index dedf62b..d245222 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 31 + compileSdkVersion 32 lintOptions { disable 'InvalidPackage' @@ -35,7 +35,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.yourcompany.example" minSdkVersion 16 - targetSdkVersion 31 + targetSdkVersion 32 versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner' diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index a9f5b93..b72f2c5 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -13,7 +13,6 @@ additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> diff --git a/example/android/gradle/wrapper/gradle-wrapper.properties b/example/android/gradle/wrapper/gradle-wrapper.properties index 5e24055..24987fb 100644 --- a/example/android/gradle/wrapper/gradle-wrapper.properties +++ b/example/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Dec 09 09:03:01 CET 2021 +#Wed May 25 09:30:14 CEST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/example/lib/accordion_transformer.dart b/example/lib/accordion_transformer.dart index db94345..679bd3e 100644 --- a/example/lib/accordion_transformer.dart +++ b/example/lib/accordion_transformer.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -42,22 +41,27 @@ class TestWidget extends StatelessWidget { @override Widget build(BuildContext context) { - var list = [Colors.redAccent, Colors.blueAccent, Colors.greenAccent]; + final list = [ + Colors.redAccent, + Colors.blueAccent, + Colors.greenAccent + ]; return TransformerPageView( - loop: true, - transformer: AccordionTransformer(), - itemBuilder: (BuildContext context, int index) { - return Container( - color: list[index % list.length], - child: Center( - child: Text( - '$index', - style: const TextStyle(fontSize: 80.0, color: Colors.white), - ), + loop: true, + transformer: AccordionTransformer(), + itemBuilder: (BuildContext context, int index) { + return Container( + color: list[index % list.length], + child: Center( + child: Text( + '$index', + style: const TextStyle(fontSize: 80.0, color: Colors.white), ), - ); - }, - itemCount: 3); + ), + ); + }, + itemCount: 3, + ); } } diff --git a/example/lib/buildin_transformers.dart b/example/lib/buildin_transformers.dart index 668c1f0..ee0f219 100644 --- a/example/lib/buildin_transformers.dart +++ b/example/lib/buildin_transformers.dart @@ -1,13 +1,13 @@ -import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'dart:math' as math; +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; +import 'package:flutter/material.dart'; import 'package:vector_math/vector_math_64.dart'; class AccordionTransformer extends PageTransformer { @override Widget transform(Widget child, TransformInfo info) { - var position = info.position!; + final position = info.position!; if (position < 0.0) { return Transform.scale( scale: 1 + position, @@ -27,9 +27,9 @@ class AccordionTransformer extends PageTransformer { class ThreeDTransformer extends PageTransformer { @override Widget transform(Widget child, TransformInfo info) { - var position = info.position!; - var height = info.height!; - var width = info.width; + final position = info.position!; + final height = info.height!; + final width = info.width; double? pivotX = 0.0; if (position < 0 && position >= -1) { // left scrolling @@ -48,8 +48,8 @@ class ZoomInPageTransformer extends PageTransformer { static const double zoomMax = 0.5; @override Widget transform(Widget child, TransformInfo info) { - var position = info.position!; - var width = info.width; + final position = info.position!; + final width = info.width; if (position > 0 && position <= 1) { return Transform.translate( offset: Offset(-width! * position, 0.0), @@ -69,9 +69,9 @@ class ZoomOutPageTransformer extends PageTransformer { @override Widget transform(Widget child, TransformInfo info) { - var position = info.position!; - var pageWidth = info.width; - var pageHeight = info.height; + final position = info.position!; + final pageWidth = info.width; + final pageHeight = info.height; if (position < -1) { // [-Infinity,-1) @@ -81,17 +81,17 @@ class ZoomOutPageTransformer extends PageTransformer { // [-1,1] // Modify the default slide transition to // shrink the page as well - var scaleFactor = math.max(minScale, 1 - position.abs()); - var vertMargin = pageHeight! * (1 - scaleFactor) / 2; - var horzMargin = pageWidth! * (1 - scaleFactor) / 2; + final scaleFactor = math.max(minScale, 1 - position.abs()); + final vertMargin = pageHeight! * (1 - scaleFactor) / 2; + final horzMargin = pageWidth! * (1 - scaleFactor) / 2; double dx; if (position < 0) { - dx = (horzMargin - vertMargin / 2); + dx = horzMargin - vertMargin / 2; } else { - dx = (-horzMargin + vertMargin / 2); + dx = -horzMargin + vertMargin / 2; } // Scale the page down (between MIN_SCALE and 1) - var opacity = + final opacity = minAlpha + (scaleFactor - minScale) / (1 - minScale) * (1 - minAlpha); return Opacity( @@ -119,12 +119,12 @@ class DepthPageTransformer extends PageTransformer { @override Widget transform(Widget child, TransformInfo info) { - var position = info.position!; + final position = info.position!; if (position <= 0) { return Opacity( opacity: 1.0, child: Transform.translate( - offset: const Offset(0.0, 0.0), + offset: Offset.zero, child: Transform.scale( scale: 1.0, child: child, @@ -134,7 +134,7 @@ class DepthPageTransformer extends PageTransformer { } else if (position <= 1) { const minScale = 0.75; // Scale the page down (between minScale and 1) - var scaleFactor = minScale + (1 - minScale) * (1 - position); + final scaleFactor = minScale + (1 - minScale) * (1 - position); return Opacity( opacity: 1.0 - position, @@ -162,11 +162,11 @@ class ScaleAndFadeTransformer extends PageTransformer { @override Widget transform(Widget child, TransformInfo info) { - var position = info.position!; - var scaleFactor = (1 - position.abs()) * (1 - _scale); - var fadeFactor = (1 - position.abs()) * (1 - _fade); - var opacity = _fade + fadeFactor; - var scale = _scale + scaleFactor; + final position = info.position!; + final scaleFactor = (1 - position.abs()) * (1 - _scale); + final fadeFactor = (1 - position.abs()) * (1 - _fade); + final opacity = _fade + fadeFactor; + final scale = _scale + scaleFactor; return Opacity( opacity: opacity, child: Transform.scale( diff --git a/example/lib/cache_pageview.dart b/example/lib/cache_pageview.dart index 4e48f3f..41e2ac8 100644 --- a/example/lib/cache_pageview.dart +++ b/example/lib/cache_pageview.dart @@ -1,21 +1,23 @@ +import 'dart:math'; + import 'package:flutter/rendering.dart'; import 'package:flutter/widgets.dart'; -import 'dart:math'; class MyViewPort extends RenderSliverFillViewport { int? itemCount; - MyViewPort( - {required RenderSliverBoxChildManager childManager, - double viewportFraction = 1.0, - this.itemCount}) - : super(childManager: childManager, viewportFraction: viewportFraction); + MyViewPort({ + required RenderSliverBoxChildManager childManager, + double viewportFraction = 1.0, + this.itemCount, + }) : super(childManager: childManager, viewportFraction: viewportFraction); @override int getMaxChildIndexForScrollOffset(double scrollOffset, double itemExtent) { return min( - super.getMaxChildIndexForScrollOffset(scrollOffset, itemExtent) + 2, - itemCount! - 1); + super.getMaxChildIndexForScrollOffset(scrollOffset, itemExtent) + 2, + itemCount! - 1, + ); } @override @@ -29,12 +31,12 @@ class MyViewPort extends RenderSliverFillViewport { class MySliverFillViewport extends SliverMultiBoxAdaptorWidget { /// Creates a sliver whose box children that each fill the viewport. // - const MySliverFillViewport( - {Key? key, - required SliverChildDelegate delegate, - this.viewportFraction = 1.0, - this.itemCount}) - : assert(viewportFraction > 0.0), + const MySliverFillViewport({ + Key? key, + required SliverChildDelegate delegate, + this.viewportFraction = 1.0, + this.itemCount, + }) : assert(viewportFraction > 0.0), super(key: key, delegate: delegate); /// The fraction of the viewport that each child should fill in the main axis. @@ -51,9 +53,10 @@ class MySliverFillViewport extends SliverMultiBoxAdaptorWidget { final SliverMultiBoxAdaptorElement element = context as SliverMultiBoxAdaptorElement; return MyViewPort( - childManager: element, - itemCount: itemCount, - viewportFraction: viewportFraction); + childManager: element, + itemCount: itemCount, + viewportFraction: viewportFraction, + ); } @override @@ -63,7 +66,9 @@ class MySliverFillViewport extends SliverMultiBoxAdaptorWidget { @override void updateRenderObject( - BuildContext context, RenderSliverFillViewport renderObject) { + BuildContext context, + RenderSliverFillViewport renderObject, + ) { renderObject.viewportFraction = viewportFraction; } } @@ -96,9 +101,9 @@ class MyPageView extends StatelessWidget { offset: position, slivers: [ MySliverFillViewport( - viewportFraction: 1.0, - itemCount: 10, - delegate: childrenDelegate), + itemCount: 10, + delegate: childrenDelegate, + ), ], ); }, diff --git a/example/lib/depth_page_transformer.dart b/example/lib/depth_page_transformer.dart index b08be92..50d5dda 100644 --- a/example/lib/depth_page_transformer.dart +++ b/example/lib/depth_page_transformer.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -42,22 +41,27 @@ class TestWidget extends StatelessWidget { @override Widget build(BuildContext context) { - var list = [Colors.redAccent, Colors.blueAccent, Colors.greenAccent]; + final list = [ + Colors.redAccent, + Colors.blueAccent, + Colors.greenAccent + ]; return TransformerPageView( - loop: true, - transformer: DepthPageTransformer(), - itemBuilder: (BuildContext context, int index) { - return Container( - color: list[index % list.length], - child: Center( - child: Text( - '$index', - style: const TextStyle(fontSize: 80.0, color: Colors.white), - ), + loop: true, + transformer: DepthPageTransformer(), + itemBuilder: (BuildContext context, int index) { + return Container( + color: list[index % list.length], + child: Center( + child: Text( + '$index', + style: const TextStyle(fontSize: 80.0, color: Colors.white), ), - ); - }, - itemCount: 3); + ), + ); + }, + itemCount: 3, + ); } } diff --git a/example/lib/fixlist_test.dart b/example/lib/fixlist_test.dart index c58a472..8a05a90 100644 --- a/example/lib/fixlist_test.dart +++ b/example/lib/fixlist_test.dart @@ -1,9 +1,8 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -112,33 +111,36 @@ class _MyHomePageState extends State { ElevatedButton( onPressed: () { showModalBottomSheet( - context: context, - builder: (_) { - return CupertinoPicker( - scrollController: controller, - itemExtent: 30.0, - onSelectedItemChanged: (int index) { - setState(() { - controller = FixedExtentScrollController( - initialItem: index); - _type = _types[index]; - if (_type == 'ScaleAndFadeTransformer') { - _viewportFraction = 0.8; - } else { - _viewportFraction = 1.0; - } - }); - }, - children: _types.map((t) => Text(t)).toList()); - }); + context: context, + builder: (_) { + return CupertinoPicker( + scrollController: controller, + itemExtent: 30.0, + onSelectedItemChanged: (int index) { + setState(() { + controller = FixedExtentScrollController( + initialItem: index, + ); + _type = _types[index]; + if (_type == 'ScaleAndFadeTransformer') { + _viewportFraction = 0.8; + } else { + _viewportFraction = 1.0; + } + }); + }, + children: _types.map((t) => Text(t)).toList(), + ); + }, + ); }, child: const Text('Change Animation'), ), ], ), Expanded( - child: SizedBox( - child: TransformerPageView( + child: SizedBox( + child: TransformerPageView( loop: true, viewportFraction: _viewportFraction, controller: _controller, @@ -149,8 +151,10 @@ class _MyHomePageState extends State { fit: BoxFit.fill, ); }, - itemCount: 3), - )) + itemCount: 3, + ), + ), + ) ], ), ); diff --git a/example/lib/images.dart b/example/lib/images.dart index 86cab03..a963faf 100644 --- a/example/lib/images.dart +++ b/example/lib/images.dart @@ -1,6 +1,5 @@ -import 'package:flutter/material.dart'; - import 'package:another_transformer_page_view/another_transformer_page_view.dart'; +import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -41,10 +40,10 @@ class ImageTest extends StatelessWidget { @override Widget build(BuildContext context) { return TransformerPageView( - loop: true, - viewportFraction: 0.8, - transformer: - PageTransformerBuilder(builder: (Widget child, TransformInfo info) { + loop: true, + viewportFraction: 0.8, + transformer: PageTransformerBuilder( + builder: (Widget child, TransformInfo info) { return Padding( padding: const EdgeInsets.all(10.0), child: Material( @@ -92,8 +91,10 @@ class ImageTest extends StatelessWidget { ParallaxContainer( position: info.position!, translationFactor: 200.0, - child: Text(text1[info.index!], - style: const TextStyle(fontSize: 18.0)), + child: Text( + text1[info.index!], + style: const TextStyle(fontSize: 18.0), + ), ), ], ), @@ -102,8 +103,10 @@ class ImageTest extends StatelessWidget { ), ), ); - }), - itemCount: 3); + }, + ), + itemCount: 3, + ); } } @@ -112,8 +115,9 @@ class _MyHomePageState extends State { Widget build(BuildContext context) { return const Scaffold( body: Padding( - padding: EdgeInsets.fromLTRB(10.0, 40.0, 10.0, 30.0), - child: ImageTest()), + padding: EdgeInsets.fromLTRB(10.0, 40.0, 10.0, 30.0), + child: ImageTest(), + ), ); } } diff --git a/example/lib/main.dart b/example/lib/main.dart index bf8ed44..873d83c 100644 --- a/example/lib/main.dart +++ b/example/lib/main.dart @@ -1,3 +1,6 @@ +import 'dart:math' as math; + +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:example/images.dart'; import 'package:example/screens/product_list_view.dart'; @@ -6,10 +9,6 @@ import 'package:example/zero.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - -import 'dart:math' as math; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -95,9 +94,14 @@ class _MyHomePageState extends State { actions: [ InkWell( onTap: () { - Navigator.push(context, MaterialPageRoute(builder: (c) { - return const ProductListView(); - })); + Navigator.push( + context, + MaterialPageRoute( + builder: (c) { + return const ProductListView(); + }, + ), + ); }, child: const Text('route'), ) @@ -115,34 +119,47 @@ class _MyHomePageState extends State { ), ElevatedButton( onPressed: () { - Navigator.of(context).push(MaterialPageRoute(builder: (b) { - return Scaffold( - appBar: AppBar( - title: const Text('images'), - ), - body: const ImageTest(), - ); - })); + Navigator.of(context).push( + MaterialPageRoute( + builder: (b) { + return Scaffold( + appBar: AppBar( + title: const Text('images'), + ), + body: const ImageTest(), + ); + }, + ), + ); }, child: const Text('Image'), ), ElevatedButton( onPressed: () { - Navigator.of(context).push(MaterialPageRoute(builder: (b) { - return Scaffold( - appBar: AppBar( - title: const Text('welcome'), - ), - body: Welcome(0)); - })); + Navigator.of(context).push( + MaterialPageRoute( + builder: (b) { + return Scaffold( + appBar: AppBar( + title: const Text('welcome'), + ), + body: Welcome(0), + ); + }, + ), + ); }, child: const Text('Welcome'), ), ElevatedButton( onPressed: () { - Navigator.of(context).push(MaterialPageRoute(builder: (b) { - return const Zero(); - })); + Navigator.of(context).push( + MaterialPageRoute( + builder: (b) { + return const Zero(); + }, + ), + ); }, child: const Text('Zero'), ), @@ -171,34 +188,36 @@ class _MyHomePageState extends State { ElevatedButton( onPressed: () { showModalBottomSheet( - context: context, - builder: (_) { - return CupertinoPicker( - scrollController: controller, - itemExtent: 30.0, - onSelectedItemChanged: (int index) { - setState(() { - controller = FixedExtentScrollController( - initialItem: index); - _type = _types[index]; - if (_type == 'ScaleAndFadeTransformer') { - _viewportFraction = 0.8; - } else { - _viewportFraction = 1.0; - } - }); - }, - children: _types.map((t) => Text(t)).toList()); - }); + context: context, + builder: (_) { + return CupertinoPicker( + scrollController: controller, + itemExtent: 30.0, + onSelectedItemChanged: (int index) { + setState(() { + controller = FixedExtentScrollController( + initialItem: index, + ); + _type = _types[index]; + if (_type == 'ScaleAndFadeTransformer') { + _viewportFraction = 0.8; + } else { + _viewportFraction = 1.0; + } + }); + }, + children: _types.map((t) => Text(t)).toList(), + ); + }, + ); }, child: const Text('Animation'), ), ], ), Expanded( - child: SizedBox( - child: TransformerPageView( - loop: false, + child: SizedBox( + child: TransformerPageView( index: _index, viewportFraction: _viewportFraction, controller: _controller, @@ -214,8 +233,10 @@ class _MyHomePageState extends State { fit: BoxFit.fill, ); }, - itemCount: 3), - )) + itemCount: 3, + ), + ), + ) ], ), ); diff --git a/example/lib/scale_and_fade_transformer.dart b/example/lib/scale_and_fade_transformer.dart index baea78b..8cca539 100644 --- a/example/lib/scale_and_fade_transformer.dart +++ b/example/lib/scale_and_fade_transformer.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -42,23 +41,28 @@ class TestWidget extends StatelessWidget { @override Widget build(BuildContext context) { - var list = [Colors.redAccent, Colors.blueAccent, Colors.greenAccent]; + final list = [ + Colors.redAccent, + Colors.blueAccent, + Colors.greenAccent + ]; return TransformerPageView( - loop: true, - transformer: ScaleAndFadeTransformer(), - viewportFraction: 0.8, - itemBuilder: (BuildContext context, int index) { - return Container( - color: list[index % list.length], - child: Center( - child: Text( - '$index', - style: const TextStyle(fontSize: 80.0, color: Colors.white), - ), + loop: true, + transformer: ScaleAndFadeTransformer(), + viewportFraction: 0.8, + itemBuilder: (BuildContext context, int index) { + return Container( + color: list[index % list.length], + child: Center( + child: Text( + '$index', + style: const TextStyle(fontSize: 80.0, color: Colors.white), ), - ); - }, - itemCount: 3); + ), + ); + }, + itemCount: 3, + ); } } diff --git a/example/lib/screens/product_list_view.dart b/example/lib/screens/product_list_view.dart index e596ff6..7ea9250 100644 --- a/example/lib/screens/product_list_view.dart +++ b/example/lib/screens/product_list_view.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/screens/product_detail_view.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - class ProductListView extends StatefulWidget { const ProductListView({Key? key}) : super(key: key); @@ -26,15 +25,22 @@ class ProductListViewState extends State { child: TransformerPageView( viewportFraction: 0.8, itemCount: 10, - transformer: PageTransformerBuilder(builder: (w, i) { - return w; - }), + transformer: PageTransformerBuilder( + builder: (w, i) { + return w; + }, + ), itemBuilder: (c, i) { return InkWell( onTap: () { - Navigator.push(context, MaterialPageRoute(builder: (c) { - return const ProductDetailView(); - })); + Navigator.push( + context, + MaterialPageRoute( + builder: (c) { + return const ProductDetailView(); + }, + ), + ); }, child: Container( color: Colors.black26, diff --git a/example/lib/three_d_transformer.dart b/example/lib/three_d_transformer.dart index 567cff7..8982da6 100644 --- a/example/lib/three_d_transformer.dart +++ b/example/lib/three_d_transformer.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -42,22 +41,27 @@ class TestWidget extends StatelessWidget { @override Widget build(BuildContext context) { - var list = [Colors.redAccent, Colors.blueAccent, Colors.greenAccent]; + final list = [ + Colors.redAccent, + Colors.blueAccent, + Colors.greenAccent + ]; return TransformerPageView( - loop: true, - transformer: ThreeDTransformer(), - itemBuilder: (BuildContext context, int index) { - return Container( - color: list[index % list.length], - child: Center( - child: Text( - '$index', - style: const TextStyle(fontSize: 80.0, color: Colors.white), - ), + loop: true, + transformer: ThreeDTransformer(), + itemBuilder: (BuildContext context, int index) { + return Container( + color: list[index % list.length], + child: Center( + child: Text( + '$index', + style: const TextStyle(fontSize: 80.0, color: Colors.white), ), - ); - }, - itemCount: 3); + ), + ); + }, + itemCount: 3, + ); } } diff --git a/example/lib/welcome.dart b/example/lib/welcome.dart index 989865b..9705050 100644 --- a/example/lib/welcome.dart +++ b/example/lib/welcome.dart @@ -1,6 +1,5 @@ -import 'package:flutter/material.dart'; - import 'package:another_transformer_page_view/another_transformer_page_view.dart'; +import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -65,10 +64,9 @@ class Welcome extends StatelessWidget { @override Widget build(BuildContext context) { return TransformerPageView( - index: index, - loop: false, - transformer: - PageTransformerBuilder(builder: (Widget child, TransformInfo info) { + index: index, + transformer: PageTransformerBuilder( + builder: (Widget child, TransformInfo info) { // print('=========='); return ParallaxColor( colors: backgroundColors, @@ -76,15 +74,14 @@ class Welcome extends StatelessWidget { child: Column( children: [ Expanded( - child: ParallaxContainer( - position: info.position!, - opacityFactor: 1.0, - translationFactor: 400.0, - child: Image.asset(images[info.index!]), - )), + child: ParallaxContainer( + position: info.position!, + translationFactor: 400.0, + child: Image.asset(images[info.index!]), + ), + ), ParallaxContainer( position: info.position!, - translationFactor: 100.0, child: Text( titles[info.index!], style: const TextStyle(fontSize: 30.0, color: Colors.white), @@ -95,18 +92,24 @@ class Welcome extends StatelessWidget { position: info.position!, translationFactor: 50.0, child: Padding( - padding: - const EdgeInsets.fromLTRB(40.0, 30.0, 40.0, 50.0), - child: Text(subtitles[info.index!], - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 13.0, color: Colors.white))), + padding: const EdgeInsets.fromLTRB(40.0, 30.0, 40.0, 50.0), + child: Text( + subtitles[info.index!], + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 13.0, + color: Colors.white, + ), + ), + ), ), ], ), ); - }), - itemCount: 4); + }, + ), + itemCount: 4, + ); } } diff --git a/example/lib/welcome_back.dart b/example/lib/welcome_back.dart index 989865b..9705050 100644 --- a/example/lib/welcome_back.dart +++ b/example/lib/welcome_back.dart @@ -1,6 +1,5 @@ -import 'package:flutter/material.dart'; - import 'package:another_transformer_page_view/another_transformer_page_view.dart'; +import 'package:flutter/material.dart'; void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -65,10 +64,9 @@ class Welcome extends StatelessWidget { @override Widget build(BuildContext context) { return TransformerPageView( - index: index, - loop: false, - transformer: - PageTransformerBuilder(builder: (Widget child, TransformInfo info) { + index: index, + transformer: PageTransformerBuilder( + builder: (Widget child, TransformInfo info) { // print('=========='); return ParallaxColor( colors: backgroundColors, @@ -76,15 +74,14 @@ class Welcome extends StatelessWidget { child: Column( children: [ Expanded( - child: ParallaxContainer( - position: info.position!, - opacityFactor: 1.0, - translationFactor: 400.0, - child: Image.asset(images[info.index!]), - )), + child: ParallaxContainer( + position: info.position!, + translationFactor: 400.0, + child: Image.asset(images[info.index!]), + ), + ), ParallaxContainer( position: info.position!, - translationFactor: 100.0, child: Text( titles[info.index!], style: const TextStyle(fontSize: 30.0, color: Colors.white), @@ -95,18 +92,24 @@ class Welcome extends StatelessWidget { position: info.position!, translationFactor: 50.0, child: Padding( - padding: - const EdgeInsets.fromLTRB(40.0, 30.0, 40.0, 50.0), - child: Text(subtitles[info.index!], - textAlign: TextAlign.center, - style: const TextStyle( - fontSize: 13.0, color: Colors.white))), + padding: const EdgeInsets.fromLTRB(40.0, 30.0, 40.0, 50.0), + child: Text( + subtitles[info.index!], + textAlign: TextAlign.center, + style: const TextStyle( + fontSize: 13.0, + color: Colors.white, + ), + ), + ), ), ], ), ); - }), - itemCount: 4); + }, + ), + itemCount: 4, + ); } } diff --git a/example/lib/zero.dart b/example/lib/zero.dart index 4341b41..d7b82e5 100644 --- a/example/lib/zero.dart +++ b/example/lib/zero.dart @@ -1,5 +1,5 @@ -import 'package:flutter/material.dart'; import 'package:another_transformer_page_view/another_transformer_page_view.dart'; +import 'package:flutter/material.dart'; class Zero extends StatelessWidget { const Zero({Key? key}) : super(key: key); @@ -7,14 +7,15 @@ class Zero extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - appBar: AppBar( - title: const Text('Zero'), - ), - body: TransformerPageView( - itemCount: 0, - itemBuilder: (c, i) { - return Text('$i'); - }, - )); + appBar: AppBar( + title: const Text('Zero'), + ), + body: TransformerPageView( + itemCount: 0, + itemBuilder: (c, i) { + return Text('$i'); + }, + ), + ); } } diff --git a/example/lib/zoom_in_page_transformer.dart b/example/lib/zoom_in_page_transformer.dart index 49e5376..1b3087f 100644 --- a/example/lib/zoom_in_page_transformer.dart +++ b/example/lib/zoom_in_page_transformer.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -42,22 +41,27 @@ class TestWidget extends StatelessWidget { @override Widget build(BuildContext context) { - var list = [Colors.redAccent, Colors.blueAccent, Colors.greenAccent]; + final list = [ + Colors.redAccent, + Colors.blueAccent, + Colors.greenAccent + ]; return TransformerPageView( - loop: true, - transformer: ZoomInPageTransformer(), - itemBuilder: (BuildContext context, int index) { - return Container( - color: list[index % list.length], - child: Center( - child: Text( - '$index', - style: const TextStyle(fontSize: 80.0, color: Colors.white), - ), + loop: true, + transformer: ZoomInPageTransformer(), + itemBuilder: (BuildContext context, int index) { + return Container( + color: list[index % list.length], + child: Center( + child: Text( + '$index', + style: const TextStyle(fontSize: 80.0, color: Colors.white), ), - ); - }, - itemCount: 3); + ), + ); + }, + itemCount: 3, + ); } } diff --git a/example/lib/zoom_out_page_transformer.dart b/example/lib/zoom_out_page_transformer.dart index 9be3b28..88a4c2b 100644 --- a/example/lib/zoom_out_page_transformer.dart +++ b/example/lib/zoom_out_page_transformer.dart @@ -1,8 +1,7 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:example/buildin_transformers.dart'; import 'package:flutter/material.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() => runApp(const MyApp()); List list = [Colors.yellow, Colors.green, Colors.blue]; @@ -42,22 +41,27 @@ class TestWidget extends StatelessWidget { @override Widget build(BuildContext context) { - var list = [Colors.redAccent, Colors.blueAccent, Colors.greenAccent]; + final list = [ + Colors.redAccent, + Colors.blueAccent, + Colors.greenAccent + ]; return TransformerPageView( - loop: true, - transformer: ZoomOutPageTransformer(), - itemBuilder: (BuildContext context, int index) { - return Container( - color: list[index % list.length], - child: Center( - child: Text( - '$index', - style: const TextStyle(fontSize: 80.0, color: Colors.white), - ), + loop: true, + transformer: ZoomOutPageTransformer(), + itemBuilder: (BuildContext context, int index) { + return Container( + color: list[index % list.length], + child: Center( + child: Text( + '$index', + style: const TextStyle(fontSize: 80.0, color: Colors.white), ), - ); - }, - itemCount: 3); + ), + ); + }, + itemCount: 3, + ); } } diff --git a/example/pubspec.yaml b/example/pubspec.yaml index 04226a8..8e699e3 100644 --- a/example/pubspec.yaml +++ b/example/pubspec.yaml @@ -1,6 +1,6 @@ name: example description: A new Flutter application. - +publish_to: 'none' # The following defines the version and build number for your application. # A version number is three numbers separated by dots, like 1.2.43 # followed by an optional build number separated by a +. @@ -13,16 +13,16 @@ environment: sdk: '>=2.12.0 <3.0.0' dependencies: + another_transformer_page_view: + path: ../ flutter: sdk: flutter + vector_math: ^2.1.2 dev_dependencies: flutter_test: sdk: flutter - flutter_lints: ^1.0.4 - - another_transformer_page_view: - path: ../ + lint: ^1.8.2 # For information on the generic Dart part of this file, see the diff --git a/lib/src/another_transformer_page_view.dart b/lib/src/another_transformer_page_view.dart index 1829475..7f94058 100644 --- a/lib/src/another_transformer_page_view.dart +++ b/lib/src/another_transformer_page_view.dart @@ -1,9 +1,8 @@ library another_transformer_page_view; +import 'package:another_transformer_page_view/src/index_controller.dart'; import 'package:flutter/widgets.dart'; -import 'index_controller.dart'; - /// /// NOTICE:: /// @@ -57,17 +56,18 @@ class TransformInfo { /// Copy from [TransformerPageView.scrollDirection] final Axis? scrollDirection; - TransformInfo( - {this.index, - this.position, - this.width, - this.height, - this.activeIndex, - this.fromIndex, - this.forward, - this.done, - this.viewportFraction, - this.scrollDirection}); + TransformInfo({ + this.index, + this.position, + this.width, + this.height, + this.activeIndex, + this.fromIndex, + this.forward, + this.done, + this.viewportFraction, + this.scrollDirection, + }); } abstract class PageTransformer { @@ -81,7 +81,9 @@ abstract class PageTransformer { } typedef PageTransformerBuilderCallback = Widget Function( - Widget child, TransformInfo info); + Widget child, + TransformInfo info, +); class PageTransformerBuilder extends PageTransformer { final PageTransformerBuilderCallback builder; @@ -108,10 +110,15 @@ class TransformerPageController extends PageController { this.itemCount, this.reverse = false, }) : super( - initialPage: TransformerPageController._getRealIndexFromRenderIndex( - initialPage ?? 0, loop, itemCount, reverse)!, - keepPage: keepPage, - viewportFraction: viewportFraction); + initialPage: TransformerPageController._getRealIndexFromRenderIndex( + initialPage ?? 0, + loop, + itemCount, + reverse, + )!, + keepPage: keepPage, + viewportFraction: viewportFraction, + ); int? getRenderIndexFromRealIndex(int index) { return _getRenderIndexFromRealIndex(index, loop, itemCount, reverse); @@ -123,7 +130,11 @@ class TransformerPageController extends PageController { } static int _getRenderIndexFromRealIndex( - int index, bool loop, int? itemCount, bool reverse) { + int index, + bool loop, + int? itemCount, + bool reverse, + ) { if (itemCount == 0) return 0; int? renderIndex; if (loop) { @@ -147,7 +158,11 @@ class TransformerPageController extends PageController { } static double? _getRenderPageFromRealPage( - double? page, bool loop, int? itemCount, bool reverse) { + double? page, + bool loop, + int? itemCount, + bool reverse, + ) { double? renderPage; if (loop) { renderPage = page! - kMiddleValue; @@ -177,7 +192,11 @@ class TransformerPageController extends PageController { } static int? _getRealIndexFromRenderIndex( - int? index, bool loop, int? itemCount, bool reverse) { + int? index, + bool loop, + int? itemCount, + bool reverse, + ) { int result; if (reverse) { result = itemCount! - index! - 1; @@ -271,21 +290,21 @@ class TransformerPageView extends StatefulWidget { const Duration(milliseconds: kDefaultTransactionDuration), super(key: key); - factory TransformerPageView.children( - {Key? key, - int? index, - Duration? duration, - Curve curve = Curves.ease, - viewportFraction = 1.0, - bool loop = false, - Axis scrollDirection = Axis.horizontal, - ScrollPhysics? physics, - bool pageSnapping = true, - ValueChanged? onPageChanged, - IndexController? controller, - PageTransformer? transformer, - required List children, - TransformerPageController? pageController}) { + factory TransformerPageView.children({ + Key? key, + int? index, + Duration? duration, + Curve curve = Curves.ease, + double viewportFraction = 1.0, + Axis scrollDirection = Axis.horizontal, + ScrollPhysics? physics, + bool pageSnapping = true, + ValueChanged? onPageChanged, + IndexController? controller, + PageTransformer? transformer, + required List children, + TransformerPageController? pageController, + }) { return TransformerPageView( itemCount: children.length, itemBuilder: (BuildContext context, int index) { @@ -311,8 +330,12 @@ class TransformerPageView extends StatefulWidget { return _TransformerPageViewState(); } - static int? getRealIndexFromRenderIndex( - {required bool reverse, int? index, int? itemCount, required bool loop}) { + static int? getRealIndexFromRenderIndex({ + required bool reverse, + int? index, + int? itemCount, + required bool loop, + }) { var initPage = reverse ? (itemCount! - index! - 1) : index!; if (loop) { initPage += kMiddleValue; @@ -320,23 +343,29 @@ class TransformerPageView extends StatefulWidget { return initPage; } - static PageController createPageController( - {required bool reverse, - int? index, - int? itemCount, - required bool loop, - required double viewportFraction}) { + static PageController createPageController({ + required bool reverse, + int? index, + int? itemCount, + required bool loop, + required double viewportFraction, + }) { return PageController( - initialPage: getRealIndexFromRenderIndex( - reverse: reverse, index: index, itemCount: itemCount, loop: loop)!, - viewportFraction: viewportFraction); + initialPage: getRealIndexFromRenderIndex( + reverse: reverse, + index: index, + itemCount: itemCount, + loop: loop, + )!, + viewportFraction: viewportFraction, + ); } } class _TransformerPageViewState extends State { Size? _size; late int _activeIndex; - double? _currentPixels; + // late double _currentPixels; bool _done = false; ///This value will not change until user end drag. @@ -347,67 +376,64 @@ class _TransformerPageViewState extends State { TransformerPageController? _pageController; Widget _buildItemNormal(BuildContext context, int index) { - var renderIndex = _pageController!.getRenderIndexFromRealIndex(index)!; - var child = widget.itemBuilder!(context, renderIndex); + final renderIndex = _pageController!.getRenderIndexFromRealIndex(index)!; + final child = widget.itemBuilder!(context, renderIndex); return child; } Widget _buildItem(BuildContext context, int index) { return AnimatedBuilder( - animation: _pageController!, - builder: (BuildContext c, Widget? w) { - var renderIndex = _pageController!.getRenderIndexFromRealIndex(index); - Widget? child; - if (widget.itemBuilder != null) { - child = widget.itemBuilder!(context, renderIndex!); - } - child ??= Container(); - if (_size == null) { - return child; - } - - double position; - - var page = _pageController!.realPage; - - if (_transformer!.reverse) { - position = page! - index; - } else { - position = index - page!; - } - position *= widget.viewportFraction; - - var info = TransformInfo( - index: renderIndex, - width: _size!.width, - height: _size!.height, - position: position.clamp(-1.0, 1.0), - activeIndex: - _pageController!.getRenderIndexFromRealIndex(_activeIndex), - fromIndex: _fromIndex, - forward: _pageController!.position.pixels - _currentPixels! >= 0, - done: _done, - scrollDirection: widget.scrollDirection, - viewportFraction: widget.viewportFraction); - return _transformer!.transform(child, info); - }); - } + animation: _pageController!, + builder: (BuildContext c, Widget? w) { + final renderIndex = _pageController!.getRenderIndexFromRealIndex(index); + Widget? child; + if (widget.itemBuilder != null) { + child = widget.itemBuilder!(context, renderIndex!); + } + child ??= Container(); + if (_size == null) { + return child; + } - double? _calcCurrentPixels() { - _currentPixels = - _pageController!.getRenderIndexFromRealIndex(_activeIndex)! * - _pageController!.position.viewportDimension * - widget.viewportFraction; + double position; - // print("activeIndex:$_activeIndex , pix:$_currentPixels"); + final page = _pageController!.realPage; - return _currentPixels; + if (_transformer!.reverse) { + position = page! - index; + } else { + position = index - page!; + } + position *= widget.viewportFraction; + + final info = TransformInfo( + index: renderIndex, + width: _size!.width, + height: _size!.height, + position: position.clamp(-1.0, 1.0), + activeIndex: + _pageController!.getRenderIndexFromRealIndex(_activeIndex), + fromIndex: _fromIndex, + forward: _pageController!.position.pixels >= 0, + done: _done, + scrollDirection: widget.scrollDirection, + viewportFraction: widget.viewportFraction, + ); + return _transformer!.transform(child, info); + }, + ); + } + + double? _calcCurrentPixels() { + return _pageController!.getRenderIndexFromRealIndex(_activeIndex)! * + _pageController!.position.viewportDimension * + widget.viewportFraction; } @override Widget build(BuildContext context) { - var builder = _transformer == null ? _buildItemNormal : _buildItem; - Widget child = PageView.builder( + final builder = _transformer == null ? _buildItemNormal : _buildItem; + final Widget child = PageView.builder( itemBuilder: builder, itemCount: _pageController!.getRealItemCount(), onPageChanged: _onIndexChanged, @@ -421,35 +447,34 @@ class _TransformerPageViewState extends State { return child; } return NotificationListener( - onNotification: (ScrollNotification notification) { - if (notification is ScrollStartNotification) { - _calcCurrentPixels(); - _done = false; - _fromIndex = _activeIndex; - } else if (notification is ScrollEndNotification) { - _calcCurrentPixels(); - _fromIndex = _activeIndex; - _done = true; - } - - return false; - }, - child: child); + onNotification: (ScrollNotification notification) { + if (notification is ScrollStartNotification) { + _calcCurrentPixels(); + _done = false; + _fromIndex = _activeIndex; + } else if (notification is ScrollEndNotification) { + _calcCurrentPixels(); + _fromIndex = _activeIndex; + _done = true; + } + + return false; + }, + child: child, + ); } void _onIndexChanged(int index) { _activeIndex = index; - if (widget.onPageChanged != null) { - widget - .onPageChanged!(_pageController!.getRenderIndexFromRealIndex(index)); - } + widget.onPageChanged + ?.call(_pageController!.getRenderIndexFromRealIndex(index)); } void _onGetSize(_) { Size? size; - var renderObject = context.findRenderObject(); + final renderObject = context.findRenderObject(); if (renderObject != null) { - var bounds = renderObject.paintBounds; + final bounds = renderObject.paintBounds; size = bounds.size; } @@ -471,11 +496,11 @@ class _TransformerPageViewState extends State { // int index = widget.index ?? 0; _pageController = widget.pageController; _pageController ??= TransformerPageController( - initialPage: widget.index, - itemCount: widget.itemCount, - loop: widget.loop, - reverse: - widget.transformer == null ? false : widget.transformer!.reverse); + initialPage: widget.index, + itemCount: widget.itemCount, + loop: widget.loop, + reverse: widget.transformer?.reverse ?? false, + ); // int initPage = _getRealIndexFromRenderIndex(index); // _pageController = new PageController(initialPage: initPage,viewportFraction: widget.viewportFraction); _fromIndex = _activeIndex = _pageController!.initialPage; @@ -490,7 +515,7 @@ class _TransformerPageViewState extends State { @override void didUpdateWidget(TransformerPageView oldWidget) { _transformer = widget.transformer; - var index = widget.index ?? 0; + final index = widget.index ?? 0; var created = false; if (_pageController != widget.pageController) { if (widget.pageController != null) { @@ -498,25 +523,27 @@ class _TransformerPageViewState extends State { } else { created = true; _pageController = TransformerPageController( - initialPage: widget.index, - itemCount: widget.itemCount, - loop: widget.loop, - reverse: widget.transformer == null - ? false - : widget.transformer!.reverse); + initialPage: widget.index, + itemCount: widget.itemCount, + loop: widget.loop, + reverse: widget.transformer?.reverse ?? false, + ); } } if (_pageController!.getRenderIndexFromRealIndex(_activeIndex) != index) { _fromIndex = _activeIndex = _pageController!.initialPage; if (!created) { - var initPage = _pageController!.getRealIndexFromRenderIndex(index)!; - _pageController!.animateToPage(initPage, - duration: widget.duration, curve: widget.curve); + final initPage = _pageController!.getRealIndexFromRenderIndex(index)!; + _pageController!.animateToPage( + initPage, + duration: widget.duration, + curve: widget.curve, + ); } } if (_transformer != null) { - WidgetsBinding.instance!.addPostFrameCallback(_onGetSize); + WidgetsBinding.instance.addPostFrameCallback(_onGetSize); } if (_controller != getNotifier()) { @@ -534,7 +561,7 @@ class _TransformerPageViewState extends State { @override void didChangeDependencies() { if (_transformer != null) { - WidgetsBinding.instance!.addPostFrameCallback(_onGetSize); + WidgetsBinding.instance.addPostFrameCallback(_onGetSize); } super.didChangeDependencies(); } @@ -571,7 +598,7 @@ class _TransformerPageViewState extends State { } void onChangeNotifier() { - var event = widget.controller!.event; + final event = widget.controller!.event; int? index; switch (event) { case IndexController.moveEvent: diff --git a/lib/src/parallax.dart b/lib/src/parallax.dart index 119e07c..426db94 100644 --- a/lib/src/parallax.dart +++ b/lib/src/parallax.dart @@ -1,7 +1,6 @@ +import 'package:another_transformer_page_view/src/another_transformer_page_view.dart'; import 'package:flutter/widgets.dart'; -import 'another_transformer_page_view.dart'; - typedef PaintCallback = void Function(Canvas canvas, Size siz); class ColorPainter extends CustomPainter { @@ -13,7 +12,7 @@ class ColorPainter extends CustomPainter { @override void paint(Canvas canvas, Size size) { - var index = info.fromIndex!; + final index = info.fromIndex!; _paint.color = colors[index]; canvas.drawRect(Rect.fromLTWH(0.0, 0.0, size.width, size.height), _paint); if (info.done!) { @@ -22,13 +21,13 @@ class ColorPainter extends CustomPainter { int alpha; int color; double opacity; - var position = info.position; + final position = info.position; if (info.forward!) { if (index < colors.length - 1) { color = colors[index + 1].value & 0x00ffffff; - opacity = (position! <= 0 + opacity = position! <= 0 ? (-position / info.viewportFraction!) - : 1 - position / info.viewportFraction!); + : 1 - position / info.viewportFraction!; if (opacity > 1) { opacity -= 1.0; } @@ -39,14 +38,16 @@ class ColorPainter extends CustomPainter { _paint.color = Color((alpha << 24) | color); canvas.drawRect( - Rect.fromLTWH(0.0, 0.0, size.width, size.height), _paint); + Rect.fromLTWH(0.0, 0.0, size.width, size.height), + _paint, + ); } } else { if (index > 0) { color = colors[index - 1].value & 0x00ffffff; - opacity = (position! > 0 + opacity = position! > 0 ? position / info.viewportFraction! - : (1 + position / info.viewportFraction!)); + : (1 + position / info.viewportFraction!); if (opacity > 1) { opacity -= 1.0; } @@ -57,7 +58,9 @@ class ColorPainter extends CustomPainter { _paint.color = Color((alpha << 24) | color); canvas.drawRect( - Rect.fromLTWH(0.0, 0.0, size.width, size.height), _paint); + Rect.fromLTWH(0.0, 0.0, size.width, size.height), + _paint, + ); } } } @@ -106,13 +109,13 @@ class ParallaxContainer extends StatelessWidget { final double translationFactor; final double opacityFactor; - const ParallaxContainer( - {Key? key, - required this.child, - required this.position, - this.translationFactor = 100.0, - this.opacityFactor = 1.0}) - : super(key: key); + const ParallaxContainer({ + Key? key, + required this.child, + required this.position, + this.translationFactor = 100.0, + this.opacityFactor = 1.0, + }) : super(key: key); @override Widget build(BuildContext context) { @@ -130,14 +133,19 @@ class ParallaxImage extends StatelessWidget { final Image image; final double imageFactor; - ParallaxImage.asset(String name, - {Key? key, required double position, this.imageFactor = 0.3}) - : image = Image.asset(name, - fit: BoxFit.cover, - alignment: FractionalOffset( - 0.5 + position * imageFactor, - 0.5, - )), + ParallaxImage.asset( + String name, { + Key? key, + required double position, + this.imageFactor = 0.3, + }) : image = Image.asset( + name, + fit: BoxFit.cover, + alignment: FractionalOffset( + 0.5 + position * imageFactor, + 0.5, + ), + ), super(key: key); @override diff --git a/pubspec.yaml b/pubspec.yaml index 3dc12a1..1803573 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -4,15 +4,15 @@ version: 1.1.0 repository: https://github.com/juliansteenbakker/another_transformer_page_view environment: - sdk: '>=2.12.0 <3.0.0' + sdk: '>=2.17.0 <3.0.0' dependencies: flutter: sdk: flutter dev_dependencies: - flutter_test: - sdk: flutter flutter_driver: sdk: flutter - flutter_lints: ^1.0.4 \ No newline at end of file + flutter_test: + sdk: flutter + lint: ^1.8.2 \ No newline at end of file diff --git a/test/transformer_page_view_test.dart b/test/transformer_page_view_test.dart index 2156cd7..3692467 100644 --- a/test/transformer_page_view_test.dart +++ b/test/transformer_page_view_test.dart @@ -1,42 +1,55 @@ +import 'package:another_transformer_page_view/another_transformer_page_view.dart'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; -import 'package:another_transformer_page_view/another_transformer_page_view.dart'; - void main() { testWidgets('TransformerPageView basic usage', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MaterialApp( + await tester.pumpWidget( + MaterialApp( home: TransformerPageView( - itemBuilder: (context, index) { - return const Text('0'); - }, - itemCount: 10))); + itemBuilder: (context, index) { + return const Text('0'); + }, + itemCount: 10, + ), + ), + ); expect(find.text('0', skipOffstage: false), findsOneWidget); }); testWidgets('Zero item count ', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MaterialApp( + await tester.pumpWidget( + MaterialApp( home: TransformerPageView( - transformer: PageTransformerBuilder( - builder: (Widget child, TransformInfo info) { + transformer: PageTransformerBuilder( + builder: (Widget child, TransformInfo info) { return const Text('0'); - }), - itemCount: 0))); + }, + ), + itemCount: 0, + ), + ), + ); expect(find.text('0', skipOffstage: false), findsNothing); }); testWidgets('TransformerPageView transformer only', (WidgetTester tester) async { // Build our app and trigger a frame. - await tester.pumpWidget(MaterialApp( + await tester.pumpWidget( + MaterialApp( home: TransformerPageView( - transformer: PageTransformerBuilder( - builder: (Widget child, TransformInfo info) { + transformer: PageTransformerBuilder( + builder: (Widget child, TransformInfo info) { return const Text('0'); - }), - itemCount: 10))); + }, + ), + itemCount: 10, + ), + ), + ); // expect(find.text("0", skipOffstage: false), findsOneWidget); }); @@ -121,17 +134,21 @@ void main() { // testWidgets('TransformerPageView controller', (WidgetTester tester) async { // Build our app and trigger a frame. - var controller = IndexController(); + final controller = IndexController(); - await tester.pumpWidget(MaterialApp( + await tester.pumpWidget( + MaterialApp( home: TransformerPageView( - controller: controller, - transformer: FackTransformer(), - itemBuilder: (context, index) { - debugPrint('===================build:$index'); - return Text('$index'); - }, - itemCount: 10))); + controller: controller, + transformer: FackTransformer(), + itemBuilder: (context, index) { + debugPrint('===================build:$index'); + return Text('$index'); + }, + itemCount: 10, + ), + ), + ); expect(find.text('0'), findsOneWidget); await controller.next(animation: false);