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(),
  ),
)],);
Другие вопросы по тегам