Flutter, как установить выравнивание в PositionedWidget в StackWidget?
Как сделать возможным центрировать анимацию? Я использую пакет https://pub.dev/packages/simple_animations.
У меня есть стек с несколькими позиционированными виджетами с анимацией в качестве дочерних элементов. Проблема в том, что анимация выполняется не из центра, а из верхнего левого угла. Вот код, в котором только один находится внутри стека.
Кто-нибудь знает, как запустить анимацию из Центра?
благодаря
Stack(children: [
Positioned(
right: 15.0,
top: 10.0,
child: AnimRectangle(),
)],);
enum AniProps { width, height, color }
class AnimRectangle extends StatelessWidget {
final tween = MultiTween<AniProps>()
..add(AniProps.width, 0.0.tweenTo(40.0), 1000.milliseconds)
..add(AniProps.width, 40.0.tweenTo(5.0), 500.milliseconds)
..add(AniProps.height, 0.0.tweenTo(50.0), 2500.milliseconds)
..add(AniProps.color, Colors.red.tweenTo(Colors.blue), 3.seconds);
@override
Widget build(BuildContext context) {
return PlayAnimation<MultiTweenValues<AniProps>>(
tween: tween, // Pass in tween
duration: tween.duration, // Obtain duration from MultiTween
builder: (context, child, value) {
return Container(
width: value.get(AniProps.width),
height: value.get(AniProps.height),
color: value.get(AniProps.color),
);
},
);
}
}
2 ответа
Вы можете просто использовать
alignment
вариант присутствует в
Stack
child: Stack(
alignment: Alignment.center,
children: <Widget>[
],
),
Я решил, что поместил SizedBox в позиционируемый виджет!
Stack(children: [
Positioned(
right: 15.0,
top: 10.0,
child:SizedBox(
height: 60,
width: 60,
child: AnimRectangle(),
),
)],);