How to fix this [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: NoSuchMethodError: The getter 'instance' was called on null. error?

2,614

Here is the error:

    var firebaseAuth;
    var widget;
    await firebaseAuth.instance.verifyPhoneNumber(
        phoneNumber: "+91${widget.phone}",
        verificationCompleted: (PhoneAuthCredential credential) async {
          await firebaseAuth.instance

firebaseAuth is not referencing any object, thus you get:

The getter 'instance' was called on null.

Therefore, remove the variable since it's not needed, and since property instance returns static FirebaseAuth, then you have to do the following:

    var widget;
    await FirebaseAuth.instance.verifyPhoneNumber(
        phoneNumber: "+91${widget.phone}",
        verificationCompleted: (PhoneAuthCredential credential) async {
          await FirebaseAuth.instance
Share:
2,614
Priya Chowdary
Author by

Priya Chowdary

Updated on December 31, 2022

Comments

  • Priya Chowdary
    Priya Chowdary over 1 year

    I'm trying to receive an OTP for user-authentication. But, I didn't receive any OTP, I'm getting this error.

    Here is the error:

    E/flutter (30379): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: NoSuchMethodError: The getter 'instance' was called on null. E/flutter (30379): Receiver: null E/flutter (30379): Tried calling: instance E/flutter (30379): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5) E/flutter (30379): #1
    _OtpscreenState.verifyPhone (package:userauth/Otpscreen.dart:172:24) E/flutter (30379): #2 _OtpscreenState.initState (package:userauth/Otpscreen.dart:210:5) E/flutter (30379): #3
    StatefulElement._firstBuild(package:flutter/src/widgets/framework.dart:4711:57) E/flutter (30379): #4 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4548:5) E/flutter (30379): #5 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #6 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #7 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6083:14) E/flutter (30379): #8 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #9 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #10 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16) E/flutter (30379): #11 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5) E/flutter (30379): #12 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4553:5) E/flutter (30379): #13 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4548:5) E/flutter (30379): #14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #15 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #16 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6083:14) E/flutter (30379): #17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #18 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #19 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6083:14) E/flutter (30379): #20 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #21 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #22 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16) E/flutter (30379): #23 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11) E/flutter (30379): #24 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5) E/flutter (30379): #25 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4553:5) E/flutter (30379): #26 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4737:11) E/flutter (30379): #27 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4548:5) E/flutter (30379): #28 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #29 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #30 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6083:14) E/flutter (30379): #31 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #32 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #33 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6083:14) E/flutter (30379): #34 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #35 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #36 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16) E/flutter (30379): #37 StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4746:11) E/flutter (30379): #38 Element.rebuild (package:flutter/src/widgets/framework.dart:4267:5) E/flutter (30379): #39 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4553:5) E/flutter (30379): #40 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4737:11) E/flutter (30379): #41 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4548:5) E/flutter (30379): #42 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3611:14) E/flutter (30379): #43 Element.updateChild (package:flutter/src/widgets/framework.dart:3363:18) E/flutter (30379): #44 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4599:16)

    Here is my code:

    import 'package:flutter/material.dart';
    import 'package:pinput/pin_put/pin_put.dart';
    import 'package:pinput/pin_put/pin_put_state.dart';
    import 'package:firebase_auth/firebase_auth.dart';
    import 'package:firebase_core/firebase_core.dart';
    import 'package:userauth/Profilescreen.dart';
    
    class Otpscreen extends StatefulWidget {
      String phone;
    
      Otpscreen(this.phone);
    
      @override
      _OtpscreenState createState() => _OtpscreenState();
    }
    
    class _OtpscreenState extends State<Otpscreen> {
    
    
      final GlobalKey<ScaffoldState> _scaffoldkey = GlobalKey<ScaffoldState>();
    
      late String otp;
      late String _verificationCode;
    
      final TextEditingController _pinPutController = TextEditingController();
      final FocusNode _pinPutFocusNode = FocusNode();
      final BoxDecoration pinPutDecoration = BoxDecoration(
        color: Colors.blue,
        borderRadius: BorderRadius.circular(10.0),
        border: Border.all(
          color: const Color.fromRGBO(126, 203, 224, 1),
        ),
      );
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          body: SafeArea(
            child: Column(
              children: [
                Expanded(
                  child: Padding(
                    padding: const EdgeInsets.only(top: 10, bottom: 10),
                    child: Column(
                      children: [
                        Padding(
                          padding: const EdgeInsets.only(right: 310),
                          child: RawMaterialButton(
                            onPressed: () {
                              Navigator.pop(context, "phone");
                            },
                            child: Icon(Icons.arrow_back),
                          ),
                        ),
                        SizedBox(height: 40),
                        Text(
                          "Verify Phone",
                          style: TextStyle(
                              fontWeight: FontWeight.bold,
                              fontSize: 20,
                              color: Colors.black),
                        ),
                        SizedBox(height: 10),
                        Text(
                          "code is sent to ${widget.phone}",
                          style: TextStyle(
                              fontSize: 14,
                              fontWeight: FontWeight.w500,
                              color: Colors.grey),
                        ),
                        Padding(
                          padding: const EdgeInsets.all(30.0),
                          child: PinPut(
                            fieldsCount: 6,
                            textStyle: const TextStyle(
                                fontSize: 25.0, color: Colors.white),
                            eachFieldWidth: 40.0,
                            eachFieldHeight: 55.0,
                            focusNode: _pinPutFocusNode,
                            controller: _pinPutController,
                            submittedFieldDecoration: pinPutDecoration,
                            selectedFieldDecoration: pinPutDecoration,
                            followingFieldDecoration: pinPutDecoration,
                            pinAnimationType: PinAnimationType.fade,
                            onSubmit: (pin) async {
                              try {
                                await FirebaseAuth.instance
                                    .signInWithCredential(
                                        PhoneAuthProvider.credential(
                                            verificationId: _verificationCode,
                                            smsCode: pin))
                                    .then((value) async {
                                  if (value.user != null) {
                                    Navigator.pushAndRemoveUntil(
                                        context,
                                        MaterialPageRoute(
                                            builder: (context) => Profilescreen()),
                                        (route) => false);
                                  }
                                });
                              } catch (e) {
                                FocusScope.of(context).unfocus();
                                _scaffoldkey.currentState!.showSnackBar(
                                    SnackBar(content: Text("invalid OTP")));
                              }
                            },
                          ),
                        ),
                        SizedBox(
                          height: 20,
                        ),
                        Center(
                          child: Padding(
                            padding: const EdgeInsets.only(
                                left: 20, right: 20, top: 0, bottom: 10),
                            child: Row(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: [
                                Center(
                                  child: Text(
                                    "Didn't receive an code?",
                                  ),
                                ),
                                GestureDetector(
                                  onTap: () {
                                    Navigator.pushNamed(context, "phone");
                                  },
                                  child: Center(
                                    child: Text(
                                      "Request Again",
                                      style: TextStyle(
                                        color: Colors.black,
                                        fontWeight: FontWeight.bold,
                                        fontSize: 16,
                                      ),
                                    ),
                                  ),
                                ),
                              ],
                            ),
                          ),
                        ),
                        SizedBox(height: 20),
                        RawMaterialButton(
                          onPressed: () {
                            Navigator.pushNamed(context, "profile");
                          },
                          fillColor: Colors.blue,
                          child: Padding(
                            padding: const EdgeInsets.fromLTRB(50, 15, 50, 15),
                            child: Text(
                              "VERIFY AND CONTINUE",
                              style: TextStyle(
                                  fontSize: 16, fontWeight: FontWeight.bold),
                            ),
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
              ],
            ),
          ),
        );
      }
    
      verifyPhone() async {
        var firebaseAuth;
        var widget;
        await firebaseAuth.instance.verifyPhoneNumber(
            phoneNumber: "+91${widget.phone}",
            verificationCompleted: (PhoneAuthCredential credential) async {
              await firebaseAuth.instance
                  .signInCredential(credential)
                  .then((value) async {
                if (value.user > 0) {
                  Navigator.pushAndRemoveUntil(
                      context,
                      MaterialPageRoute(builder: (context) => Profilescreen()),
                      (route) => false);
                }
              });
            },
            verificationFailed: (FirebaseAuthException e) {
              print(e.message);
            },
            codesent: (String verificationID, int resendToken) {
              setState(() {
                _verificationCode = verificationID;
              });
            },
    
    
            codeAutoRetrievalTimeout: (String verificationID) {
              setState(() {
                var verificationCode = verificationID;
    
              });
              },
            timeout: Duration(seconds: 60));
    
      }
    
      @override
      void initState() {
        // TODO: implement initState
        super.initState();
        verifyPhone();
      }
    }
    

    Thank you!