Миграция Flutter simpler_animation

Я пытаюсь обновить свое приложение до flutter 2.0 и застрял с устаревшей анимацией. У меня есть несколько ошибок в моем FadeIn.dart файл, который управляет классом, который я использую в нескольких других местах для постепенного появления и исчезновения уведомлений и предупреждений для пользователя.

Вот мой код в этой причуде в файле

      import 'package:flutter/material.dart';
import 'package:simple_animations/simple_animations.dart';

class FadeIn extends StatelessWidget {
  final double delay;
  final Widget child;

  FadeIn(this.delay, this.child);

  @override
  Widget build(BuildContext context) {
    final tween = MultiTrackTween([
      Track("opacity")
          .add(Duration(milliseconds: 500), Tween(begin: 0.0, end: 1.0)),
      Track("translateX").add(
          Duration(milliseconds: 500), Tween(begin: 50.0, end: 0.0),
          curve: Curves.easeOut)
    ]);

    return CustomAnimation(
      delay: Duration(milliseconds: (300 * delay).round()),
      duration: tween.duration,
      tween: tween,
      child: child,
      builderWithChild: (context, child, animation) =>
          Opacity(
            opacity: animation["opacity"],
            child: Transform.translate(
                offset: Offset(animation["translateX"], 0), child: child),
          ),
    );
  }
}

Я смотрю https://pub.dev/documentation/simple_animations/latest/ и https://pub.dev/packages/sa_v1_migration/versions/1.1.2, но меня смущает новый синтаксис после того, как я перейду на MultiTweenкогда я перехожу к документации, я застреваю на https://pub.dev/packages/sa_multi_tween, говоря, что больше ничего менять не нужно. Это, очевидно, неправда, и мои треки больше не распознаются.

Сообщения об ошибках Flutter.

      error: The method 'MultiTrackTween' isn't defined for the type 'FadeIn'. (undefined_method at [orange_power] lib/component/FadeIn.dart:12)
error: The method 'Track' isn't defined for the type 'FadeIn'. (undefined_method at [orange_power] lib/component/FadeIn.dart:13)
error: The method 'Track' isn't defined for the type 'FadeIn'. (undefined_method at [orange_power] lib/component/FadeIn.dart:15)
warning: The parameter 'builder' is required. (missing_required_param at [orange_power] lib/component/FadeIn.dart:20)
error: The named parameter 'builderWithChild' isn't defined. (undefined_named_parameter at [orange_power] lib/component/FadeIn.dart:25)

Я изо всех сил пытаюсь понять, что мне нужно изменить, чтобы соответствовать новому синтаксису, любая помощь будет очень признательна.

1 ответ

      import 'package:flutter/material.dart';
import 'package:simple_animations/simple_animations.dart';

enum AnimationType { opacity, translateX }

class FadeAnimation extends StatelessWidget {
  final double delay;
  final Widget child;

  const FadeAnimation(this.delay, this.child);

  @override
  Widget build(BuildContext context) {
    final tween = MultiTween<AnimationType>()
      ..add(AnimationType.opacity, Tween(begin: 0.0, end: 1.0),
          Duration(milliseconds: 500),)
      ..add(
        AnimationType.translateX,
        Tween(begin: 30.0, end: 1.0),
        Duration(milliseconds: 500),
      );

    return PlayAnimation<MultiTweenValues<AnimationType>>(
      delay: Duration(milliseconds: (500 * delay).round()),
      duration: tween.duration,
      tween: tween,
      child: child,
      builder: (context, child, value) => Opacity(
        opacity: value.get(AnimationType.opacity),
        child: Transform.translate(
            offset: Offset(value.get(AnimationType.translateX), 0), child: child),
      ),
    );
  }
}

Пожалуйста, обратитесь: /questions/50675659/oshibki-koda-fadeanimation-pri-popyitke-obnovit-simpleanimations-221-posle-migra/56564284#56564284

Другие вопросы по тегам