【问题标题】:How to manipulate List arrays?Noob - 如何在 Flutter 中操作列表数组
【发布时间】:2022-11-25 03:47:39
【问题描述】:

我是 Flutter 的新手,如果有任何帮助,我将不胜感激。我使用 List.generate 创建了一个二维列表,然后我想遍历列表并更改每行中的第一个值。我已经在 Dartpad 中完成了这个并且它按预期工作。我无法让它在我的 Flutter 应用程序中运行。

下面是在 Dartpad 中运行的代码:

清单 myList = List.generate(12, (i) => List<String>.filled(12, '-'), growable: false);

for (int i = 0; i < myList.length; i++) {
  int s = i + 1;
  myList[i][0] = "List $s";
}

但是当我在 Flutter 中使用它时,如下所示:

class _MyPage extends State<MyPage> {
  
  List myList =
      List.generate(12, (i) => List<String>.filled(12, '-'), growable: false);
  
    for (int i = 0; i < myList.length; i++) {
      int s = i + 1;
      myList[i][0] = "List $s";
    }

**for ** 循环上的 Flutter 错误说明:

期待班级成员。
尝试将此代码放在类成员中。

删除 for 循环保留初始生成的列表,myList 填充为“-”,但我想通过使用 for 循环将每行中的第一项更改为“List x”。

对于我的生活,我无法解决这个问题。请帮忙。

【问题讨论】:

  • 这是声明类_MyPage 成员的部分。您需要将代码放在方法中,而不是类声明中。 void myFunction() { for... }
  • 你能包括完整的示例小部件吗

标签: flutter dart arraylist


【解决方案1】:

您可以在 class 中仅声明属于它的成员,如变量、方法、吸气剂......

直接添加for循环是错误的,不能被接受,但是,另一方面,您可以声明一个执行for循环代码的function,如下所示:

class _MyPage extends State<MyPage> {

List myList =
  List.generate(12, (i) => List<String>.filled(12, '-'), growable: false);

executeLoop() {
 for (int i = 0; i < myList.length; i++) {
  int s = i + 1;
  myList[i][0] = "List $s";
}
}

现在我们有一个类成员是executeLoop,现在您可以调用该函数来执行它。

StateFulWidget 有一个名为 initState() 的生命周期方法,当将小部件添加到树小部件时会自动调用该方法,因此您可以这样做:

  class _MyPage extends State<MyPage> {
List myList =List.generate(12, (i) => List<String>.filled(12, '-'), growable: false);
  


executeLoop() {
 for (int i = 0; i < myList.length; i++) {
  int s = i + 1;
  myList[i][0] = "List $s";
}

@override
 initState() {
 super.initState();
 executeLoop();
}
}

现在 executeLoop 将被执行,这意味着您的 for 循环将按您的预期立即执行。

希望这对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 2021-11-02
    相关资源
    最近更新 更多