颤振列表值未更新

Posted

技术标签:

【中文标题】颤振列表值未更新【英文标题】:Flutter list values not updating 【发布时间】:2020-04-19 02:53:01 【问题描述】:

我的列表无法在颤动中更新时遇到问题,我有一个 for 循环来填充机器的代码,并且在我的列表 _machines 中接收来自网络服务的数据,它有一个代码在其中,但是当我尝试将该代码分配给我的其他列表时 ma​​chineDetails 它没有传递值,

代码如下:

 Future<void> _registerTime(int index) async 
try 
  setState(() 
    _loading = true;
  );

  String res = await gruposRepo.timeRegisterWorks(widget.worker.toString(),
      widget.work, widget.product, widget.task, _machines[index].vCodigo);

  print(res);

  print("MachineDetails Lenght RegisterTime: $machineDetails.length");

  for (int i = 0; i < _machines.length; i++) 
    print('Machines $i code: $_machines[i].vCodigo');
    machineDetails[i]?.code = _machines[i].vCodigo;
    print('MachineDetails $i code: $machineDetails[i]?.code');

    if (res == '1') 
      machineDetails[i]?.working = true;
     else if (res == '2') 
      machineDetails[i]?.working = false;
    
  

  print(machineDetails[index]?.working);

  showDialog(
      context: context,
      builder: (context) 
        return AlertDialog(
          title: Text(Translations.of(context).trans('saved')),
          actions: <Widget>[
            FlatButton(
              child: Text('OK'),
              onPressed: () => Navigator.of(context).pop(),
            )
          ],
        );
      );
 catch (e) 
  this._errorMsg = e.toString();


setState(() 
  _loading = false;
);

这是输出:

I/flutter (14487): Machines 0 code: 4

I/flutter (14487): MachineDetails 0 code: null

I/flutter (14487): Machines 1 code: 3

I/flutter (14487): MachineDetails 1 code: null

I/flutter (14487): Machines 2 code: 22

I/flutter (14487): MachineDetails 2 code: null

I/flutter (14487): Machines 3 code: 9

I/flutter (14487): MachineDetails 3 code: null

I/flutter (14487): Machines 4 code: 25

I/flutter (14487): MachineDetails 4 code: null

I/flutter (14487): Machines 5 code: 26

I/flutter (14487): MachineDetails 5 code: null

但我的列表 ma​​chineDetails 列表确实会更新为 _machines 列表的长度:

I/flutter (14487): MachineDetails Lenght RegisterTime: 6

感谢您的时间和关注

【问题讨论】:

控制台可能有一些错误?否则显示 MachineDetails 类会有所帮助.. 控制台没有任何错误,我的 MachineDetails 类如下: class MachineDetails String code;布尔工作; 【参考方案1】:

如果没有错误,我认为问题在于使用machineDetails[i]?.code,因此请检查以下更新的代码,它可能会有所帮助。

 ......

  for (int i = 0; i < _machines.length; i++) 
    print('Machines $i code: $_machines[i].vCodigo');
    machineDetails[i]=MachineDetails(); //line added
    machineDetails[i].code = _machines[i].vCodigo; //line updated
    print('MachineDetails $i code: $machineDetails[i]?.code');

    ......

【讨论】:

【参考方案2】:
machineDetails[i].code = _machines[i].vCodigo;

【讨论】:

以上是关于颤振列表值未更新的主要内容,如果未能解决你的问题,请参考以下文章

数据更新后颤振列表视图不更新

列表项的颤振状态更新

颤振:如何在不按按钮的情况下进行列表视图更新?

如何在颤振中实现未来的下拉列表并根据用户选择更新值

颤振状态不会更新

HiddenField 的值未更新