简短的问题。

我正在尝试学习如何使用对象来指定列表等并访问对象属性。我只是无法使其正常工作。

因此,这就是我要实现的目标:


创建列表objList;
将对象添加到列表
从列表中获取特定对象
在控制台中打印!


我的代码:

对象类别

class SearchObject {
  final String barName;
  final String latitudeDbRef;

  SearchObject({this.barName, this.latitudeDbRef});
}


列表声明和对象

List<SearchObject> searchObject = new List();
SearchObject sbo = new SearchObject();


将对象添加到列表

searchObject.add(SearchObject(barName: value, latitudeDbRef: "test"));


访问和打印特定对象

print(searchObject.getRange(index, index + 1).map((sbo) {
                    String bar = sbo.barName.toString();
                    String lat = sbo.latitudeDbRef.toString();
                    print("Barname: $bar");
                    print("latName: $lat");
                  }));


输出量

flutter: Barname: barname
flutter: latName: test
flutter: (null)   <- Get rid of this?


注意:
我已经尝试过删除searchObject.getRange()代码周围的print()语句,并且这样做根本不会打印任何内容。

有什么建议?

最好的祝福!

最佳答案

class SearchObject {
  final String barName;
  final String latitudeDbRef;

  const SearchObject({this.barName, this.latitudeDbRef});
}

void main() {
  final newSearchObject = new SearchObject(barName: "foo", latitudeDbRef: "bar");

  // How to populate a list:

  // Method 0: inline
  final searchObjects = <SearchObject>[newSearchObject];

  // Method 1: Using .add
  final searchObjects2 = <SearchObject>[];
  searchObjects2.add(newSearchObject);

  // Method 2: Using the + operator
  final searchObjects3 = searchObjects + [newSearchObject];

  // Method 3: Using the spread operator:
  final searchObjects4 = [...searchObjects, newSearchObject];

  // Accessing a specific object using the [] operator
  final specificObject = searchObjects4[0]; // Be careful, It will throw if there's no item for that index in the list.

  print("barName: ${specificObject.barName}"); // prints: barName: foo
  print("latitudeDbRef: ${specificObject.latitudeDbRef}"); // prints: latitudeDbRef: bar

  // Iterate over a list to print the details:
  searchObjects4.forEach((object) {
    print("barName: ${object.barName}"); // prints: barName: foo
    print("latitudeDbRef: ${object.latitudeDbRef}"); // prints: latitudeDbRef: bar
  });

  // Collect the details themselves inside an iterable:
  final detailsIterable = searchObjects4.map((object) {
    return "barName: ${object.barName}, latitudeDbRef: ${object.latitudeDbRef}";
  });

  final detailsList = detailsIterable.toList();

  print(detailsList); // prints: [barName: foo, latitudeDbRef: bar, barName: foo, latitudeDbRef: bar]
}


我希望这有帮助。

09-30 17:16
查看更多