我的矩形动画不会从中心开始放大,而是从第一个顶点向右扩展

问题描述

我正在尝试从从中心打开的屏幕中心创建一个正方形动画(从很小的地方开始,然后从正方形的中心开始扩大自身,不幸的是,我的代码正在发生的事情是提供动画作为CustomPaint中Rectangle的参数,Size(transitionTween.value,transitionTween.value)的动画并未从中心向外生长from,而是先从左/上顶点开始,将矩形向右扩大,而不是从如何获得使动画从中心开始和放大的效果

import 'package:Flutter/material.dart';

class PointToCircle extends StatefulWidget {
  @override
  _PointToCircleState createState() => _PointToCircleState();
}

class _PointToCircleState extends State<PointToCircle>
    with TickerProviderStateMixin {
  AnimationController _controller;
  Animation<double> transitionTween;
  // Animation<BorderRadius> borderRadius;

  @override
  void initState() {
    super.initState();

    _controller = AnimationController(
        duration: const Duration(milliseconds: 2000),vsync: this);
    
    transitionTween = Tween<double>(
      begin: 1.0,end: 200.0,).animate(
      CurvedAnimation(
        parent: _controller,curve: Curves.easeIn,),);

    _controller.forward();
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return AnimatedBuilder(
      animation: _controller,builder: (BuildContext context,Widget child) {
        return Scaffold(
            body: new Center(
                child: CustomPaint(
          painter: OpenPainter(transitionTween),)));
      },);
  }
}

class OpenPainter extends CustomPainter {
  Animation<double> transitionTween;
  OpenPainter(this.transitionTween);

  @override
  void paint(Canvas canvas,Size size) {
    var paint1 = Paint()
      ..color = Colors.blue
      ..style = PaintingStyle.stroke;

    canvas.drawRect(
        Offset(-50,-100) & Size(transitionTween.value,transitionTween.value),paint1);
  }

  @override
  bool shouldRepaint(CustomPainter oldDelegate) => true;
}

解决方法

发现解决方案是在自定义绘画中添加size:Size(transition.value,transition.value);,同时在矩形的大小内保留动态补间

但是我不明白现在的原因在起作用

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...