#firebase #flutter #google-cloud-firestore #firebase-authentication #flutter-dependencies
#firebase #флаттер #google-облако-firestore #firebase-аутентификация #flutter-зависимости
Вопрос:
по сути, я создаю приложение для электронной коммерции, и на домашней странице приложение будет считывать данные элементов из firebase, и эта ошибка продолжает появляться, из-за чего не удается найти правильного поставщика над виджетом домашней страницы.
вот мой код:
main.dart:
class Bradat extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Brandat',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
platform: TargetPlatform.iOS,
),
home: StreamProvider(
create: (BuildContext context) => DatabaseService().getItemesList(),
catchError: (_, __) => null,
child: NavigationHomeScreen()
),
);
}
}
И это главный экран навигации:
class NavigationHomeScreen extends StatefulWidget {
@override
_NavigationHomeScreenState createState() => _NavigationHomeScreenState();
}
class _NavigationHomeScreenState extends State<NavigationHomeScreen> {
Widget screenView;
DrawerIndex drawerIndex;
@override
void initState() {
drawerIndex = DrawerIndex.HOME;
screenView = CustomerHomePage();
super.initState();
}
@override
Widget build(BuildContext context) {
final items = Provider.of<List<Abaya>>(context);
print(items);
return Container(
child: SafeArea(
top: false,
bottom: false,
child: Scaffold(
body: DrawerUserController(
screenIndex: drawerIndex,
drawerWidth: MediaQuery.of(context).size.width * 0.75,
onDrawerCall: (DrawerIndex drawerIndexdata) {
changeIndex(drawerIndexdata);
//callback from drawer for replace screen as user need with passing DrawerIndex(Enum index)
},
screenView: screenView,
//we replace screen view as we need on navigate starting screens like MyHomePage, HelpScreen, FeedbackScreen, etc...
),
),
),
);
}
это мой класс базы данных:
class DatabaseService{
final CollectionReference userCollection = Firestore.instance.collection("User");
final CollectionReference itemCollection = Firestore.instance.collection("Item");
final CollectionReference storeCollection = Firestore.instance.collection("Store");
Future UpdateUserData(User user) async {
return await userCollection.document(user.uid).setData({
'firstName' :user.firstName,
'lastName' :user.lastName,
'phoneNumber' :user.phoneNumber,
});
}
Stream<QuerySnapshot> get users{
return userCollection.snapshots();
}
Future UpdateItemData(Abaya item) async {
return await itemCollection.document(item.itemId).setData({
'title' :item.title,
'price' :item.price,
'oldPrice' :item.oldPrice,
'images' :item.images,
'colors': item.colors,
'sizes': item.sizes,
'storeId': item.storeId,
'quantity': item.quantity,
});
}
Stream<List<Abaya>> getItemesList(){
return itemCollection.snapshots()
.map((snapShot) => snapShot.documents
.map((document) => Abaya.fromJson(document.data))
.toList());
}
Future UpdateStoreData(Store store) async {
return await storeCollection.document(store.idStore).setData({
'brand' :store.brand,
'rank' :store.rank,
'logo' :store.logo,
});
}
Stream<List<Store>> getStoreList(){
return storeCollection.snapshots()
.map((snapShot) => snapShot.documents
.map((document) => Store.fromJson(document.data))
.toList());
}
}
это мой класс модели элемента:
class Abaya{
String itemId;
String title;
double price;
double oldPrice;
List<String> images;
List<String> colors;
List<String> sizes;
int quantity;
String storeId;
Abaya({this.itemId,this.title, this.price, this.oldPrice, this.images, this.colors,
this.sizes, this.quantity, this.storeId});
Abaya.fromJson(Map<String, dynamic> parsedJSON)
: title = parsedJSON['title'],
price = parsedJSON['price'],
oldPrice = parsedJSON['oldPrice'],
images = parsedJSON['images'],
colors = parsedJSON['colors'],
sizes = parsedJSON['sizes'],
storeId = parsedJSON['storeId'],
quantity = parsedJSON['quantity'];
}
Комментарии:
1. Вы объявили свой
provider
над виджетом, используя его?2. Что вы имеете в виду? где?