我正在尝试使用 Firebase 创建一个简单的登录/注册应用程序,但遇到以下错误。
已经尝试过 flutter clean .
E/flutter ( 4727): [错误:flutter/runtime/dart_vm_initializer.cc(41)] 未处理的异常:PlatformException(java.lang.Exception: 无法从资源加载 FirebaseOptions。检查您是否已正确定义values.xml。 ,异常,原因:null,Stacktrace:java.lang.Exception:无法从资源加载FirebaseOptions。检查您是否已正确定义values.xml。E/flutter(4727):位于io.flutter.plugins.firebase.core。 FlutterFirebaseCorePlugin.lambda$optionsFromResource$4$io-flutter-plugins-firebase-core-FlutterFirebaseCorePlugin(FlutterFirebaseCorePlugin.java:207) E/flutter ( 4727): 在 io.flutter.plugins.firebase.core.FlutterFirebaseCorePlugin$$ExternalSyntheticLambda2.run(未知来源:4)E/flutter(4727):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)E/flutter(4727):在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor) .java:641) E/flutter (4727): 在 java.lang.Thread.run(Thread.java:923) E/flutter (4727): , null) E/flutter (4727): #0 FirebaseCoreHostApi.optionsFromResource (包:firebase_core_platform_interface/src/pigeon/messages.pigeon.dart:242:7)E/flutter(4727):
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
//Login section
class Login extends StatefulWidget {
const Login({Key? key}) : super(key: key); // key düzeltildi
@override
State<Login> createState() => _LoginState();
}
class _LoginState extends State<Login> {
TextEditingController email = TextEditingController();
TextEditingController password = TextEditingController();
signin()async{
await FirebaseAuth.instance.signInWithEmailAndPassword(
email: email.text,
password: password.text,
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("Login")),
body: Padding(
padding: EdgeInsets.all(5), // Padding'in yanına virgül eklendi
child: Column(
children: [
TextField(
controller: email,
decoration: InputDecoration(
hintText: "Enter email",
),
),
TextField(
controller: password,
decoration: InputDecoration(
hintText: "Enter password",
),
),
ElevatedButton(
onPressed: ()=>signin(),
child: Text("Login")
)
],
),
),
);
}
}
import 'package:firebase_auth/firebase_auth.dart';
import 'package:firebase_signup/homepage.dart';
import 'package:firebase_signup/login.dart';
import 'package:flutter/material.dart';
class Wrapper extends StatefulWidget {
const Wrapper({Key? key}) : super(key: key);
@override
State<Wrapper> createState() => _WrapperState();
}
class _WrapperState extends State<Wrapper> {
@override
Widget build(BuildContext context) {
return Scaffold(
body: StreamBuilder(
stream: FirebaseAuth.instance.authStateChanges(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return HomePage();
} else {
return Login();
}
},
),
);
}
}
import 'package:flutter/material.dart'; // Cupertino import yerine Material import edildi
import 'package:firebase_auth/firebase_auth.dart'; // FirebaseAuth import edildi
class HomePage extends StatefulWidget {
const HomePage({Key? key}) : super(key: key); // key düzeltildi
@override
State<HomePage> createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final user = FirebaseAuth.instance.currentUser;
signout() async {
await FirebaseAuth.instance.signOut();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("asd")), // AppBar yazım hatası düzeltildi
body: Center(
child: Text('${user!.email}'), // Kullanıcının e-postası eklendi
),
floatingActionButton: FloatingActi`your text`onButton(
onPressed: () => signout(), // Fonksiyon çağrısı düzgün şekilde yapıldı
child:Icon(Icons.login_rounded) ,
),
);
}
}
你应该更新你的代码 应该在任何与 firebase 相关的调用之前调用
Firebase.initializeApp
并添加选项参数。通过 firebase cli 更好地配置将自动生成文件
await Firebase.initializeApp(
options: FirebaseOptions(
apiKey: 'key',
appId: 'id',
messagingSenderId: 'sendid',
projectId: 'myapp',
storageBucket: 'myapp-b9yt18.appspot.com',
)
);
创建了新应用程序,并使用 cli 模式对其进行配置,它将生成适用于所有平台的选项文件。 从 Flutte 3.19 开始,仅添加
google-services.json
似乎还不够
生成文件后,您的 firebaseinit 代码应如下所示
await Firebase.initializeApp(
options: DefaultFirebaseOptions.currentPlatform
);