[英]How to get state of selected option in dropdown and display in Firebase
我有一個用戶輸入和兩個選擇選項下拉列表。 我從狀態中檢索了displayName
(用戶輸入值)並將其顯示在 Firestore 數據庫中,但是,我無法從狀態中獲取選定的選項( selectedItemA
和selectedItemB
)並將它們顯示在數據庫中。
如何在數據庫中顯示這些值( selectedItemA
和selectedItemB
)?
狀態
class UserInfoState with ChangeNotifier {
String _displayName;
dynamic _selectedItemA;
dynamic _selectedItemB;
get displayName => _displayName;
get selectedItemA => _selectedItemA;
get selectedItemB => _selectedItemB;
set displayName(String value) {
_displayName = value;
notifyListeners();
}
set selectedItemA(dynamic value) {
_selectedItemA = value;
notifyListeners();
}
set selectedItemB(dynamic value) {
_selectedItemB = value;
notifyListeners();
}
}
Future<void> updateUserReportWithUserInfo(UserInfoState state) {
return Global.reportRef.upsert(
({
'displayName': state.displayName,
'selectedItemA': state.selectedItemA,
'selectedItemB': state.selectedItemB
}),
);
}
個人資料屏幕
@override
void initState() {
super.initState();
myFocusNode = FocusNode();
_dropdownMenuItemsA = buildDropDownMenuItemsA(_dropdownItemsA);
selectedItemA = _dropdownMenuItemsA[0].value;
_dropdownMenuItemsB = buildDropDownMenuItemsB(_dropdownItemsB);
selectedItemB = _dropdownMenuItemsB[0].value;
}
...
List<DropdownMenuItem<ContinentListItem>> _dropdownMenuItemsA;
ContinentListItem selectedItemA;
List<DropdownMenuItem<ContinentListItem>> buildDropDownMenuItemsA(
List listItems) {
List<DropdownMenuItem<ContinentListItem>> items = List();
for (ContinentListItem listItem in listItems) {
items.add(
DropdownMenuItem(
child: Text(listItem.name),
value: listItem,
),
);
}
return items;
...
floatingActionButton: FloatingActionButton(
backgroundColor: deepOrange,
onPressed: () {
myFocusNode.requestFocus();
updateUserReportWithUserInfo(state);
changeScreen(context, BottomNavBarController());
...
TextField(
focusNode: myFocusNode,
onChanged: (value) => state.displayName = value,
),
DropdownButtonHideUnderline(
child: DropdownButton(
value: selectedItemA,
items: _dropdownMenuItemsA,
onChanged: (value) {
setState(() {
selectedItemA = value;
print(selectedItemA.name);
});
}),
),
...
DropdownButtonHideUnderline(
child: DropdownButton(
value: selectedItemB,
items: _dropdownMenuItemsB,
onChanged: (value) {
setState(() {
selectedItemB = value;
print(selectedItemB.name);
});
class ContinentListItem {
int value;
String name;
ContinentListItem({this.value, this.name});
}
我通過添加state.selectedItemA = selectedItemA.name;
解決了它state.selectedItemA = selectedItemA.name;
如下:
setState(() {
selectedItemA = value;
});
state.selectedItemA = selectedItemA.name;
}),
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.