如何跳过项目构建器 gridview.builder Flutter Firebase Stream Builder 中的构建

2024-01-09

我想删除 firebase 的某些内容,当 Streambuilder(gridview.builder) 到达它的索引(该索引将为空)时,它会忽略它,并且不要在该插槽中添加任何小部件并将其保留给其他人

这就是它的样子

我希望左侧和右侧的空白区域消失,并由其他小部件取代它

Firebase 数据库映像

 classList(userUid) {
    print("user uid: $userUid");
    return StreamBuilder(
        stream: FirebaseDatabase.instance
            .reference()
            .child("user")
            .child(userUid)
            .child("classData")
            .onValue,
        builder: (BuildContext context, AsyncSnapshot<Event> snapshot) {
          if (snapshot.hasData) { //            Map<dynamic, dynamic> map = snapshot.data.snapshot.value; //            snapshot.data.snapshot.value.forEach((dynamic, v) => print(v["className"]));
            if (snapshot.data.snapshot.value != null) {
              return GridView.builder(
                gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
                    crossAxisCount: 3),
                itemCount: snapshot.data.snapshot.value.toList().length,
                padding: EdgeInsets.all(2.0),
                scrollDirection: Axis.vertical,
                itemBuilder: (BuildContext context, int index) {
                  RandomColor _randomColor = RandomColor();

                  Color _color = _randomColor.randomColor(
                      colorBrightness: ColorBrightness.veryLight);

                  Color _color2 = _randomColor.randomColor(
                      colorBrightness: ColorBrightness.veryDark);
                  if (snapshot.data.snapshot.value.toList()[index] != null) {
                    return Container(
                      child: RaisedButton(
                        splashColor: _color2,
                        color: _color,
                        shape: SuperellipseShape(
                            borderRadius: BorderRadius.circular(90)),
                        onPressed: () {
                          Navigator.push(
                              context,
                              MaterialPageRoute(
                                  builder: (context) => ClassPage(
                                        className: snapshot.data.snapshot.value
                                            .toList()[index]["className"]
                                            .toString()
                                            .toUpperCase(),
                                        classSection: snapshot
                                            .data.snapshot.value
                                            .toList()[index]["classSection"]
                                            .toString()
                                            .toUpperCase(),
                                        classIndex: snapshot.data.snapshot.value
                                            .toList()[index],
                                      )));
                        },
                        child: Text(
                          "${snapshot.data.snapshot.value.toList()[index]["className"].toString().toUpperCase()} \n ${snapshot.data.snapshot.value.toList()[index]["classSection"].toString().toUpperCase()}",
                          style: TextStyle(fontSize: 20, shadows: [
                            Shadow(
                                // bottomLeft
                                offset: Offset(-1.5, -1.5),
                                color: Colors.black),
                            Shadow(
                                // bottomRight
                                offset: Offset(1.5, -1.5),
                                color: Colors.black),
                            Shadow(
                                // topRight
                                offset: Offset(1.5, 1.5),
                                color: Colors.black),
                            Shadow(
                                // topLeft
                                offset: Offset(-1.5, 1.5),
                                color: Colors.black),
                          ]),
                        ),
                      ),
                      padding: EdgeInsets.all(4.0),
                    );
                  } else {
                    return Visibility(
                      child: Text("Gone"),
                      visible: false,
                    );
                  }
                },
              );
            }
            return Center(
                child: Text(
              "No Class Registered",
              style: TextStyle(fontSize: 42),
            ));
          } else {
            return CircularProgressIndicator();
          }
        });   }

我解决网格中存在这些空白空间的方法是在网格中使用它们之前过滤小部件列表:

List visibleWidgets = allWidgets.where((widget) => widget.show == true).toList();

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何跳过项目构建器 gridview.builder Flutter Firebase Stream Builder 中的构建 的相关文章

