我称其为初始化 Firebase。
Future initializeFirebaseApp() async {
await Firebase.initializeApp(
name: DefaultFirebaseOptions.firebaseName,
options: DefaultFirebaseOptions.currentPlatform,
)
.whenComplete(() => Log().i('Firebase Initialized'))
.onError((error, stackTrace) {
Log().e('Firebase Initialize Error: $error $stackTrace');
return Future.error("");
});
}
fun main() async {
WidgetsFlutterBinding.ensureInitialized();
await initializeFirebaseApp();
runApp(const ProviderScope(child: IAmApp()));
}
我使用 AutoRouter。
当我使用
context.pushRoute(const PasswordLoginRoute())
更改屏幕时
PasswordLoginScreen 在 HookConsumerWidget 中有像这样的 FirebaseAuth:
@override
Widget build(BuildContext context, WidgetRef ref) {
final firebaseAuth = ref.watch(firebaseAuthProvider);
// ...
}
@riverpod
FirebaseAuth firebaseAuth(FirebaseAuthRef ref) => FirebaseAuth.instance;
正因为如此,我得到了
No Firebase App '[DEFAULT]' has been created - call
。
我应该初始化 Firebase 每个页面以进行 Web 构建吗?
看起来您在初始化 Firebase 时传递了自定义名称。
要解决此问题,请执行以下任一操作;
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform,
)
final firebase = FirebaseAuth.instanceFor(app: Firebase.app(DefaultFirebaseOptions.firebaseName));