flutter_animate
flutter_animate copied to clipboard
Having two Widgets with the same AnimationController can cause errors
Having two Widgets with the same animation controller and same animation with the only difference being, that one of the Widgets has a delay sometimes causes this error: "Assertion failed: file:///.../flutter/lib/src/animation/curves.dart:176:12 begin <= 1.0 is not true"
Switching one Widget to another, so they both are different resolves the error. Or having no Delay, or using 2 different AnimationControllers.
Replication:
import 'package:flutter/material.dart';
import 'package:flutter_animate/flutter_animate.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return const MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({
super.key,
});
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> with TickerProviderStateMixin {
late AnimationController controller;
// late AnimationController controller2;
@override
void initState() {
controller = AnimationController(
vsync: this,
duration: const Duration(milliseconds: 800),
);
// controller2 = AnimationController(
// vsync: this,
// duration: const Duration(milliseconds: 800),
// );
super.initState();
}
@override
void dispose() {
controller.dispose();
// controller2.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: <Widget>[
ElevatedButton(
onPressed: () {
controller.forward();
},
child: const Text('Animate'),
),
Container(
color: Colors.red,
)
.animate(
controller: controller,
autoPlay: false,
)
.slideY(
begin: 1,
end: 0,
curve: Curves.fastOutSlowIn,
duration: const Duration(milliseconds: 800),
delay: const Duration(milliseconds: 800),
),
// Text(
// 'Hello World',
// ),
Container(
color: Colors.red,
)
.animate(
controller: controller,
autoPlay: false,
)
.slideY(
begin: 1.0,
end: 0.0,
curve: Curves.fastOutSlowIn,
duration: const Duration(milliseconds: 400),
),
],
),
);
}
}
Full Error Message on Linux (Repeating many times over):
======== Exception caught by scheduler library =====================================================
The following assertion was thrown during a scheduler callback:
Assertion failed: file:///home/user/snap/flutter/common/flutter/packages/flutter/lib/src/animation/curves.dart:176:12
begin <= 1.0
is not true
When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 294:3 throw_
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 35:3 assertFailed
packages/flutter/src/animation/curves.dart 176:21 transformInternal
packages/flutter/src/animation/curves.dart 40:12 transform
packages/flutter/src/animation/curves.dart 94:18 transform
packages/flutter/src/animation/animations.dart 464:23 get value
packages/flutter/src/animation/tween.dart 68:65 evaluate
packages/flutter/src/animation/tween.dart 114:31 get value
packages/flutter/src/animation/tween.dart 118:46 toString
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 1142:37 _toString$
packages/flutter/src/foundation/diagnostics.dart 2641:60 valueToString
packages/flutter/src/foundation/diagnostics.dart 2658:21 toDescription
packages/flutter/src/foundation/diagnostics.dart 1607:24 <fn>
packages/flutter/src/foundation/diagnostics.dart 1642:21 <fn>
packages/flutter/src/foundation/diagnostics.dart 1645:14 toJsonMap
packages/flutter/src/foundation/diagnostics.dart 2587:45 toJsonMap
packages/flutter/src/foundation/diagnostics.dart 1671:18 <fn>
dart-sdk/lib/internal/iterable.dart 425:31 elementAt
dart-sdk/lib/internal/iterable.dart 354:26 moveNext
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 1277:20 next
dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 555:14 of
dart-sdk/lib/internal/iterable.dart 224:7 toList
packages/flutter/src/foundation/diagnostics.dart 1671:58 toJsonList
packages/flutter/src/foundation/diagnostics.dart 2581:36 toJsonMap
packages/flutter/src/foundation/diagnostics.dart 1671:18 <fn>
dart-sdk/lib/internal/iterable.dart 425:31 elementAt
dart-sdk/lib/internal/iterable.dart 354:26 moveNext
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 1277:20 next
dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 555:14 of
dart-sdk/lib/internal/iterable.dart 224:7 toList
packages/flutter/src/foundation/diagnostics.dart 1671:58 toJsonList
packages/flutter/src/foundation/diagnostics.dart 1633:25 <fn>
packages/flutter/src/foundation/diagnostics.dart 1642:21 <fn>
packages/flutter/src/foundation/diagnostics.dart 1645:14 toJsonMap
packages/flutter/src/widgets/widget_inspector.dart 1718:18 [_nodeToJson]
packages/flutter/src/widgets/widget_inspector.dart 982:44 [_reportStructuredError]
packages/flutter/src/foundation/assertions.dart 1181:14 reportError
packages/flutter/src/widgets/framework.dart 6990:16 _reportException$
packages/flutter/src/widgets/framework.dart 2897:11 buildScope
packages/flutter/src/widgets/binding.dart 984:9 drawFrame
packages/flutter/src/rendering/binding.dart 457:5 [_handlePersistentFrameCallback]
packages/flutter/src/scheduler/binding.dart 1325:7 [_invokeFrameCallback]
packages/flutter/src/scheduler/binding.dart 1255:9 handleDrawFrame
packages/flutter/src/scheduler/binding.dart 1113:5 [_handleDrawFrame]
lib/_engine/engine/platform_dispatcher.dart 1274:5 invoke
lib/_engine/engine/platform_dispatcher.dart 248:5 invokeOnDrawFrame
lib/_engine/engine/initialization.dart 186:36 <fn>
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 574:37 _checkAndCall
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 579:39 dcall
====================================================================================================