firebase - 从 Firebase 读取数据 - Flutter
问题描述
我想更改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']);
。请帮我!
我在这个问题上坚持了几天。
解决方案
似乎这显示了“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;
}
请让我知道这是怎么回事!
推荐阅读
- android - 让挂起函数不返回任何东西
- swift - CLSTerminateHandler() 中的 iOS 崩溃
- javascript - 在 Typescript 中处理异步调用和返回的正确方法
- javascript - 减少javascript中的对象数组
- woocommerce - 将 woocommerce 购物车限制为四项中的一项
- search - Seach 在 Magento 2.3 上工作的正确方法是什么?
- xamarin.forms - Xamarin Forms 如何将文件保存到可以从原始设备复制的位置
- blender - 基元 ID,如果多次使用同一个网格,则不是唯一的
- javascript - 导航栏中带有导航到其他页面的按钮实现反应
- java - 在 Python 和 Java 上查找要匹配的文件哈希