我在模型类中遇到问题,无法将数据从实时firebase数据库提取到列表中,但接收到空值。通过以下图片进一步澄清:
这是要获取数据的图像。
这是一个模型类:
class Seller {
var key;
String address,
businessType,
description,
fcm,
joinTimeStamp,
name,
onlineStatus,
picUrl,
uuid;
int blockByAdmin, completeOrders, rating;
double lat;
double lng;
Seller(
this.address,
this.blockByAdmin,
this.businessType,
this.description,
this.completeOrders,
this.fcm,
this.joinTimeStamp,
this.lat,
this.lng,
this.name,
this.onlineStatus,
this.picUrl,
this.rating,
this.uuid);
Seller.fromSnapshot(DataSnapshot snapshot)
: key = snapshot.value,
address = snapshot.value["address"],
blockByAdmin = snapshot.value["blockByAdmin"],
businessType = snapshot.value["businessType"],
description = snapshot.value["description"],
completeOrders = snapshot.value["completeOrders"],
fcm = snapshot.value["fcm"],
joinTimeStamp = snapshot.value["joinTimeStamp"],
lat = snapshot.value["lat"],
lng = snapshot.value["lng"],
name = snapshot.value["name"],
onlineStatus = snapshot.value["onlineStatus"],
picUrl = snapshot.value["picUrl"],
rating = snapshot.value["rating"],
uuid = snapshot.value["uuid"];
toJson() {
return {
'address': address,
'blockByAdmin': blockByAdmin,
'businessType': businessType,
'description': description,
'completeOrders': completeOrders,
'fcm': fcm,
'joinTimeStamp': joinTimeStamp,
'lat': lat,
'lng': lng,
'name': name,
'onlineStatus': onlineStatus,
'picUrl': picUrl,
'rating': rating,
'uuid': uuid,
};
}
}
这是一个我们正在使用model类并在列表长度处获取null的类:
class Body extends StatefulWidget {
@override
_BodyState createState() => _BodyState();
}
class _BodyState extends State<Body> {
final urlImage =
'https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSPlqk-tNmFTjT7q_edAjaYLU5qf2cFUM9vfrweUbqnS_58LqF7AMp67KVdslIubuzy9b4&usqp=CAU';
final _database = FirebaseDatabase.instance.reference().child('kjobhee');
List<Seller> _sellerList;
StreamSubscription<Event> _onTodoAddedSubscription;
Query _query;
@override
void initState() {
super.initState();
_activateListeners();
}
void _activateListeners() {
_query = _database.child('seller');
_onTodoAddedSubscription = _query.onValue.listen(onEntryAdded);
}
onEntryAdded(Event event) {
setState(() {
_sellerList.add(Seller.fromSnapshot(event.snapshot));
print(_sellerList);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
backgroundColor: kPrimaryColor,
),
drawer: NavigationDrawer(),
body: RefreshIndicator(
onRefresh: () => _buildBuyerProfile(),
child: _sellerList.length > 0
? ListView.builder(
shrinkWrap: true,
itemCount: _sellerList.length,
itemBuilder: (BuildContext context, int index) {
String key = _sellerList[index].key;
String address = _sellerList[index].address;
int blockByAdmin = _sellerList[index].blockByAdmin;
String businessType = _sellerList[index].businessType;
String description = _sellerList[index].description;
int completeOrders = _sellerList[index].completeOrders;
String fcm = _sellerList[index].fcm;
String joinTimeStamp = _sellerList[index].joinTimeStamp;
double lat = _sellerList[index].lat;
double lng = _sellerList[index].lng;
String name = _sellerList[index].name;
String onlineStatus = _sellerList[index].onlineStatus;
String picUrl = _sellerList[index].picUrl;
int rating = _sellerList[index].rating;
String uuid = _sellerList[index].uuid;
print(key +
'/' +
address +
'/' +
blockByAdmin.toString() +
'/' +
businessType +
'/' +
description +
'/' +
completeOrders.toString() +
'/' +
fcm +
'/' +
joinTimeStamp +
'/' +
lat.toString() +
'/' +
lng.toString() +
'/' +
name +
'/' +
onlineStatus +
'/' +
picUrl +
'/' +
rating.toString() +
'/' +
uuid);
return _buildBuyerProfile();
})
: Center(
child: CircularProgressIndicator(),
),
),
);
}
我将非常感谢任何用户帮助。
你需要考虑以下几点:
>
您需要确保从Firebase获取数据,尝试在日志中打印数据,并检查是否收到数据。
你需要管理你的用户界面,考虑到当屏幕首次加载时,你的数据将不在那里,这意味着你的变量_sellerList将为空。所以你需要检查你的代码中缺少的部分。
如果您没有从firebase获取数据,但我认为配置已正确完成,那么您可以使用与我使用的代码相同的代码获取数据:
Future<void> fetchProducts() async {
await FirebaseFirestore.instance
.collection(FirebaseCollectionConst.productsCollection)
.get()
.then((QuerySnapshot productsData) {
_products = [];
productsData.docs.forEach((element) {
_products.insert(0, Product(
id: element.get('productId'),
title: element.get('productTitle'),
description: element.get('productDescription'),
price: double.parse(element.get('price')),
imageUrl: element.get('productImage'),
brand: element.get('productBrand'),
productCategoryName: element.get('productCategory'),
quantity: int.parse(element.get('productQuality')),
isFavourite: false,
isPopular: true));
});
});
}
在这里,我获取一个产品集合,并收集到一个类成员中,该类成员扩展了ChangeNotifier类,并在提供者的帮助下显示该数据。
假设我有一个字符串: 现在我需要从两个字符串中解析23。如何从字符串值中提取该数字或任何数字?
我正在使用firebase云功能向特定用户发送通知。这是我从函数发送的有效负载。 我正在使用firebase_messaging(flutter package:https://pub.dartlang.org/packages/firebase_messaging)接收通知,并且我已经编写了onMessage、onLaunch和onResume方法的代码。 因此,当我使用Admin SDK发送消
参数类型“List”不能分配给参数类型“Widget?函数(BuildContext, int)”。 缺少选择器,如“”。标识符“”或“[0]”。 参数类型“库比蒂诺列表”不能分配给参数类型“动态函数(动态)”。 未定义的名称“e”。 未定义的类's'。 应找到“;”。 我正在克服错误。如何解决这个问题 选择\u county。飞奔 国家代码。json
这是我得到的错误,我不知道如何解决它 无法将参数类型“List”分配给参数类型“List”。 提前感谢帮助解决 解决方案:盲我找到解决方案:类型列表
我读过https://flutter.dev/docs/development/ui/assets-and-images#asset-包依赖项中的图像和从资产中读取的文本文件,并应用了所有这些,但我的代码仍然无法工作。。。。 我为此打开了一个新项目,在主文件夹中创建了资产和文件: 然后,不信任Android Studio,我检查了vi,在pubspec.yaml一切都好: 该文件以以下内容结尾:
Xcode的输出:在文件中包含从 /Users/dani/development/flutter/.pub-cache/hosted/pub.dartlang.org/url_launcher-6.0.3/ios/Classes/FLTURLLauncherPlugin.m: 7: /Users/dani/development/flutter/.pub-cache/hosted/pub.dart