Flutter/Dart - 在 Firestore docref.get().then() { ? 之外传递/设置变量 }

罗伯特瑟温

我有一个简单的 Flutter 应用程序,它将一个由管道字符分隔的字符串值......恰好是歌曲名称(即:'Rudolf|Jingle Bells|White Christmas')转换为一个 ListView......歌曲名称是 ListTiles。关于我为什么这样做的长篇故事..请耐心等待。我有一个名为“集合”的 Firestore 集合,在集合中我有一个键为 SET01 的文档。然后在 SET01 中,我有一个名为“歌曲”的字段......一个文本字段,其中包含由管道分隔的歌曲。我调用 getSetList() 从 Firestore 检索文本字段。我似乎可以在 set01DocRef.get().then((snapshot)....

但是我似乎无法将该值从 .then() 传递回函数以将其传递回调用小部件。

非常感谢任何帮助。

String getSetList () {

String songList = 'Loading.....';
DocumentReference set01DocRef = Firestore.instance.collection('sets').document('SET01');

set01DocRef.get().then((snapshot){
  print('String songList inside .then() before assignment:  ' + songList);     //Wagon Wheel|Her Diamonds|Waterfalls
  print('Snapshot value of songs:  ' + snapshot['songs']);         //Wagon Wheel|Her Diamonds|Waterfalls
  songList = snapshot['songs'];     
  print('String songList inside .then() after assignment:  ' + songList);     //Wagon Wheel|Her Diamonds|Waterfalls
});

print('Bueller? Bueller??');
print('String songList outside of .then():  ' + songList);                  

return songList;
}

输出:

flutter: Bueller? Bueller??
flutter: String songList outside of .then():  Loading.....
Reloaded 0 of 424 libraries in 442ms.
flutter: String songList inside .then() before assignment:  Loading.....
flutter: Snapshot value of songs:  Wagon Wheel|Her Diamonds|Waterfalls
flutter: String songList inside .then() after assignment:  Wagon Wheel|Her Diamonds|Waterfalls

**该函数跳过 .get() 并立即返回......我知道这可能与强制系统等待该值从 FS 返回有关......但我不知道如何来处理它。

弗兰克·范·普费伦

这是then()的预期行为:一旦加载了数据,块内的代码就会被异步调用,因此需要数据的调用代码必须在then()块内。

幸运的是,Dart 有一个await关键字可以使这更容易。它基本上取代了then()块:

Future<String> getSetList () async {
  String songList = 'Loading.....';
  DocumentReference set01DocRef = 
  Firestore.instance.collection('sets').document('SET01');

  snapshot = await set01DocRef.get();
  print('String songList inside .then() before assignment:  ' + songList);     
  //Wagon Wheel|Her Diamonds|Waterfalls
  print('Snapshot value of songs:  ' + snapshot['songs']);         //Wagon 
  Wheel|Her Diamonds|Waterfalls
  songList = snapshot['songs'];     
  print('String songList inside .then() after assignment:  ' + songList);     
  //Wagon Wheel|Her Diamonds|Waterfalls

  print('Bueller? Bueller??');
  print('String songList outside of .then():  ' + songList);  
  return songList;
}

请注意,任何对getSetList()现在的调用也必须使用await

var setlist = await getSetList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.map中的Firestore .get()

来自分类Dev

将数据从Cloud Firestore传递到变量

来自分类Dev

在ajax调用之外传递数据,jQuery

来自分类Dev

在ajax调用之外传递数据,jQuery

来自分类Dev

在表视图之外传递和访问对象数据

来自分类Dev

jQuery传递的GET变量

来自分类Dev

Firestore .get() 导致超过截止日期

来自分类Dev

Firestore 云功能。交易 vs get() => update()

来自分类Dev

如何在上一个完成后设置新的 firestore get 侦听器

来自分类Dev

从Firestore检索数据并将其传递给变量。扑

来自分类Dev

如何将JS循环变量传递到FireStore中

来自分类Dev

Firestore + CheckedTextView + RecyclerView -> 设置数据

来自分类Dev

设置 Firestore 用户安全规则

来自分类Dev

在Firestore规则中引用变量

来自分类Dev

通过_GET传递变量

来自分类Dev

如何设置zend 2路由以期望传递某些get变量?

来自分类Dev

如何在javascript中的onclick函数之外传递此关键字

来自分类Dev

Firestore安全规则:hasAny()列表方法中的get()使用

来自分类Dev

使用get()允许Firestore文档查询,但使用where()拒绝

来自分类Dev

How to get data from firestore using flutter streams

来自分类Dev

Firestore 安全规则:是否可以链接 get() 和 exists()

来自分类Dev

如何限制 FireBase firestore get() 方法返回的记录?

来自分类Dev

在 Firestore 中使用 get 时如何等待承诺

来自分类Dev

Firestore查询中的Flutter传递文档ID

来自分类Dev

将数据从Formik onSubmit传递到Firestore

来自分类Dev

在Swift中使用segue传递Firestore的documentID

来自分类Dev

将异步调用传递给 Firestore

来自分类Dev

从Firestore获取数据后如何设置状态

来自分类Dev

基本Cloud Firestore安全规则设置

Related 相关文章

热门标签

归档