firebase - 我的颤动代码没有按照我期望的顺序读取代码
问题描述
这 3 个函数在一个类中,我使用它们的顺序是下一个:
调用登录查询。
如果密码与用户名匹配,它将调用函数
loginAccepted()
;此函数将类变量的值更改为 1,这意味着输入的数据是正确的。
到目前为止,代码按他们的方式工作。现在问题来了。
我有一个ElevatedButton
我:
从另一个类调用
loginQuery
函数。如果
userMaster.loginVerification
是 1,这意味着数据是正确的,它将显示一个弹出窗口,说明它是正确的。(userMaster
是我用来控制该类功能的变量。)如果
loginVerification
不是 1,它还会显示一个弹出窗口来说明它。
那么,当我尝试我的代码输入有效的用户名和密码时,它显示在左侧,控制台在控制台中显示确认数据是有效用户的打印,但在右侧程序显示弹出窗口好像我输入的数据不是有效用户。
然后我在控制台中输入userMaster.loginVerification
以检查发生了什么,它显示了一个 1,这意味着我输入的数据是有效的,但是弹出窗口的那个值是 0,这没有意义。
我不明白我的代码发生了什么,我开始相信函数是在 aElevatedButton
或其他东西中执行的最后一件事,任何帮助将不胜感激。
解决方案
这实际上是这个问题,但它是针对 JS 的,你会感到困惑。不过,这只是async
一般的编程。
- 让
loginQuery
回报成为未来
Future<void> loginQuery() async {
var docs = await Firestore.instance.collection(...).where(...).getDocuments();
// existing if statement
if(docs.documents.isEmpty) {
...
} else {
...
}
}
await
你的未来onPressed
onPressed:() async {
await userMaster.loginQuery(...);
// now do your if check
}
推荐阅读
- typescript - react/typescript 中的通用道具 - 如何让 T 成为属性的类型?
- protocol-buffers - 有没有办法在 proto3 中有多种类型的数组?
- javascript - 如何让我的 discord.js-bot 记录消息的编辑?
- python - 批量 tsv 到 csv 脚本
- python - 获取日期函数 python
- python - Pytorch 出现 CUDA 错误:训练 conv1d 分类器时触发设备端断言
- macos - 从单个终端命令激活 virtualenv 并打开 Jupyter 笔记本
- django - 如何下载与帖子链接的文件?
- java - android千位分隔符和两位小数
- python - 在 Google Cloud Function 中为 Google Cloud Storage 使用 compose 时出现 404 错误