如何制作其项目可以更改索引的gridview

how to make a gridview whose items can change index

我想让某些网格项目消失。我使用了可见性小部件,但在网格视图中该项目没有从网格列表中消失,我该怎么办?

GridView.count(
 shrinkWrap: true,
 crossAxisCount: 2,
 mainAxisSpacing: 7.5,
 crossAxisSpacing: 7.5,
 physics: NeverScrollableScrollPhysics(),
 children: [
   Visibility(
     visible: false,
     child: Container(
       color: Colors.green,
       child: Center(
         child: Text('1'),
       ),
     ),
   ),

   Visibility(
     visible: true,
     child: Container(
       color: Colors.green,
       child: Center(
         child: Text('2'),
       ),
     ),
   ),

   Visibility(
     visible: true,
     child: Container(
       color: Colors.green,
       child: Center(
         child: Text('3'),
       ),
     ),
   ),
 ],
)

我得到了什么

我想要的

Visibility is used to show or hide a child.

如果要删除物理 space,请使用 if 语句

if (false)
  Container(
    color: Colors.green,
    child: Center(
      child: Text('1'),
    ),
  ),

你也可以使用else状态

if(visible) MyVisibleWidget()
else  MyEmptyWidget(),

对于 if else,您还可以在 Visibility 小部件上选择 replacement。在这种情况下,我没有使用 replacement,因为它最终会添加一个 child 来替换 visible: false,,这不是我们想要的。