我有一個問題。 我正試圖創建一個物件并填充它。 之后,我將回傳該物件并獲得資料。
物件的創建是有效的。 插入也是如此。 但如果我傳遞(回傳資料),我只得到了 "物件實體 "的輸出。
我創建物件并填充它的代碼:
我創建物件并填充它的代碼
class GetProductData {
//get user_data from user who has create the product.
static Future<List<Object> > queryData(_userID) async{
//collection group all collection with 'product_details'
QuerySnapshot<Map<String, dynamic> > product_data = await FirebaseFirestore
.實體
.collectionGroup('product_details')
.where('user_id', isEqualTo: _userID)
.get()。
//map all products details into a list.
var product_data_lst = product_data.docs.map((e) => e.data()).toList()。
//物件串列。
List<ProductDataObject> lst_ProductDataObject = []。
//運行每一個串列。
product_data_lst.forEach((list) {
//add values to obejct[/span].
lst_ProductDataObject.add(
產品資料物件(
eco_shipping: list. entries.elementAt(0).value,
business_status: list. entries.elementAt(1).value,
fairtrade: list. entries.elementAt(2).value,
sub_category: list. entries.elementAt(3).value。
status_color: list. entries.elementAt(4).value。
description: list. entries.elementAt(5).value,
adress: list. entries.elementAt(6).value。
stars: list. entries.elementAt(7).value。
delivery_time: list. entries.elementAt(8).value,
title: list. entries.elementAt(9).value。
sell_status: list. entries.elementAt(10).value。
eco: list. entries.elementAt(11).value。
hashTag: list. entries.elementAt(12).value,
user_id: list. entries.elementAt(13).value,
price: list. entries.elementAt(14).value,
main_category: list. entries.elementAt(14).value。
product_id: list. entries.elementAt(15).value。
create_date: list. entries.elementAt(16).value)。
);
});
//print('${lst_ProductDataObject[0].user_id.toString()}');
return lst_ProductDataObject;
}
}
class ProductDataObject{
String adress。
String business_status;
String create_date;
int delivery_time。
String description;
bool eco;
bool eco_shipping;
bool fairtrade;
List<dynamic> hashTag;
String product_id。
String main_category;
String 價格。
String sell_status;
int stars;
int status_color;
String sub_category;
String title。
String user_id。
產品資料物件({
required this.adress,
required this.business_status,
required this.create_date,
required this.delivery_time,
required this.description,
required this.eco,
required this.eco_shipping,
required this.fairtrade,
required this.hashTag,
required this.product_id。
required this.main_category。
required this.price,
required this.sell_status,
required this.star,
required this.status_color,
required this.sub_category,
required this.title。
required this.user_id。
});
}
這是我的代碼,我試圖獲取物件資料:
這是我的代碼。
//load product lst
容器(
孩子。FutureBuilder<List<Object>> (
未來。GetProductData.queryData(_userID)。
builder: (BuildContext context,
AsyncSnapshot<List<Object> > snapshot) {
if (snapshot.hasError) {
return Container(
孩子。列(
children: [],
),
);
} else if (snapshot.hasData) {
return customText(snapshot.data.toString(), Colors.black,
18, FontWeight.normal, null)。)
//customText(snapshot.error.toString(), Colors.black,)
//18, FontWeight.normal, null);
} else {
return customText('No data found...'/span>, Colors.black, 18,
FontWeight.normal, null)。)
}
},
),
),
輸出結果看起來像這樣:
有沒有人知道我怎樣才能回傳物件并在回傳后獲得資料? 謝謝(:
)uj5u.com熱心網友回復:
你的snapshot似乎已經是一個List<ProductDataObject>。
試試這個:
return customText(snapshot.toString(), ... //洗掉".data"。
uj5u.com熱心網友回復:
不要緊。 我得到了一個解決方案(:
)test(data) {
List<ProductDataObject> object = data;
return(object.elementAt(0).user_id.toString())。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/312746.html
標籤:
上一篇:設定2行文本框
