【问题标题】:Flutter Firebase Authentication Ignoring Header X-Firebase-Locale because its value was nullFlutter Firebase Authentication Ignoring Header X-Firebase-Locale,因为它的值为 null
【发布时间】:2022-09-27 14:35:24
【问题描述】:

我正在尝试通过电子邮件和密码注册和登录将 Firebase 身份验证添加到我的应用程序中。当我对其进行测试时,它不会导航到下一个屏幕,并且我收到以下消息:

\"忽略标头 X-Firebase-Locale,因为它为空\"

但是,当我转到 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),
                        ),
                      ),
                    )

    标签: flutter firebase firebase-authentication


    【解决方案1】:

    准备

    1. 检查你的模拟器是否有访问互联网的权限并且是否已经连接。
    2. firebase 控制台中的电子邮件/密码登录方法已启用以获取访问权限。

      步骤1:创建sha1密钥+调试密钥信息+添加firebase。 我猜你的 sha1 密钥可能只有来自 release 密钥的正常信息?

      第2步:console.cloud.google.com 激活Android 设备验证并插入由firebase 自动生成的您的sha 密钥+它们的匹配首选项(如package name...)

      结论

      您的代码对我来说看起来不错!一切都设置正确。我认为您忘记了一些琐碎的设置或正确的 sha 键。

    【讨论】:

      【解决方案2】:

      在模拟器上运行时出现同样的错误。

      但是当我在真正的移动设备上运行它时,它工作得非常好。

      所以,如果你在模拟器上测试它,你必须创建一个新的模拟器。

      【讨论】:

        【解决方案3】:

        我一周都遇到同样的问题,我找到的解决方案是更换模拟器,所以我安装了 NoxPlayer android 模拟器,效果很好:这是下载它的链接 = https://www.bignox.com/

        这是一个视频,解释了如何将它与 android studio 和 vscode = https://www.youtube.com/watch?v=mEoGhw4LiNM 连接

        【讨论】:

          猜你喜欢
          • 2021-03-11
          • 2022-08-23
          • 1970-01-01
          • 2022-10-05
          • 2021-10-16
          • 2021-02-19
          • 2021-06-29
          • 2021-04-25
          相关资源
          最近更新 更多