обновление firebase_auth 0.18.3 прерывает мой проект

#ios #flutter #firebase-authentication

# #iOS #флаттер #firebase-аутентификация

Вопрос:

Я использую flutter на ios, и я использовал firebase_auth 0.16.1 (с firebase_core) 0.4.4, и мой проект в основном работал, но моим пользователям нужно было каждый раз проходить авторизацию. Телефон отказался запоминать что-либо о предыдущих попытках входа в систему, что теперь стало проблемой.

Итак, после некоторого изучения я обнаружил, что Firebase_auth внедрил некоторые обновления, которые (должны) решить эту проблему, однако моя реализация явно отсутствует.

Итак, я обновился до firebase_auth 0.18.3 с помощью firebase_core 0.5.2, для чего, по-видимому, сначала требуется этап инициализации. Я скопировал этот код непосредственно с их веб-сайта, но все, что он делает, это выдает ошибку.

Итак, это то, что у меня есть прямо сейчас.

 FirebaseAuth auth = FirebaseAuth.instance;

class PreValidation extends StatelessWidget {

  final Future<FirebaseApp> _initialization = Firebase.initializeApp();

  @override
  Widget build(BuildContext context) {
    return FutureBuilder(
    future: _initialization,
    builder: (context, snapshot) {
      if (snapshot.hasError) {
        print("Uh Oh");
        return;
      }
      if (snapshot.connectionState == ConnectionState.done) {
        pretest();
        return;
      }

    }
    );
  }
 

Я получаю сообщение об ошибке, в котором говорится, что futurebuilder возвращает значение null. Я знаю, что не могу, но я не совсем уверен, что это должно возвращать. Если бы я знал, какой объект он ищет, это было бы началом.

Моя проблема в том, что мне действительно нужно запустить этот код только в начале, еще до запуска моей программы, и, если это удастся, перейдите в основную часть моего приложения, если это не удастся, пройдите аутентификацию. И вся эта настройка класса из firebase действительно настроена как базовый класс, что на самом деле не то, что я здесь делаю.

Ответ №1:

Попробуйте обновить main() свою функцию (протестирована и работает на Flutter 1.22, firebase_auth: ^ 0.18.1 1 и firebase_core: ^ 0.5.0:

 import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    
    return MaterialApp(
      title: 'Test',
      home: FutureBuilder(
        future: Firebase.initializeApp(),
        builder: (context, snapshot) {
          if (snapshot.hasError) {
            print('error');
          }

          if (snapshot.connectionState == ConnectionState.done) {
             pretest();
             return;
          }

          return Loading();
        },
      ),
    );
  }
}