我正在关注使用Firestore和Flutter提供程序的Flutter电子商务教程。
我想从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();
}
}
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;
});
}
}
答案 0 :(得分:0)
我认为可能会有很多解决方案,具体取决于您要如何使用AppProvider类。
也许您可以这样做:
AppProvider(){
this._getFeaturedProducts();
}
在您的主类中,初始化对象的方式如下:
AppProvider _appProvider = new AppProvider();
在对象创建期间,应从Firestore中获取数据,并将通知所有侦听器。
我希望它将对您有帮助!