Было выдано еще одно исключение: оператор проверки Null, используемый для нулевого значения!! 1

# #firebase #flutter #dart

Вопрос:

Я попытался изменить пароль в приложении с помощью flutter (Firebase), но он выдал мне ошибку, и было выдано другое исключение: оператор проверки Null, используемый для нулевого значения. так может ли кто-нибудь помочь мне исправить это? нужно ли мне что-то добавить, чтобы проверить значение null или что-то удалить.

  class ChangingPasswordScreen extends StatefulWidget {
  static const routeName = '/ChangingPasswordScreen';
  //late final String? email;
  //final User user;

  //ChangingPasswordScreen({required this.user});

  @override
  State<StatefulWidget> createState() {
    return _ChangingPasswordState();
  }
}

class _ChangingPasswordState extends State<ChangingPasswordScreen> {
  final _formKey = GlobalKey<FormState>();

  var newPassword = " ";

  final newPasswordController = TextEditingController();

  @override
  void dispose() {
    newPasswordController.dispose();
    super.dispose();
  }

  final currentUser = FirebaseAuth.instance.currentUser;

  changePassword() async {
    try {
      await currentUser!.updatePassword(newPassword);
      FirebaseAuth.instance.signOut();
      Navigator.pushReplacement(
        context,
        MaterialPageRoute(
          builder: (context) => SigninScreen(),
        ),
      );
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Your Password has been changed'),
        ),
      );
    } catch (error) {}
  }



ElevatedButton(
                onPressed: () {
                  if (_formKey.currentState!.validate()) {
                    setState(() {
                      newPassword = newPasswordController.text;
                    });
                    changePassword();
                  }
                },
                child: Text(
                  'Change Password',
                  style: TextStyle(fontSize: 18.0),
                ),
              ),
 

Ответ №1:

В,

 await currentUser!.updatePassword(newPassword);
 

убедитесь, что currentUser это не значение null перед использованием ! . ! укажите, что переменная никогда не будет равна нулю.

Попробуйте что-нибудь вроде этого,

 if(currentUser != null){
  try {
      await currentUser!.updatePassword(newPassword);
      FirebaseAuth.instance.signOut();
      Navigator.pushReplacement(
        context,
        MaterialPageRoute(
          builder: (context) => SigninScreen(),
        ),
      );
      ScaffoldMessenger.of(context).showSnackBar(
        SnackBar(
          content: Text('Your Password has been changed'),
        ),
      );
    } catch (error) {
      print("Error thrown : $error");
    }
}
 

Примечание: Никогда не оставляйте catch блок пустым. Регистрируйте ошибку во время отладки. Исправьте ошибку должным образом. Если вы оставите catch блок пустым, вы никогда не узнаете, создает ли он исключение или нет.

Комментарии:

1. могу я получить вашу электронную почту, чтобы мы могли подробнее обсудить эту проблему. Мне действительно нужно это исправить. Огромное спасибо