diff --git a/example/android/settings.gradle b/example/android/settings.gradle index b9e43bd..9c3f403 100644 --- a/example/android/settings.gradle +++ b/example/android/settings.gradle @@ -18,7 +18,7 @@ pluginManagement { plugins { id "dev.flutter.flutter-plugin-loader" version "1.0.0" - id "com.android.application" version "8.1.0" apply false + id "com.android.application" version "8.1.1" apply false id "org.jetbrains.kotlin.android" version "1.8.22" apply false } diff --git a/lib/src/colorize.dart b/lib/src/colorize.dart index 953d3f0..0ad656a 100644 --- a/lib/src/colorize.dart +++ b/lib/src/colorize.dart @@ -20,6 +20,14 @@ class ColorizeAnimatedText extends AnimatedText { /// By default it is set to [TextDirection.ltr] final TextDirection textDirection; + ///Specifies whether to fade in text when starting to render. + /// By default it is true. + final bool fadeInOnStart; + + /// Specifies the curve for the color transition animation. + /// By default it is set to [Curves.easeIn] + final Curve animationCurve; + ColorizeAnimatedText( String text, { TextAlign textAlign = TextAlign.start, @@ -27,6 +35,8 @@ class ColorizeAnimatedText extends AnimatedText { this.speed = const Duration(milliseconds: 200), required this.colors, this.textDirection = TextDirection.ltr, + this.fadeInOnStart = true, + this.animationCurve = Curves.easeIn, }) : assert(null != textStyle.fontSize), assert(colors.length > 1), super( @@ -36,7 +46,7 @@ class ColorizeAnimatedText extends AnimatedText { duration: speed * text.characters.length, ); - late Animation _colorShifter, _fadeIn, _fadeOut; + late Animation _colorShifter, _fadeIn; // Copy of colors that may be reversed when RTL. late List _colors; @@ -48,20 +58,13 @@ class ColorizeAnimatedText extends AnimatedText { 0.75 * (textCharacters.length / 15.0); - _fadeIn = Tween(begin: 0.0, end: 1.0).animate( + _fadeIn = Tween(begin: fadeInOnStart ? 0.0 : 1.0, end: 1.0).animate( CurvedAnimation( parent: controller, curve: const Interval(0.0, 0.1, curve: Curves.easeOut), ), ); - _fadeOut = Tween(begin: 1.0, end: 1.0).animate( - CurvedAnimation( - parent: controller, - curve: const Interval(0.9, 1.0, curve: Curves.easeIn), - ), - ); - final colorShift = colors.length * tuning; final colorTween = textDirection == TextDirection.ltr ? Tween( @@ -75,7 +78,7 @@ class ColorizeAnimatedText extends AnimatedText { _colorShifter = colorTween.animate( CurvedAnimation( parent: controller, - curve: const Interval(0.0, 1.0, curve: Curves.easeIn), + curve: Interval(0.0, 1.0, curve: animationCurve), ), ); @@ -105,7 +108,7 @@ class ColorizeAnimatedText extends AnimatedText { @override Widget animatedBuilder(BuildContext context, Widget? child) { return Opacity( - opacity: _fadeIn.value != 1.0 ? _fadeIn.value : _fadeOut.value, + opacity: _fadeIn.value, child: completeText(context), ); }