随机推荐

  • 如何组织嵌入式项目中的代码?

    高度嵌入式 有限的代码和 RAM 大小 项目给代码组织带来了独特的挑战 我见过很多完全没有组织的项目 主要是由硬件工程师完成的 根据我的经验 他们通常不关心代码的非功能方面 但是 我一直在尝试相应地组织我的代码 硬件特定 驱动程序 初始化
  • 文本浮动在图像旁边的块中

    我想实现以下定位 两个不同的文本 块中 浮动 内嵌在图像旁边 div 内的所有内容 我一直在尝试使用不同的显示设置 块 内联文本等 但它仍然无法正常工作 HTML div class res img src gt span TITLEe s
  • 在 MATLAB 中序列化多维数组以进行数据库插入的最简单方法?

    我似乎找不到任何用于序列化数据的标准函数 我有一个大型 128x51 数组 需要将其存储在单个数据库字段中 如果没有某种序列化 事情就会出现问题 解决这个问题的最好方法是什么 我不太使用matlab 所以我不熟悉标准程序 一种可能性是使用T
  • 使用 openrowset 将 Excel 文件读入临时表;我如何引用该表?

    我正在尝试编写一个存储过程 它将 Excel 文件读入临时表 然后处理该表中的一些数据 然后将该表中选定的行插入到永久表中 所以 它是这样开始的 SET SQL select into mytemptable FROM OPENROWSET
  • 单击“模块”选项卡时,是否可以让 Doxygen 直接显示唯一的模块?

    考虑以下单文件项目 defgroup api Public API This is foo and bar together ingroup api void foobar Nothing here to see 在包含该文件的目录中 我运
  • 在循环中延迟释放资源的正确方法?

    我需要在循环中对数据库进行 SQL 查询 for rows Next fields err db Query if err nil defer fields Close do something with fields 什么会更好 保持原样
  • WPF MVVM 文本框验证

    我正在使用 MVVM 创建 WPF 应用程序 我有一个文本框 它绑定到我的 ViewModel 类型中的一个属性double默认值为 0 0 如果我现在在文本框中输入文本值 例如 abc 则在失去焦点时 文本框会突出显示 指示值不正确 但是
  • 正则表达式查找 = 之后的字符串

    我对正则表达式真的很陌生 我一直在四处寻找答案 但要么它不起作用 要么我遇到某种错误 所以我会尝试问这个问题 希望有人可以指导我 我有一个看起来像这样的字符串 str 汽车 品牌 萨博 车轮 4 我不知道你是否可以直接获得几个不同的匹配 或
  • Excel 2007 PageSetup.FitToPagesWide 问题

    我一直在尝试使用 C 在 Excel 2007 的 Microsoft Visual Studio 项目中设置 Excel 页面的页面缩放比例 代码看起来像这样 private void Sheet1 Startup object send
  • Java TemporaryFolder getRoot() 异常

    我正在尝试在我的 junit 之一中使用 org junit rules TemporaryFolder 来测试文件 I O 我已经这样初始化它 Code Rule public TemporaryFolder temporaryFolde
  • 如何将行名称转换为第一列?

    我有一个像这样的数据框 df VALUE ABS CALL DETECTION P VALUE 1007 s at 957 729231881542 P 0 00486279317241156 1053 at 320 63270128336
  • Google App Engine Jinja2 和 Markupsafe

    谷歌表示 MarkupSafe 让 jina2 运行得更快here https developers google com appengine docs python tools libraries27 我已将其添加到我的 Yaml 文件中
  • 检查文件是否已经打开

    我需要编写一个自定义批处理文件重命名器 我已经完成了大部分工作 只是我不知道如何检查文件是否已经打开 我只是使用java io File包里有一个canWrite 方法 但这似乎并没有测试该文件是否正在被另一个程序使用 关于如何使这项工作有
  • JavaScript 中什么是好的数学集合实现?

    哪里有一个好的 JavaScript 数学集合实现 它应该包括交集 并集 补集和 奖励点 笛卡尔积的有效实现 不 这不是家庭作业 我有一个 yubikey 它是一个 USB 键盘 可以输入从 16 个键码中选择的序列来输入 128 位一次性
  • 如何列出用“skip-worktree”忽略的文件

    我用过git update index skip worktree
  • 尝试安装 python-docx(错误:无法找到 vcvarsall.bat)

    我已经尝试了一切 但我不知道从这里该去哪里 当我调用命令时pip install python docx我明白了 running build ext building lxml etree extension error Unable to
  • 如何快速将字典拆分为多个字典

    我找到了一个解决方案 但它真的很慢 def chunks self data SIZE 10000 for i in xrange 0 len data SIZE yield dict data items i i SIZE 您是否有任何不
  • 如何按唯一编号删除多列中的行?

    给定这样的数据 C1 lt c 3 999 000 4 4 5 C2 lt c 3 7 3 4 5 C3 lt c 5 4 3 6 999 000 DF lt data frame ID c A B C D E C1 C1 C2 C2 C3
  • MySQL 变量中的多个值

    当变量中存储单个值时 以下内容按预期工作 SET a 20100630 SELECT FROM wordbase WHERE verified a 但当变量中存储多个值时 它不起作用 SET a 20100630 20100701 SELE
  • 如何跳过项目构建器 gridview.builder Flutter Firebase Stream Builder 中的构建

    我想删除 firebase 的某些内容 当 Streambuilder gridview builder 到达它的索引 该索引将为空 时 它会忽略它 并且不要在该插槽中添加任何小部件并将其保留给其他人 这就是它的样子 我希望左侧和右侧的空白