簡體   English   中英

Firestore 數據到 Model class

[英]Firestore data into a Model class

我有以下 Firestore 數據庫;

在此處輸入圖像描述

在我的第一頁中,我查詢所有“其他”集合文檔並列出每個文檔的“名稱”和“姓氏”字段,並使用一個按鈕將我重定向到該人的頁面。

class FirstPage extends StatelessWidget {
  const FirstPage({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return FutureBuilder<QuerySnapshot>(
      future: FirebaseFirestore.instance
          .collection('Other')
          .get(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done &&
            snapshot.hasData) {
          var documents = snapshot.data!.docs;

          ListView.builder(
            itemCount: documents.length,
            itemBuilder: (context, index) {
              return TextButton(
                child: Text(documents[index]['name']),
                onPressed: () => Get.to(() => const Person()),
              );
            },
          );
        } 
      },
    );
  }
}

我知道我可以像這樣簡單地將“姓名”和“姓氏”的最終參數添加到Person class 中;

class Person extends StatelessWidget {
  final String name;
  final String surname;

  const Person({Key? key, required this.name, required this.surname}) : super(key: key);

但是在Person class 中,我必須將該信息傳遞給后續頁面,並且通過構造函數背靠背傳遞參數似乎不是一個好習慣。

From my knowledge with other programming languages I could simply generate a Model class with Setters and Getters and once a button of a person is clicked I'd set all of his information in this model class and get them in the following pages and so on.

在 Flutter/Dart 中為此目的生成 model class 是一個好習慣嗎? 如果是這樣,我該如何生成這個 model class?

由於缺乏答案,不得不使用此臨時解決方案並將此 model class 傳遞給需要信息的每個小部件。 我仍在尋找這方面的最佳實踐,但這也能奏效。

import 'package:cloud_firestore/cloud_firestore.dart';

class PersonModel {
  String name, surname;

  PersonModel({
    required this.name,
    required this.surname,
  });

  factory PersonModel.fromMap(Map<dynamic, dynamic> map) {
    return PersonModel(
      name: map['name'],
      surname: map['surname'],
    );
  }

  Map<dynamic, dynamic> toMap() {
    return {
      'name': name,
      'surname': surname,
    };
  }
}

暫無
暫無

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

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