可能只有我一个人,但 Flutter 中的异步编程似乎绝对是一场噩梦。javascript/typescript 中非常简单的东西似乎变得不必要地困难。例如,我正在尝试创建一个简单的函数来检查用户是否已通过身份验证:
Future<bool> isLoggedIn() async {
var user = await FirebaseAuth.instance.currentUser();
return user == null ? false : true;
}
Run Code Online (Sandbox Code Playgroud)
然后在这样的场景中使用这个函数:
Widget _buildChild() async {
var auth = await user.isLoggedIn();
if (auth) {
return new Navigation();
} else {
return new LoginUI();
}
}
Run Code Online (Sandbox Code Playgroud)
但是第二个函数也需要返回一个未来?
标记为“async”的函数必须具有可分配给“Future”的返回类型。
使用 then() 而不是 await 也不起作用。之前在同步上下文中使用异步编程时,我曾多次遇到过这个问题。也许只是它的外观和感觉与 Promises 非常相似,我完全错过了文档中的功能。
我正在运行一个自动构建和发布 flutter 项目的 Github 操作。但我们使用开发和生产 Firebase 环境。因此,在构建之前,我想将 google-services.json 从开发版本切换到生产版本。但我似乎找不到一种简单的方法来做到这一点。或者是否有更好的方法在 flutter 中使用 Firebase 的开发和生产版本?
可能不是很有用,但这是当前状态下的操作
on:
push:
branches: [ stable ]
name: Build and Release
jobs:
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
with:
fetch-depth: '0'
- name: Bump version and push tag
id: tag
uses: anothrNick/github-tag-action@1.17.2
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
WITH_V: true
RELEASE_BRANCHES: stable
- uses: actions/checkout@v1
- uses: actions/setup-java@v1
with:
java-version: '12.x'
- uses: subosito/flutter-action@v1
with:
flutter-version: '1.17.3'
- run: flutter pub get
- run: flutter …Run Code Online (Sandbox Code Playgroud) continuous-integration github firebase flutter github-actions