Flutter 如何将小部件扩展为具有更多内容的更大小部件?

Posted

技术标签:

【中文标题】Flutter 如何将小部件扩展为具有更多内容的更大小部件?【英文标题】:Flutter How can I expand a widget into a bigger widget with more content? 【发布时间】:2021-05-29 13:03:12 【问题描述】:

我在一个列表中有一个带有一些文本的矩形,当用户点击进入一个更大的矩形时,我想扩展这个矩形,里面有更多的内容

例如,这是我的初始小部件:

当用户点击“矩形 1”时,我希望它扩展为:

【问题讨论】:

您正在寻找扩展磁贴。 【参考方案1】:

您可以使用来自 Flutter 的新动画包。它允许您添加动画以将容器扩展为更大的容器,从而能够显示更大的内容。

您可以在此处找到该软件包的链接: https://pub.dev/packages/animations

如果您愿意,可以在此处找到如何实现它: https://www.youtube.com/watch?v=HHzAJdlEj1c

希望这能回答您的问题并帮助您。这不是很复杂的实现,例如放置一个手势检测器等。

【讨论】:

【参考方案2】:

您需要做的就是将小部件包装在手势检测器中,并将 onTap 方法设置为替换布尔变量,然后根据该变量的值决定是否显示其他内容。

这是一个例子:

class Test extends StatefulWidget 

  @override
  TestState createState() => TestState() ;



class TestState extends State<Test> 

bool showPlus = false ; 

  Widget build (BuildContext context) 
    return Scaffold (
     body : GestureDetector(
        onTap: () 
        setState (() 
          (showPlus) ? showPlus = false :showPlus = true ;
        );
  , 
  child: Column(
   children: [
            Padding(
              padding: EdgeInsets.symmetric(horizontal: 20 , vertical: 20),
              child: Text(
                  'Rect 1',
              ),
            ),
            (showPlus) ? Row(
              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
              children: [
                Container(width: 100 , height: 100, color: Colors.white,),
                Container(width: 100 , height: 100, color: Colors.white,),
                Container(width: 100 , height: 100, color: Colors.white,),
              ],
            ) : SizedBox.shrink()
          ],
       )
      )
    );
   
 

【讨论】:

以上是关于Flutter 如何将小部件扩展为具有更多内容的更大小部件?的主要内容,如果未能解决你的问题,请参考以下文章

如何将小部件推广到具有不同选择的不同类?

将内容扩展为空div

如何将小部件放置在具有成比例大小和位置的小部件上方

如何有条件地将小部件添加到列表中?

颤振:单击该小部件内的按钮后如何将小部件更改为另一个小部件

将小部件移动到另一个文件后,Flutter Localization功能无法正常工作?