Flutter/Dart中绑定对象的值发生变化时如何更改类的参数值?

问题描述 投票:0回答:1

我是编程新手,不知道自己在做什么,但试图理解。

late CabsOfAcacia Sinan = CabsOfAcacia('Sinan', 'assets/taxi.png', cabsLocations.elementAt(0), cabsDistanceFromUser.elementAt(0));

  late CabsOfAcacia Seyit = CabsOfAcacia('Seyit', 'assets/taxi.png', cabsLocations.elementAt(1), cabsDistanceFromUser.elementAt(1));

  late CabsOfAcacia OsmanAga = CabsOfAcacia('Osman Aga', 'assets/taxi.png', cabsLocations.elementAt(2), cabsDistanceFromUser.elementAt(2));

  late CabsOfAcacia AliKemal = CabsOfAcacia('Ali Kemal', 'assets/taxi.png', cabsLocations.elementAt(3), cabsDistanceFromUser.elementAt(3));

  late CabsOfAcacia ArifKeser = CabsOfAcacia('Arif Keser', 'assets/taxi.png', cabsLocations.elementAt(4), cabsDistanceFromUser.elementAt(4));


  late List<double?>cabsDistanceFromUser = [null,null,null,null,null];

///this is the class
class CabsOfAcacia{
  late final String nameOfCab;
  late final String assetPathOfCab;
  late final LatLng locationOfCab;
  late final double? distanceFromUserOfCab;

  CabsOfAcacia(
    this.nameOfCab, 
    this.assetPathOfCab, 
    this.locationOfCab, 
    this.distanceFromUserOfCab);
}

我想做的是; CabsOfAcacia 是我创建的一个类,它们有一个名为 distanceFromUserOfCab 的参数。该双精度值来自名为 cabsDistanceFromUser 的列表的第 i 个元素。在我的应用程序中执行一些步骤后,该列表中的值会更新。

但是 CabsOfAcacia 对象的 cabsDistanceFromUser 的值坚持其第一个值,即 null。我可以成功更新列表 - cabsDistanceFromUser 的值来自何处 - 但该值仍然是开头的值,再次为空。

我不知道我是否把问题表达清楚了,这是我第一次在网上问问题。我感觉自己像个穴居人。

谢谢你。

flutter dart
1个回答
0
投票

由于您的属性是

late final
,因此您不能期望它们的值以后会发生变化。如果你这样定义:

class CabsOfAcacia{
  final String nameOfCab;
  final String assetPathOfCab;
  final LatLng locationOfCab;
  double distanceFromUserOfCab;

  CabsOfAcacia(
    this.nameOfCab, 
    this.assetPathOfCab, 
    this.locationOfCab,
    {
       this.distanceFromUserOfCab = 0,
    }
  );
}

您可以调用此对象的实例(例如,示例中的

Sinan
var),并使用以下命令更改其
distanceFromUserOfCab
的值:

Sinan.distanceFromUserOfCab = cabsDistanceFromUser.elementAt(0);

但是那里不涉及绑定,因此更改

cabsDistanceFromUser
列表中的值不会自动更新各个
CabsOfAcacia
实例中的值。

© www.soinside.com 2019 - 2024. All rights reserved.