【问题标题】:for loop get only last index not correct index flutterfor循环只得到最后一个索引不正确的索引颤振
【发布时间】:2022-11-22 02:56:35
【问题描述】:

我有一个列表,这个列表格式是按月数据我将按月数据放在列表中但只显示最后一个索引数据而不是正确的数据,如果我在内部打印数据,如果条件打印完美但内部小部件未正确显示。我正在添加一些代码:

声明:

int monthIndex, 
List transactionLists =[];

我的方法:

myMethod(){
    for (var i = 1; i < transactionLists.length; i++) {
      if (monthName[monthIndex] == "July") {
        data=transactionLists[i].july.toString();
         print(data);
      } else if (monthName[monthIndex] == "August") {
        data = transactionLists[i].august.toString();
      } else if (monthName[monthIndex] == "September") {
        data = transactionLists[i].september.toString();
      } else if (monthName[monthIndex] == "October") {
        data = transactionLists[i].october.toString();
      } //.... up to all 12 months
     }
     return ListView.builder(
      padding: EdgeInsets.zero,
      shrinkWrap: true,
      physics: const NeverScrollableScrollPhysics(),
      itemCount: transactionLists.length,
      itemBuilder: (context, childIndex) {
         return Text(
            data,
           );
      }
}

我有什么尝试data[childIndex]

输出 - 1245,1245,1245 为所有索引获得相同的值我想要正确的值,如 5445,8545,1245 它来自列表

【问题讨论】:

  • 数据是一个列表?
  • 不,如果条件打印正确但未正确显示在小部件中,则当我在内部打印数据时需要变量
  • 您在不断更新数据的 for 循环中使用数据,这会导致您的问题。

标签: flutter for-loop


【解决方案1】:

首先,您需要将数据定义为这样的列表:

List data = [];

然后像这样使用它:

myMethod(){
    for (var i = 0; i < transactionLists.length; i++) {
      if (monthName[monthIndex] == "July") {
        data.add(transactionLists[i].july.toString());//<--- change this
         print(data);
      } else if (monthName[monthIndex] == "August") {
        data.add(transactionLists[i].august.toString());//<--- change this
      } else if (monthName[monthIndex] == "September") {
        data.add(transactionLists[i].september.toString());//<--- change this
      } else if (monthName[monthIndex] == "October") {
        data.add(transactionLists[i].october.toString());//<--- change this
      } //.... up to all 12 months
     }
     return ListView.builder(
      padding: EdgeInsets.zero,
      shrinkWrap: true,
      physics: const NeverScrollableScrollPhysics(),
      itemCount: data.length,//<--- change this
      itemBuilder: (context, childIndex) {
         return Text(
            data[childIndex],//<--- change this
           );
      }
}

【讨论】:

  • 我已经尝试将数据作为 List 但无法正常工作我正在尝试使用您的解决方案
  • 也许你应该在 for 循环 @RavindraS.Patil 中设置 i = 0 而不是 1
  • 是的,还要注意Raiyan说的话。我用那个更新了我的答案。 @RavindraS.Patil
猜你喜欢
  • 2021-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-22
  • 2013-04-17
  • 2018-12-13
  • 1970-01-01
  • 2016-07-17
相关资源
最近更新 更多