【问题标题】:How do you randomize the order of a fixed set of numbers in dart?你如何随机化飞镖中一组固定数字的顺序?
【发布时间】:2021-03-09 09:39:18
【问题描述】:

我想知道是否有人可以帮助我解决让我陷入困境的事情。

我对颤振和飞镖语言非常陌生。在完成 Udemy 课程的过程中从事基本的个人项目。

它被称为“Bushy Bingo”——下面是 UI(暂时搁置布局问题) 我想要的是当用户单击随机播放按钮时动物的顺序会随机播放。所以你每次都会得到一个随机游戏。

这些动物都是我创建的自定义小部件,它们位于一个“表格”小部件中,4 个表格行,4 个孩子一个块来创建 4 x 4 网格。

我的想法是我需要

  1. 将“positionNumber”值作为 in 分配给每个单元格 网格

  2. 创建一个包含我的 16 只动物的“animalIndex”地图

  3. 编写一个 for 循环函数,从 从以下逻辑开始..

    A - 16 次...

    B - 生成一个介于零和我的 animalIndex 长度之间的随机数

    C - 从我的 animalIndex 中获取相应的条目并将其作为新条目添加到我的 tableOrder 列表中

    D - 从 animalIndex 中删除条目

假设这是合理的逻辑,我无法让它与 dart 一起使用。请参阅下面的屏幕截图以查看问题

如果有人能告诉我哪里出错了,我将不胜感激。也许我的整个方法都是错误的。 (我以前错了;))

【问题讨论】:

    标签: list flutter dart


    【解决方案1】:

    编辑: 我真的很抱歉,我不是故意踩到任何脚趾的。你可能在你已经拥有的东西上做了很多工作。显然可以使用您的方法,但是对于您想要实现的目标来说,它有点过头了。我就是这样得出答案的。如果这不是您想要的,那么我希望其他人可以帮助您生成数字等。

    我还没有足够的声誉来发表评论,所以我正在这样做。最好的方法是创建一个动物类并从那里建立一个列表。

    import 'package:flutter/material.dart';
    
    class Animal {
      String name;
      Image animalImage;
    
      Animal({this.name, this.animalImage});
    }
    

    然后用它来做一个列表:

    List getAnimals() {
      return [
        Animal(
          name: "duck",
          animalImage: Image.network('https://picsum.photos/250?image=9'),
        ),
        Animal(
          name: "elephant",
          animalImage: Image.network('https://picsum.photos/250?image=9'),
        ),
      ];
    }
    

    一旦你有了它,你就可以把它放在你的 listviewBuilder 中。他们按下按钮后,您可以创建一个函数来获取该列表并对其进行随机播放:

    example: shuffle docs example: other shuffle stuff

    这样您就可以随时添加或删除动物。使用该类,您可以添加或删除额外数据。因为它是一个列表,所以它会有自己的索引 ID,所以你可以订购它,随机播放它,做任何你想做的事情。

    ListviewBuilder 示例。有一些方法可以制作 gridviewbuilder,因此也涵盖了这一点。您可以随意设置小部件的样式。 Gridview example

    ListView.builder(
                      itemCount: getAnimals().length,
                      scrollDirection: Axis.vertical,
                      itemBuilder: (BuildContext context, int index) {
                        var _data = getAnimals()[index];
    
                        return Padding(
                          padding: const EdgeInsets.all(8.0),
                          child: Container(
                            color: Colors.red,
                            child: ListTile(
                              title: Text(_data.name),
                            ),
                          ),
                        );
                      })
    

    【讨论】:

    • 你是个传奇!随心所欲地踩在我的脚趾上。我只想要最简单的解决方案。我不知道有一个随机播放功能!绝对比我要去的兔子洞要好。非常感谢:)
    • 没问题的人。如果您有任何问题或疑问,请不要犹豫。这比浪费时间尝试可以更容易完成的事情要好得多。我很难学到这一点.. xD
    猜你喜欢
    • 2022-10-17
    • 1970-01-01
    • 2022-06-19
    • 2020-09-07
    • 2012-10-30
    • 2019-09-19
    • 2016-11-27
    • 2012-06-28
    • 2014-09-08
    相关资源
    最近更新 更多