Кажется, что это показывает "kaleci1", потому что _setValue(selected)
только читает значение переменной, а не valeu из базы данных.
Чтобы вы вернули это значение, вы потребуется вернуть значение базы данных и добавить его в новую (или ту же переменную), чтобы вы могли использовать ее в функции _setValue()
.
Я считаю, что код должен выглядеть примерно так:
enum Answers{GS,FB}
String _value = ''; //Probably, String should be changed.
var selected = 'kaleci1';
var valueDB;
void _setValue(String value) => setState(() => _value = value); ////Probably, String should be changed.
Future kaleciSec(BuildContext context) async {
switch(
await showDialog(
...
...
StreamBuilder(
stream: Firestore.instance.collection('GS').snapshots(),
builder: (context, snapshot){
if(!snapshot.hasData) return Center (child: CircularProgressIndicator());
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
ListTile(
onTap: (){Navigator.pop(context, Answers.GS);}, //selecting GS.
title: Text(snapshot.data.documents[0][selected], //showing data from DB
valueDB = snapshot.data.documents[0][selected]
),
),
Divider(
color: Colors.grey,),
ListTile(
onTap: (){Navigator.pop(context, Answers.FB);},
title: Text(snapshot.data.documents[0][selected],
valueDB = snapshot.data.documents[0][selected]
),
],
);
},
),
],
),
)
)
{
case Answers.GS:
_setValue(valueDB); //I would like connect database here.
break;
case Answers.FB:
_setValue(valueDB); //I would like connect database here.
break;
}
Пожалуйста, дайте мне знать, как это происходит!