[英]Flutter Firestore StreamBuilder getting null value initially
[英]Getting null value instead of input value in flutter
當我保存一個值時,我收到一個空值,因為在我的代碼中我有三個字段
String? _itemName ="";
String? _dateCreated ="";
int? _id;
在運行我的項目后,我通過調用此方法插入一個項目:
Future<int> saveItem(NoDoItem item) async
{
var dbClient = await database;
int res = await dbClient.insert(tableName, item.toMap());
debugPrint(res.toString());
return res;
}
使用saveItem()
函數:
void _hndleSubmitted(String text) async
{
_textEditingController.clear();
NoDoItem noDoItem = NoDoItem(text, DateTime.now().toIso8601String());
int savedItemId = await db.saveItem(noDoItem);
debugPrint("Item saved ID: $savedItemId");
}
在此之后,當我檢索所有itemNames
,我得到的是空值而不是用戶輸入的值
定義getItems()
函數:
Future<List> getItems() async
{
var dbClient = await database;
var result = await dbClient.rawQuery("SELECT * FROM $tableName ORDER BY $columnItemName ASC");
return result.toList();
}
使用getItems()
函數:
_readNotoDoItems() async
{
List items = await db.getItems();
items.forEach((item) {
NoDoItem noDoItem = NoDoItem.map(item);
print("Db items: ${noDoItem.itemName}");
});
}
請告訴我得到空值而不是輸入值的原因是什么以及如何解決這個問題?
我認為問題出在這里
void _hndleSubmitted(String text) async {
_textEditingController.clear(); // <--------- HERE
NoDoItem noDoItem = NoDoItem(text, DateTime.now().toIso8601String());
int savedItemId = await db.saveItem(noDoItem);
debugPrint("Item saved ID: $savedItemId");
}
您使用_textEditingController.clear();
清除該值_textEditingController.clear();
在使用它之前。 將項目添加到數據庫后移動它
void _hndleSubmitted(String text) async {
NoDoItem noDoItem = NoDoItem(text, DateTime.now().toIso8601String());
int savedItemId = await db.saveItem(noDoItem);
textEditingController.clear();
debugPrint("Item saved ID: $savedItemId");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.