Animation Can';t使移动容器在颤振中逐渐变大,从筛网中心开始变小

Animation Can';t使移动容器在颤振中逐渐变大,从筛网中心开始变小,animation,flutter,dart,containers,Animation,Flutter,Dart,Containers,我一直在尝试制作一个从左到右过渡的容器,它的大小不断增大,直到到达中心,到达中心后,它的大小逐渐减小。 我尝试使用两个控制器和更多的Tween-s,但没有找到结果 `import 'package:flutter/material.dart'; import 'package:flutter/animation.dart'; class Basic_animation_view extends StatefulWidget { @override _Basic_animation_v

我一直在尝试制作一个从左到右过渡的容器,它的大小不断增大,直到到达中心,到达中心后,它的大小逐渐减小。 我尝试使用两个控制器和更多的Tween-s,但没有找到结果

`import 'package:flutter/material.dart';
 import 'package:flutter/animation.dart';

class Basic_animation_view extends StatefulWidget {
  @override
  _Basic_animation_viewState createState() => _Basic_animation_viewState();
}

class _Basic_animation_viewState extends State<Basic_animation_view>
  with TickerProviderStateMixin {
  AnimationController controller;
  Animation<Offset> animation;
  Animation<Size> growAnimation;

  @override
  void initState() {
    super.initState();
    controller =
        AnimationController(vsync: this, duration: const Duration(seconds: 3))
          ..addListener(() {
            setState(() {});
          });
    animation = Tween<Offset>(begin: Offset(0, 0), end: Offset(5, 0))
        .animate(controller);

    growAnimation =
        Tween<Size>(begin: Size(50.0, 50.0), end: Size(100.0, 100.0))
            .animate(CurvedAnimation(parent: controller,curve: Curves.linear));

    controller.repeat();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(),
        body: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            SlideTransition(
              position: animation,
              child: Container(***strong text***
                width:growAnimation.value.width,
                height:growAnimation.value.height,
                color: Colors.red,
              ),
            ),
          ],
        ));
  }
}
`
`import'包:flatter/material.dart';
导入“package:flatter/animation.dart”;
类基本\u动画\u视图扩展StatefulWidget{
@凌驾
_基本_动画_视图状态createState()=>_基本_动画_视图状态();
}
类_基本_动画_视图状态扩展状态
使用TickerProviderStateMixin{
动画控制器;
动画;
动画成长动画;
@凌驾
void initState(){
super.initState();
控制器=
AnimationController(vsync:this,duration:const duration(秒:3))
…addListener(){
setState((){});
});
动画=Tween(开始:偏移(0,0),结束:偏移(5,0))
.制作动画(控制器);
成长动画=
吐温(开始:尺寸(50.0,50.0),结束:尺寸(100.0,100.0))
.animate(曲线动画(父对象:控制器,曲线:Curves.linear));
controller.repeat();
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
appBar:appBar(),
正文:专栏(
crossAxisAlignment:crossAxisAlignment.center,
儿童:[
幻灯片转换(
职位:动画,
子:容器(***强文本***
宽度:grownanimation.value.width,
高度:grownanimation.value.height,
颜色:颜色,红色,
),
),
],
));
}
}
`
也许动画容器类会更接近您想要的。你 可以使用包含更多详细信息的文档化样本查找更多详细信息 在博物馆找到的

//的颤振代码示例
//下面的示例(如上所示)转换AnimatedContainer
//在两个州之间。它调整[高度]、[宽度]、[颜色]和
//点击时的[对齐]属性。
进口“包装:颤振/材料.省道”;
void main()=>runApp(MyApp());
///此小部件是主应用程序小部件。
类MyApp扩展了无状态小部件{
静态常量字符串_title='颤振代码示例';
@凌驾
小部件构建(构建上下文){
返回材料PP(
标题:_标题,
家:脚手架(
appBar:appBar(标题:常量文本(_title)),
正文:MyStatefulWidget(),
),
);
}
}
类MyStatefulWidget扩展了StatefulWidget{
MyStatefulWidget({Key}):超级(Key:Key);
@凌驾
_MyStatefulWidgetState createState()=>\u MyStatefulWidgetState();
}
类_MyStatefulWidgetState扩展状态{
bool selected=false;
@凌驾
小部件构建(构建上下文){
返回手势检测器(
onTap:(){
设置状态(){
选中=!选中;
});
},
儿童:中心(
子:动画容器(
宽度:选定?200.0:100.0,
高度:选定?100.0:200.0,
颜色:选定?颜色。红色:颜色。蓝色,
对齐:
选中?Alignment.center:Alignment directive.topCenter,
持续时间:持续时间(秒数:2),
曲线:Curves.FastOutSwowin,
儿童:标志(尺寸:75),
),
),
);
}
}

Tnx的答案,但我的主要问题是让容器从左到右连续移动,同时逐渐改变大小,使屏幕中心变大,从中心开始减小大小,直到屏幕结束。
// Flutter code sample for

// The following example (depicted above) transitions an AnimatedContainer
// between two states. It adjusts the [height], [width], [color], and
// [alignment] properties when tapped.

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

/// This Widget is the main application widget.
class MyApp extends StatelessWidget {
  static const String _title = 'Flutter Code Sample';

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: _title,
      home: Scaffold(
        appBar: AppBar(title: const Text(_title)),
        body: MyStatefulWidget(),
      ),
    );
  }
}

class MyStatefulWidget extends StatefulWidget {
  MyStatefulWidget({Key key}) : super(key: key);

  @override
  _MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
  bool selected = false;

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () {
        setState(() {
          selected = !selected;
        });
      },
      child: Center(
        child: AnimatedContainer(
          width: selected ? 200.0 : 100.0,
          height: selected ? 100.0 : 200.0,
          color: selected ? Colors.red : Colors.blue,
          alignment:
              selected ? Alignment.center : AlignmentDirectional.topCenter,
          duration: Duration(seconds: 2),
          curve: Curves.fastOutSlowIn,
          child: FlutterLogo(size: 75),
        ),
      ),
    );
  }
}