小编mag*_*e05的帖子

Flutter Firebase Google 登录不起作用。选择账户后停止

我目前正在尝试在我的应用程序中实现谷歌登录和身份验证。我已经建立了一个项目并在 Firebase 中创建了一个应用程序,将 google-services.json 放在应用程序中,向 build.gradle 添加了必要的插件,并在 firebase 中设置了 SHA-1 密钥。电子邮件身份验证运行良好,但 google 身份验证导致问题。

所有身份验证都是通过我创建的“身份验证”包完成的。它包含一个身份验证页面并执行所有身份验证逻辑。运行的“主要”flutter 应用程序导入此包以供使用。这个“主”项目的 build.gradle 文件包含 Google 服务插件 ( com.google.gms:google-services:4.3.2)的附加内容。一旦“主”项目运行,它会检查用户当前是否登录。如果没有,它会将控制权交给“身份验证”包以显示身份验证屏幕并处理登录。

选择我要登录的谷歌帐户后出现问题。选择帐户后,帐户选择对话框将关闭,之后没有任何反应。用户未通过身份验证(在 Firebase 中确认),不会引发任何异常,并且围绕所有内容的 try-catch 不会捕获任何异常。似乎该函数的所有执行都停止了。我仍然可以在应用程序中移动,但登录方法永远不会完成执行。

您可以在下面看到登录方法。执行后由于final GoogleSignInAccount googleSignInAccount = await googleSignIn.signIn();某种原因行执行不继续。

///
  Future<String> _signUpWithGoogle() async {
    bool isLoggedIn = await _firebaseAuth.isLoggedIn();
    if (!isLoggedIn) {
      googleSignIn = GoogleSignIn();
      final GoogleSignInAccount googleSignInAccount =
          await googleSignIn.signIn();
      final GoogleSignInAuthentication googleSignInAuthentication =
          await googleSignInAccount.authentication;

      final AuthCredential credential = GoogleAuthProvider.getCredential(
        accessToken: googleSignInAuthentication.accessToken,
        idToken: googleSignInAuthentication.idToken,
      );

      final AuthResult authResult =
          await _firebaseAuth.signInWithCredential(credential);
      final …
Run Code Online (Sandbox Code Playgroud)

firebase google-signin flutter

9
推荐指数
2
解决办法
7686
查看次数

在 Flutter 中,是否可以增加 Dismissible 小部件的透明度?

我的应用程序中有一个 Dismissible 小部件,我可以向下拖动以关闭它。有一个要求,Dismissible 的透明度应该随着它被拖得越深而增加。所以它应该看起来好像在它被解雇时逐渐消失。如果将其向上拖动,则其透明度应降低。

作为一个简单的测试,我尝试将 Dismissible 包装在 Listener 和 Opacity 小部件中。不透明度值设置为状态跟踪的变量。Listener 小部件侦听 Dismissible 的总“y”轴移动,当它达到某个阈值时,降低状态中跟踪的不透明度值。例如,请参见下面的代码:

import 'package:flutter/material.dart';

class FadingDismissible extends StatefulWidget {
  @override
  _FadingDismissible createState() => _FadingDismissible();
}

class _FadingDismissible extends State<FadingDismissible> {
  double _totalMovement = 0;
  double _opacity;

  @override
  void initState() {
    super.initState();
    _opacity = 1.0;
  }

  _setOpacity(double opacityValue) {
    setState(() {
      _opacity = opacityValue;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Listener(
      onPointerMove: (PointerMoveEvent event) {
        _totalMovement += event.delta.dy;
        if (_totalMovement > 200) {
          _setOpacity(0.5);
        }
      },
      onPointerUp: …
Run Code Online (Sandbox Code Playgroud)

dart flutter flutter-layout

5
推荐指数
1
解决办法
806
查看次数

标签 统计

flutter ×2

dart ×1

firebase ×1

flutter-layout ×1

google-signin ×1