Flutter Firebase认证Ignoring header X-Firebase-Locale because it was null
回答 3
浏览 2435
2022-09-08
我正试图通过电子邮件和密码注册和登录的方式将Firebase认证添加到我的应用程序中。当我测试的时候,它没有导航到下一个屏幕,我得到了以下信息。
"Ignoring header X-Firebase-Locale because it was null"
然而,当我进入Firebase时,它显示我输入的信息已被存储为一个新用户。谁能提供一些关于发生了什么的见解?
这是我的main.dart。
int? isViewed;
Future <void> main() async {
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp();
final prefs = await SharedPreferences.getInstance();
final showLogin = prefs.getBool('showLogin') ?? false;
Paint.enableDithering = true;
// This is for our onboarding screen
isViewed = prefs.getInt('onboard');
runApp(MyApp(showLogin: showLogin));
}
class MyApp extends StatelessWidget {
final bool showLogin;
const MyApp({Key? key,
required this.showLogin}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Strength',
debugShowCheckedModeBanner: false,
theme: ThemeData(
appBarTheme: const AppBarTheme(color: Color(0xffe0eff5),
elevation: 0,
brightness: Brightness.light,
iconTheme: IconThemeData(color: Colors.black),
textTheme: TextTheme(headline6: TextStyle(color: Color(0xff888888), fontSize: 18),
)
),),
home: const SplashScreen(),
);
}
}
这里是我的signup.dart的大块内容。
class SignUpScreen extends StatefulWidget {
const SignUpScreen({Key? key}) : super(key: key);
@override
_SignUpScreenState createState() => _SignUpScreenState();
}
class _SignUpScreenState extends State<SignUpScreen> {
TextEditingController _passwordTextController = TextEditingController();
bool showPassword = false;
bool _isPasswordEightLetters = false;
bool _OneNumberPassword = false;
TextEditingController _emailTextController = TextEditingController();
OnPasswordChanged(String password) {
final numericRegex = RegExp(r'[0-9;]');
setState(() {
_isPasswordEightLetters = false;
if (password.length >= 8) {
_isPasswordEightLetters = true;
}
_OneNumberPassword = false;
if(numericRegex.hasMatch(password)) {
_OneNumberPassword = true;
}
});
}
.
.
.
Container(
child: TextFormField(
controller: _emailTextController,
style: const TextStyle(color: Colors.black),
keyboardType: TextInputType.emailAddress,
// inputFormatters: <TextInputFormatter>[
// FilteringTextInputFormatter.allow(RegExp(r'[0-9]'))
// ],
decoration: InputDecoration(
hintText: "Enter Your Email Address",
hintStyle: const TextStyle(color: Color(0xff31708c),
fontSize: 15.5),
prefixIcon: const Icon(Icons.email_sharp,
color: Color(0xff31708c)),
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(color: Color(0x6630728c))),
enabledBorder: OutlineInputBorder(
borderRadius: BorderRadius.circular(10),
borderSide: const BorderSide(color: Color(0x6630728c),
),
),
),
autofillHints: const [AutofillHints.email]
),
decoration: BoxDecoration(color: Colors.blueGrey.withOpacity(0.08),
borderRadius: BorderRadius.circular(10)),
)
.
.
.
ButtonTheme(
minWidth: MediaQuery.of(context).size.width,
height: 55,
buttonColor: const Color(0xff31708c),
child: RaisedButton(
onPressed: () {
FirebaseAuth.instance.createUserWithEmailAndPassword(
email: _emailTextController.text,
password: _passwordTextController.text).then((_) {
print('New Account Created');
Navigator.of(context).
pushReplacement(MaterialPageRoute(builder: (context) => Dashboard()));
}
).onError((error, stackTrace) {
print('Error');
});
},
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(20),
),
child: const Text("Sign Up",
style: TextStyle(color: Colors.white,
fontSize: 18,
fontWeight: FontWeight.bold),
),
),
)
3 个回答
#1楼
已采纳
得票数 1
筹备工作
- 检查你的模拟器是否有访问互联网的权限,并且也连接到了互联网。
- 你的
firebase
控制台中的电子邮件/密码登录方法已被启用,以获得访问权。
步骤1:创建sha1密钥+调试密钥信息+添加firebase
。我猜你的sha1密钥可能只有发布密钥的正常信息?
步骤2:从console.cloud.google.com
激活Android设备验证,并插入由firebase
自动生成的sha钥匙及其匹配的首选项(如package name
......)。
结论
你的代码在我看来是好的!一切设置都是正确的。我认为你忘记了一些琐碎的设置或正确的sha键。
#2楼
得票数 1
我在模拟器上运行时,也有同样的错误。
但是,当我在真正的移动设备上运行时,它却能完全正常地工作。
因此,如果你在模拟器上测试它,你必须创建一个新的模拟器。
#3楼
得票数 0
我面对同样的问题已经有一个星期了,我发现的解决方案是更换模拟器,所以我安装了NoxPlayer安卓模拟器,它的效果非常好:这是下载它的链接=https://www.bignox.com/.
这是一个解释如何将其与android studio和vscode连接的视频 = https://www.youtube.com/watch?v=mEoGhw4LiNM