首页 > 解决方案 > 使用对象列表,如何访问对象属性并打印它们?

问题描述

简短的问题。

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

所以,这就是我想要实现的目标:

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

我的代码:

对象类

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() 语句,并且这样做根本不会打印任何内容。

有什么建议么?

此致!

标签: javaandroidflutterdart

解决方案


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]
}

我希望这有帮助。


推荐阅读