【发布时间】:2020-05-05 03:58:34
【问题描述】:
我想将 String 更改为其他内容,以便从 firebase 读取数据。
我有以下代码:
enum Answers{GS,FB}
String _value = ''; //Probably, String should be changed.
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]['kaleci1'], //showing data from DB
),
),
Divider(
color: Colors.grey,),
ListTile(
onTap: (){Navigator.pop(context, Answers.FB);},
title: Text(snapshot.data.documents[0]['kaleci2'],
),
],
);
},
),
],
),
)
)
{
case Answers.GS:
_setValue('GS'); //I would like connect database here.
break;
case Answers.FB:
_setValue('FB'); //I would like connect database here.
break;
}
我的代码可以正常工作。但是,我需要显示选择的内容。基本上,我想将_setValue('GS'); 更改为_setValue(snapshot.data.documents[0]['kaleci1']); 这样的东西。请帮帮我!
我在这个问题上坚持了几天。
【问题讨论】:
-
既然您已经在使用来自
title: Text(snapshot.data.documents[0]['kaleci2'],文档的数据,那么是什么阻止您在调用_setValue()时使用它? -
用户将选择 kaleci1 或 kaleci2。我想跟踪选择了哪一个。在这种情况下,我这个编码有问题吗?
-
好的。因此,您将创建一个变量来保存用户选择的内容(比如
selected = 'kaleci1'),然后在访问文档中的数据时使用它(snapshot.data.documents[0][selected])。 -
我加入了
var selected = 'kaleci1';并更新了snapshot.data.documents[0][selected]。然后,_setValue(selected);。但是,当我选择 kaleci1 时,它会写成 kaleci1。我想显示数据,比如 kaleci1 是 Frank。它应该显示 Frank,而不是 kaleci1。
标签: firebase flutter dart google-cloud-firestore future