как инициализировать класс при сборе данных из базы данных в провайдере флаттера пожарного депо - PullRequest
0 голосов
/ 24 февраля 2020

Я следую одному руководству по электронной коммерции Flutter, используя Firestore и провайдера флаттера.

Я хотел получить все данные из базы данных Firestore Db, но проблема в том, что я не знаю, как инициализировать класс, который я собираюсь использовать для получения данных из базы данных Firebare. Пожалуйста, помогите. И если у вас есть лучшие подходы, вы можете поделиться своими знаниями со мной. это код ниже:

 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;
 }); 

}

}

1 Ответ

0 голосов
/ 02 марта 2020

Я думаю, что может быть много решений в зависимости от того, как вы хотите использовать класс AppProvider.

Может быть, вы можете сделать это следующим образом:

AppProvider(){
    this._getFeaturedProducts();
  }

Чем в вашем основном классе инициализировать объект как:

AppProvider _appProvider = new AppProvider();

Во время создания объекта данные должны быть взяты из пожарного магазина, и все слушатели будут уведомлены.

Надеюсь, это поможет!

...