Flutter 如何设置在特定条件下显示的小部件的动画

Flutter 如何设置在特定条件下显示的小部件的动画,flutter,Flutter,当前,网格根据在指定高度单击的内容打开每个图像URL,背景模糊。我知道,如果showPreview是真的,那么从网格中的位置设置动画并进行增长并不容易,因为它会显示一个新的小部件 但是,当_showPreview设置为true时,是否有任何方法可以使图像预览增长/扩展,而不仅仅是在单击时显示 class\u GalleryState扩展状态{ bool\u showPreview=false; 字符串_image=''; var_controller=ScrollController(); S

当前,网格根据在指定高度单击的内容打开每个图像URL,背景模糊。我知道,如果showPreview是真的,那么从网格中的位置设置动画并进行增长并不容易,因为它会显示一个新的小部件

但是,当_showPreview设置为true时,是否有任何方法可以使图像预览增长/扩展,而不仅仅是在单击时显示

class\u GalleryState扩展状态{
bool\u showPreview=false;
字符串_image='';
var_controller=ScrollController();
ScrollPhysics_physics=夹紧ScrollPhysics();
@凌驾
void initState(){
super.initState();
_controller.addListener(){
如果(_controller.position.pixels _physics=ClampingScrollPhysics());
其他的
设置状态(()=>_physics=BouncingScrollPhysics());
});
}
@凌驾
小部件构建(构建上下文){
List imageType=widget.imageCategory;
返回安全区(
子:堆栈(
儿童:[
纵队(
儿童:[
扩大(
弹性:1,
子:容器(
宽度:double.infinity,
子:堆栈(
儿童:[
沙德尔马斯克(
着色器回调:(rect){
返回线半径(
开始:Alignment.topCenter,
结束:对齐。底部中心,
颜色:[颜色。黑色,颜色。透明],
).createShader(
矩形从LTRB(0,0,矩形宽度,矩形高度));
},
blendMode:blendMode.dstIn,
子:容器(
宽度:double.infinity,
孩子:英雄(
标记:“${widget.title}”,
子:Image.asset(
widget.imageHeader,
适合:BoxFit.cover,
),
),
),
),
对齐(
对齐:对齐(-.7、.7),
子:文本(
widget.title,
样式:TextStyle(
fontFamily:“机器人”,
fontWeight:fontWeight.normal,
装饰:textEdition.none,
颜色:颜色,白色,
尺寸:30),,
),
),
对齐(
对齐:alignment.topLeft,
儿童:手势检测器(
onTap:(){
Navigator.pop(上下文);
},
儿童:材料(
颜色:颜色。透明,
子:图标(
Icons.arrow_back,
颜色:颜色。白色70,
尺码:40,
),
),
),
),
],
),
),
),
扩大(
弹性:5,
孩子:卡片(
形状:圆形矩形边框(
borderRadius:仅限borderRadius(
左上:半径。圆形(40),
右上角:半径。圆形(40),
),
),
子:堆栈(
儿童:[
填充物(
填充:仅限常量边集(顶部:20.0),
子项:GridView.builder(
控制器:_控制器,
物理学:物理,
itemCount:imageType.length,
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(
交叉轴计数:3),
itemBuilder:(构建上下文,int索引){
返回手势检测器(
onTap:(){
设置状态(){
_showPreview=true;
_image=“${imageType[index]}”;
打印('${imageType[index]}');
});
},
孩子:填充(
填充:常数边集全部(4.0),
孩子:卡片(
标高:4,
形状:圆形矩形边框(
边界半径:边界半径。圆形(5.0),
),
clipBehavior:Clip.hardEdge,
子:CachedNetworkImage(
适合:BoxFit.cover,
imageUrl:“${imageType[index]}”,
占位符:(上下文,url)=>
三角虫(
颜色:颜色。深橙色[900],
),
errorWidget:(上下文、url、错误)=>
新图标(Icons.error),
),
),
),
);
},