flutter - 将小部件动画到其父级之外的位置(行/列表视图)
问题描述
我在行或列表视图中有一个卡片小部件列表。当点击这些卡片时,我想创建卡片增长并移动到屏幕中间的效果,屏幕的其余部分显示在灰色覆盖层下方。这些示例图像应该可以帮助您理解我要解释的内容。
Image #1 - 点击任何卡片之前的列表
Image #2 - 点击一张卡片后。卡片的大小和位置动画到屏幕的中心。其他一切都变得黑暗。(忽略糟糕的 Photoshop)。
我不是要完整的代码或任何东西,只是想知道是否可以将一个小部件移到它的父级之外并获得一些关于如何实现这种效果的想法。我知道可以在卡片上使用AnimatedContainer使其成长,定位部分是需要帮助的。谢谢!
解决方案
您可以transform:
在 a 上使用参数Container()
完整的工作示例
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
color: Colors.black87,
margin: EdgeInsets.only(top: 100),
child: Row(
children: <Widget>[
Container(
margin: EdgeInsets.symmetric(horizontal: 16),
transform: Matrix4.translationValues(0, 50, 0),
color: Colors.red,
height: 100,
width: 100,
),
Container(
margin: EdgeInsets.symmetric(horizontal: 16),
color: Colors.red,
height: 100,
width: 100,
),
Container(
margin: EdgeInsets.symmetric(horizontal: 16),
color: Colors.red,
height: 100,
width: 100,
),
],
),
)
)
);
}
}
#2 动画可以通过使用Hero()
Widget 和Overlay()
. 或者您可以使用自定义DialogBuilder
的一些建议来帮助您入门。
推荐阅读
- mysql - MySQL 每个查询/子查询是否只使用一个索引?
- schema - HCL OneTest Data 的重新生成功能能否以相同的顺序生成测试数据结果?
- python - 如何优雅地计算多日期数据框的百分比变化率?
- sql - Split Overlapping\Merged Dates in SQL
- javascript - 如何将我在 flickity js 中的整个代码包装成一个函数?
- python - Django - 系统在哪里确定“表单”是身份验证表单?
- visual-studio-code - Visual Studio 代码 - 按名称打开下一个文件的快捷方式
- python - TypeError:“DiscreteFactor”对象不可下标
- javascript - Office 365 加载项中是否有任何事件或功能应在不打开加载项的情况下执行?
- laravel - 如何为管理员使用 Spatie 角色和权限?