Кнопка входа в гугл не работает как решить

Я добавил кнопку входа в Google на свою страницу входа. но когда я НАЖИМАЮ ЭТО, он вообще не работает. Я ССЫЛАЮСЬ на это видео для реализации. как это решить. Я изо всех сил пытаюсь найти ошибку. оцените вашу помощь в этом. все части firebase сделаны по видеоинструкции. нет ошибки отображения. просто кнопка не работает.

//google_sign_in.dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:google_sign_in/google_sign_in.dart';

class GoogleSignInProvider extends ChangeNotifier{
  final googleSignIn =GoogleSignIn();
  GoogleSignInAccount? _user;
  GoogleSignInAccount get user => _user!;

  Future googleLogin()async{
    final googleUser= await googleSignIn.signIn();
    if (googleUser == null) return;
    _user = googleUser;

    final googleAuth =await googleUser.authentication;

    final credential = GoogleAuthProvider.credential(
      accessToken: googleAuth.accessToken,
      idToken: googleAuth.idToken,
    );

    await FirebaseAuth.instance.signInWithCredential(credential);
       notifyListeners();  //to update UI
}


}

//main.dart

 import 'dart:io';

import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:lala_live/provider/google_sign_in.dart';
import 'package:lala_live/screens/login.dart';
import 'package:lala_live/screens/splashscreen.dart';
import 'package:google_sign_in/google_sign_in.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:provider/provider.dart';


const bool USE_EMULATOR = false;
Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await Firebase.initializeApp();

  if (USE_EMULATOR) {
    _connectToFirebaseEmulator();
  }
  runApp(MyApp());
}

Future _connectToFirebaseEmulator() async {
  final fireStorePort = "8080";
  final authPort = 9099;
  final localhost = Platform.isAndroid ? '10.0.2.2' : 'localhost';

  FirebaseFirestore.instance.settings = Settings(
    host: "$localhost:$fireStorePort",
    sslEnabled: false,
    persistenceEnabled: false,
  );

  await FirebaseAuth.instance.useAuthEmulator('http://$localhost:', authPort);
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) => ChangeNotifierProvider(
      create: (context)=> GoogleSignInProvider(),
      child: MaterialApp(
        debugShowCheckedModeBanner: false,
        theme: ThemeData(fontFamily: 'Quicksand'),
        home: FutureBuilder(
            future: Future.delayed(Duration(seconds: 3)),
            builder: (ctx, timer) => timer.connectionState == ConnectionState.done
                ? Login() //Screen to navigate to once the splashScreen is done.
                : SplashScreen()),
      ),
    );
  }

//логин.дарт

Center(
                                child: SocialButton(
                                    logo: 'asset/images/googleicon.png',
                                    height: widgetheight,
                                    width: width / 4,
                                    text: 'Google',
                                    onPressed: () {
                                      final provider = Provider.of<GoogleSignInProvider>(context,listen:false);
                                      provider.googleLogin();
                                    },
                                    color: containergrey)),
                          ],
                        ),

Пожалуйста, скопируйте и вставьте ошибку, которую вы получаете. Вставьте его в вопрос, чтобы кому-то было проще определить ошибку.

Mozes Ong 10.04.2022 06:27

не отображается ошибка. когда я нажимаю на кнопку, она не работает

Nidew 10.04.2022 06:29
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
2
39
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Попробуй это, возможно, вы забыли асинхронное ожидание

onPressed: () async {
          final provider =
              Provider.of<GoogleSignInProvider>(context, listen: false);
          await provider.googleLogin();
        },

то же самое не работает, сэр :(

Nidew 10.04.2022 06:38
Ответ принят как подходящий

googleSignIn.dart

    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:flutter/material.dart';
    import 'package:google_sign_in/google_sign_in.dart';
    
    class GoogleSignInProvider extends ChangeNotifier {
      final googleSignIn = GoogleSignIn();
    
      GoogleSignInAccount? _user;
    
      GoogleSignInAccount get user => _user!;
    
      Future googleLogin() async {
        try {
          final googleUser = await googleSignIn.signIn();
          if (googleUser == null) return;
          _user = googleUser;
    
          final googleAuth = await googleUser.authentication;
          final credential = GoogleAuthProvider.credential(
            accessToken: googleAuth.accessToken,
            idToken: googleAuth.idToken,
          );
    
          await FirebaseAuth.instance.signInWithCredential(credential);
        } catch (e) {}
        notifyListeners();
      }
    
      Future logout() async {
        await googleSignIn.disconnect();
        FirebaseAuth.instance.signOut();
      }
    }

**SignInButton**

    import 'package:flutter/material.dart';

class ButtonWidget extends StatelessWidget {
  final String text;
  final VoidCallback onClicked;

  const ButtonWidget({
    Key? key,
    required this.text,
    required this.onClicked,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) => ElevatedButton(
        style: ElevatedButton.styleFrom(
          shape: const StadiumBorder(),
          onPrimary: Colors.white,
          padding: EdgeInsets.symmetric(horizontal: 32, vertical: 12),
        ),
        child: Text(text),
        onPressed: onClicked,
      );

}



 Widget buildUpgradeButton() => ButtonWidget(
        text: Click to SignIn,
        onClicked: () {
          final provider =
              Provider.of<GoogleSignInProvider>(context, listen: false);
          provider.googleLogin();
        });

Другие вопросы по теме