簡體   English   中英

如何從 model class 訪問 Flutter 特定列表項?

[英]How can access Flutter specific list item from model class?

我有一個名為Place的 model class 並有一個基於 model ZA2F2ED4F8EBC2CBB4C21A29D 的地方列表我使用Navigator.push並從那里傳遞 int 數據。 現在,我如何訪問 id 與給定 id 號相同的特定地點列表?

這是我的 model class 和列表:

class Place {
  int id;
  String cardImage;
  String placeName;
  String location;
  String country;
  String details;

  Place({
    required this.id,
    required this.cardImage,
    required this.placeName,
    required this.location,
    required this.country,
    required this.details,
  });
}

final List<Place> place = [
  Place(
      id: 1,
      cardImage:
          "https://image1_url.jpg",
      placeName: "Essence Of Japan",
      location: "Tokyo",
      country: "Japan",
      details: "long text"),
Place(
      id: 2,
      cardImage:
          "https://image2_url.jpg",
      placeName: "Essence Of Japan",
      location: "Tokyo",
      country: "Japan",
      details: "long text"),
];

這是我的導航器,其中 pass id 為 1:

Navigator.push(
          context,
          MaterialPageRoute(
            builder: (context) => DetailsPage(1),
          ),
        );

現在我想訪問下面的項目,其中 id:1

      Place(
          id: 1,
          cardImage:
              "https://image1_url.jpg",
          placeName: "Essence Of Japan",
          location: "Tokyo",
          country: "Japan",
          details: "long text"
         ),

假設places列表在您導航的屏幕中,並且id是您傳遞給屏幕的 id,您可以通過以下方式獲取具有該 id 的地點:

  try {
    var foundPlace = places.firstWhere((p) => p.id == widget.id);
  } catch (e) {
    print('place not found');
  }

需要在 try-catch 中,因為如果找不到該位置,則會引發StateError 或者,您可以添加一個orElse ,它將返回一個帶有null值的Place ,這需要更改Place class 並從參數中刪除required的值。 在這種情況下,您不需要 try-catch:

var foundPlace = place.firstWhere((p) => p.id == widget.id, orElse:()=>Place());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM