Миграция 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