flutter_animate icon indicating copy to clipboard operation
flutter_animate copied to clipboard

Having two Widgets with the same AnimationController can cause errors

Open burak-basci opened this issue 1 year ago • 0 comments

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
====================================================================================================



burak-basci avatar Feb 20 '24 20:02 burak-basci