【问题标题】:Animating Widget to a position outside of it's parent (Row/Listview)将小部件动画到其父级之外的位置(行/列表视图)
【发布时间】:2019-12-28 03:31:21
【问题描述】:

我在行或列表视图中有一个卡片小部件列表。当点击这些卡片时,我想创建一个卡片增长并移动到屏幕中间的效果,屏幕的其余部分出现在灰色覆盖层下方。 这些示例图片应该可以帮助您理解我要解释的内容。

图片 #1 - 点击任何卡片之前的列表

图片#2 - 点击一张卡片后。卡片的大小和位置动画到屏幕的中心。其他一切都变得黑暗。 (忽略糟糕的 Photoshop)。

我不是要求完整的代码或任何东西,只是想知道是否可以将小部件移到其父级之外并获得一些关于如何实现此效果的想法。我知道可以在卡片上使用AnimatedContainer使其成长,定位部分是需要帮助的。谢谢!

【问题讨论】:

    标签: flutter flutter-layout


    【解决方案1】:

    您可以在Container() 上使用transform: 参数

    完整的工作示例

    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() 小部件和Overlay() 来完成。或者,您可以使用自定义 DialogBuilder,只需几个建议即可开始。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多