Dart 颤振:如何在英雄动画中更改子元素的大小?
我有一个英雄,它有一个子元素,我想在英雄动画中改变大小(在本例中,我想改变它的纵横比) 以下是我的(精简)构建方法:Dart 颤振:如何在英雄动画中更改子元素的大小?,dart,flutter,Dart,Flutter,我有一个英雄,它有一个子元素,我想在英雄动画中改变大小(在本例中,我想改变它的纵横比) 以下是我的(精简)构建方法: Widget build(BuildContext build) { final aspect = expanded ? 1.3 : 1.0; return new Hero( child: Column( children: <Widget>[ new AspectRatio( aspect: aspect,
Widget build(BuildContext build) {
final aspect = expanded ? 1.3 : 1.0;
return new Hero(
child: Column(
children: <Widget>[
new AspectRatio(
aspect: aspect,
child: // Stuff that creates a header
),
new Container(
child: // General descriptions
)
],
);
}
小部件构建(构建上下文构建){
最终方面=扩展?1.3:1.0;
回归新英雄(
子:列(
儿童:[
新方面(
方面:方面,,
child://创建标题的内容
),
新容器(
儿童://一般说明
)
],
);
}
现在,纵横比在这两个值之间跳跃。我的问题是,我是否可以将纵横比与英雄动画一起设置动画,并使其从1.3缓慢移动到1.0,然后再返回
有关完整的示例(其中还显示了英雄动画期间出现的奇怪溢出问题),请参见以下要点:
由于我现在在家,我现在无法尝试您的代码。但我有一个英雄动画示例。请尝试一下
// main.dart class
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart' show timeDilation;
import 'package:flutter_test7/photo_hero.dart';
import 'package:flutter_test7/second_page.dart';
class HeroAnimation extends StatelessWidget {
Widget build(BuildContext context) {
timeDilation = 2.5; // 1.0 means normal animation speed.
return new Scaffold(
appBar: new AppBar(
title: const Text('Basic Hero Animation'),
),
body: new Center(
child: new PhotoHero(
photo: 'images/flippers-alpha.png',
width: 300.0,
onTap: () {
Navigator.of(context).pushNamed('/second_page');
},
),
),
);
}
}
void main() {
runApp(
new MaterialApp(
home: new HeroAnimation(),
routes: <String, WidgetBuilder>{
'/second_page': (context) => new SecondPage()
},
),
);
}
// photo_hero.dart class
import 'package:flutter/material.dart';
class PhotoHero extends StatelessWidget {
const PhotoHero({Key key, this.photo, this.onTap, this.width})
: super(key: key);
final String photo;
final VoidCallback onTap;
final double width;
Widget build(BuildContext context) {
return new SizedBox(
width: width,
child: new Hero(
tag: photo,
child: new Material(
color: Colors.transparent,
child: new InkWell(
onTap: onTap,
child: new Image.asset(
photo,
fit: BoxFit.contain,
),
),
),
),
);
}
}
// second_page.dart class
import 'package:flutter/material.dart';
import 'package:flutter_test7/photo_hero.dart';
class SecondPage extends StatefulWidget {
@override
_SecondPageState createState() => new _SecondPageState();
}
class _SecondPageState extends State<SecondPage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: const Text('Flippers Page'),
),
body: new Container(
color: Colors.lightBlueAccent,
padding: const EdgeInsets.all(16.0),
alignment: Alignment.topLeft,
child: new PhotoHero(
photo: 'images/flippers-alpha.png',
width: 100.0,
onTap: () {
Navigator.of(context).pop();
},
),
),
);
}
}
//main.dart类
进口“包装:颤振/材料.省道”;
导入“包:flatter/scheduler.dart”显示时间膨胀;
导入“包:flatter_test7/photo_hero.dart”;
导入“package:flatter_test7/second_page.dart”;
类HeroAnimation扩展了无状态小部件{
小部件构建(构建上下文){
TimeDistrict=2.5;//1.0表示正常动画速度。
归还新脚手架(
appBar:新的appBar(
标题:常量文本(“基本英雄动画”),
),
正文:新中心(
孩子:新电影英雄(
照片:'images/flippers alpha.png',
宽度:300.0,
onTap:(){
Navigator.of(context.pushNamed('/second_page');
},
),
),
);
}
}
void main(){
runApp(
新材料聚丙烯(
主页:新HeroAnimation(),
路线:{
“/second_page”:(上下文)=>new SecondPage()
},
),
);
}
//图为英雄级飞镖
进口“包装:颤振/材料.省道”;
类PhotoHero扩展了无状态小部件{
常量PhotoHero({Key,this.photo,this.onTap,this.width})
:super(key:key);
最后的弦乐照片;
最终确认为onTap;
最终双倍宽度;
小部件构建(构建上下文){
返回新的SizedBox(
宽度:宽度,
孩子:新英雄(
标签:照片,
儿童:新材料(
颜色:颜色。透明,
孩子:新墨水井(
onTap:onTap,
子:新建Image.asset(
照片,
适合:BoxFit.contain,
),
),
),
),
);
}
}
//第二页。省道类
进口“包装:颤振/材料.省道”;
导入“包:flatter_test7/photo_hero.dart”;
类SecondPage扩展StatefulWidget{
@凌驾
_SecondPageState createState()=>new_SecondPageState();
}
类_SecondPageState扩展状态{
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:常量文本(“翻转页”),
),
主体:新容器(
颜色:Colors.lightBlueAccent,
填充:常数边集全部(16.0),
对齐:alignment.topLeft,
孩子:新电影英雄(
照片:'images/flippers alpha.png',
宽度:100.0,
onTap:(){
Navigator.of(context.pop();
},
),
),
);
}
}
希望这能有所帮助。对于这段代码,我不知道问题出在哪里。因此,请发布完整的代码,我将尝试为您提供解决方案。我添加了一个完整示例的要点。即使没有AspectRatio,我也有同样的问题。在我的情况下,它是两个大小不同的图标。我怀疑是否有可能添加缩放动画,因为widget大小是在转换后设置的(但我不确定)。我可以让一个英雄动画与一个布局子项/图像一起工作,但当我组合多个布局子项时,它就不起作用了。@Jeff和你有同样的问题。我在这里提出了一个问题: