从firestore颤振提供程序中的db收集数据时如何初始化一个类

Posted

技术标签:

【中文标题】从firestore颤振提供程序中的db收集数据时如何初始化一个类【英文标题】:how to initialize a class when collecting data from db in firestore flutter provider 【发布时间】:2020-06-08 01:25:14 【问题描述】:

我正在学习使用 Firestore 和 Flutter 提供程序的 Flutter Ecommerce 教程。

我想从 Firestore Db 中检索所有数据,但问题是我不知道如何初始化要用于从 Db firestore 中检索数据的类。请帮忙。如果您有更好的方法,您可以与我分享您的知识。这是下面的代码:

 import 'package:flutter/material.dart';
import 'package:shopping/db/product.dart';
import 'package:shopping/models/product.dart';

 class AppProvider with ChangeNotifier 
   List<Product>_fearturedProducts=[];
   ProductService _productService=new ProductService();

   AppProvider()
     //please how to initialize class AppProvider here 
 
   //getter
   List<Product> get featuredProducts=>_fearturedProducts;

   //method
   void _getFeaturedProducts()async

    _fearturedProducts=await _productService.getFeaturedProducts();
    notifyListeners();
   
 

ProductService 类的代码:

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:shopping/models/product.dart';

class ProductService
    Firestore _firestore=Firestore.instance;
  String collection="Products";

  Future<List<Product>>getFeaturedProducts()

 _firestore.collection(collection).where('featured', isEqualTo:true).getDocuments()
 .then((snap)

  List<Product>featuredProducts=[];
   snap.documents.map((snapshot)=> featuredProducts.add(Product.fromSnapshot(snapshot)));
   return featuredProducts;
 ); 




【问题讨论】:

请问你想用这个构造函数实现什么?为什么不能是无参构造函数? 我想在 main.dart 中使用 changenotifier 来调用它 类似这样的“ChangeNotifierProvider.value(value: UserProvider.initialize()),”如果我有另一个 changenotifier,我也会使用多提供者 你想在这个 AppProvider 类中调用它吗? 在 main.dart 但我不知道我将为构造函数提供的参数 【参考方案1】:

我认为可能有很多解决方案,具体取决于您希望如何使用 AppProvider 类。

也许你可以这样做:

AppProvider()
    this._getFeaturedProducts();
  

比在你的主类中初始化对象:

AppProvider _appProvider = new AppProvider();

在对象创建期间,应从 firestore 获取数据,并通知所有侦听器。

希望对你有帮助!

【讨论】:

以上是关于从firestore颤振提供程序中的db收集数据时如何初始化一个类的主要内容,如果未能解决你的问题,请参考以下文章

颤振:卡住从 Firestore 收集 [关闭]

颤振 |如何将数据添加到 Firestore 中的现有文档

如何在颤振中以简单的方式从实时数据库中获取数据?

了解 Firestore 收集中的数据何时结束

从Firebase本地实时存储Room DB上的数据

如何使用颤振和飞镖从 Cloud Firestore 检索特定数据?