Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Not signing up #11

Open
Aravindpr11 opened this issue Mar 18, 2024 · 1 comment
Open

Not signing up #11

Aravindpr11 opened this issue Mar 18, 2024 · 1 comment

Comments

@Aravindpr11
Copy link

[ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Null check operator used on a null value
E/flutter ( 6983): #0 _SignupState._signUp (package:dialogico/home/signup.dart:38:30)
E/flutter ( 6983): #1 _InkResponseState.handleTap (package:flutter/src/material/ink_well.dart:1183:21)
E/flutter ( 6983): #2 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:275:24)
E/flutter ( 6983): #3 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:652:11)
E/flutter ( 6983): #4 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:309:5)
E/flutter ( 6983): #5 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:279:7)
E/flutter ( 6983): #6 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:167:27)
E/flutter ( 6983): #7 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:492:20)
E/flutter ( 6983): #8 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:468:22)
E/flutter ( 6983): #9 RendererBinding.dispatchEvent (package:flutter/src/rendering/binding.dart:439:11)
E/flutter ( 6983): #10 GestureBinding._handlePointerEventImmediately (package:flutter/src/gestures/binding.dart:413:7)
E/flutter ( 6983): #11 GestureBinding.handlePointerEvent (package:flutter/src/gestures/binding.dart:376:5)
E/flutter ( 6983): #12 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:323:7)
E/flutter ( 6983): #13 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:292:9)
E/flutter ( 6983): #14 _invoke1 (dart:ui/hooks.dart:328:13)
E/flutter ( 6983): #15 PlatformDispatcher._dispatchPointerDataPacket (dart:ui/platform_dispatcher.dart:410:7)
E/flutter ( 6983): #16 _dispatchPointerDataPacket (dart:ui/hooks.dart:262:31)
E/flutter ( 6983):

This is happening when i click signup

@Aravindpr11
Copy link
Author

import 'package:cloud_functions/cloud_functions.dart';
import 'package:dialogico/app.dart';
import 'package:dialogico/screens/homescreen.dart';
import 'package:firebase_auth/firebase_auth.dart' as firebase;
import 'package:flutter/material.dart';
import 'package:stream_chat_flutter_core/stream_chat_flutter_core.dart';

void main(){
runApp(MaterialApp(home: Signup(),));
}
class Signup extends StatefulWidget {
static Route get route => MaterialPageRoute(
builder: (context) => Signup(),
);

@OverRide
State createState() => _SignupState();
}

class _SignupState extends State {
final auth = firebase.FirebaseAuth.instance;
final functions = FirebaseFunctions.instance;

final _formKey = GlobalKey();
final _nameController = TextEditingController();
final _profilePictureController = TextEditingController();
final _emailController = TextEditingController();
final _passwordController = TextEditingController();

final emailRegex = RegExp(
r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^
`{|}~]+@[a-zA-Z0-9]+.[a-zA-Z]+");

bool _loading = false;

Future _signUp() async {
if (_formKey.currentState!.validate()) {
setState(() {
_loading = true;
});
try {
// Authenticate with Firebase
final creds =
await firebase.FirebaseAuth.instance.createUserWithEmailAndPassword(
email: _emailController.text,
password: _passwordController.text,
);
final user = creds.user;

    // Debugging: Print user information
    print('User: $user');

    // Move the 'mounted' check here
    if (mounted) {
      if (user == null) {
        ScaffoldMessenger.of(context).showSnackBar(
          const SnackBar(content: Text('User is empty')),
        );
        return;
      }
    }

    // Set Firebase display name and profile picture
    List<Future<void>> futures = [
      creds.user!.updateDisplayName(_nameController.text),
      if (_profilePictureController.text.isNotEmpty)
        creds.user!.updatePhotoURL(_profilePictureController.text)
    ];

    await Future.wait(futures);

    // Create Stream user and get token using Firebase Functions
    final results = await functions
        .httpsCallable('ext-auth-chat-getStreamUserToken')
        .call();

    // Connect user to Stream and set user data
    if (!mounted) return;
    final client = StreamChatCore.of(context).client;
    final streamUser = User(
      id: creds.user!.uid,
      name: _nameController.text,
      image: _profilePictureController.text,
    );
    await client.connectUser(
      streamUser,
      results.data,
    );
    await client.updateUser(streamUser);

    if (!mounted) return;
    // Navigate to home screen
    await Navigator.of(context).pushReplacement(HomeScreen.route);
  } on firebase.FirebaseAuthException catch (e) {
    print('Firebase Auth Error: ${e.message}');
    ScaffoldMessenger.of(context).showSnackBar(
      SnackBar(content: Text(e.message ?? 'Auth error')),
    );
  } catch (e, st) {
    print('Error: $e');
    print('Stack Trace: $st');
    logger.e('Sign up error', error: e, stackTrace: st);
    ScaffoldMessenger.of(context).showSnackBar(
      const SnackBar(content: Text('An error occurred')),
    );
  }

  setState(() {
    _loading = false;
  });
}

}

String? _nameInputValidator(String? value) {
if (value == null || value.isEmpty) {
return 'Cannot be empty';
}
return null;
}

String? _emailInputValidator(String? value) {
if (value == null || value.isEmpty) {
return 'Cannot be empty';
}
if (!_emailRegex.hasMatch(value)) {
return 'Not a valid email';
}
return null;
}

String? _passwordInputValidator(String? value) {
if (value == null || value.isEmpty) {
return 'Cannot be empty';
}
if (value.length <= 6) {
return 'Password needs to be longer than 6 characters';
}
return null;
}

@OverRide
void dispose() {
_emailController.dispose();
_passwordController.dispose();
_profilePictureController.dispose();
_nameController.dispose();
super.dispose();
}

@OverRide
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Color(0xfFE343333),
// appBar: AppBar(title: Text("Sign Up",style: TextStyle(color: Colors.white),
// ),backgroundColor: Color(0xfFE343333), ),
body: (_loading)
? const Center(child: CircularProgressIndicator())
: SingleChildScrollView(
child: Center(
child: Column(
children: [
SizedBox(height: 70,),

              Image.asset("assets/images/message-EaIj2A4c02.png",height: 100,width: 100,fit: BoxFit.fill,),

              SizedBox(height: 5,),


              Center(child: Text("Sign UP Here",style: TextStyle(color: Colors.white,fontWeight: FontWeight.bold,fontSize: 15),),),

              SizedBox(height: 5,),

Padding(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 5),
child: TextFormField(
  controller: _nameController,
validator: _nameInputValidator,
style: TextStyle(color: Colors.white),
textInputAction: TextInputAction.next,
    decoration: InputDecoration(
        border: OutlineInputBorder(
            borderRadius: BorderRadius.circular(30)
        ),
        hintText: " Name",


        hintStyle: TextStyle(color: Colors.white,)
    ),
  keyboardType: TextInputType.name,
autofillHints: const [
  AutofillHints.name,
  AutofillHints.username
],
)),

          Padding(
            padding: const EdgeInsets.all(8.0),
            child: TextFormField(
              controller: _profilePictureController,
              style: TextStyle(color: Colors.white),
              textInputAction: TextInputAction.next,
              decoration:
               InputDecoration(
                  border: OutlineInputBorder(
                      borderRadius: BorderRadius.circular(30)
                  ),
                  hintText: " Image url",


                  hintStyle: TextStyle(color: Colors.white,)
              ),
              keyboardType: TextInputType.url,
            )),


              // Padding(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 5),
              //     child: TextFormField(
              //         style: TextStyle(color: Colors.white),
              //         textInputAction: TextInputAction.next,
              //         decoration: InputDecoration(
              //             border: OutlineInputBorder(
              //                 borderRadius: BorderRadius.circular(30)
              //             ),
              //             hintText: "Last name",
              //             hintStyle: TextStyle(color: Colors.white,)
              //         ))),






              Padding(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 5),
              child: TextFormField(
                style: TextStyle(color: Colors.white),
                textInputAction: TextInputAction.next,
                controller: _emailController,
                validator: _emailInputValidator,
                decoration: InputDecoration(
                    border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(30)
                    ),
                    hintText: "Email",
                  hintStyle: TextStyle(color: Colors.white,)

                ),
                keyboardType: TextInputType.emailAddress,
                autofillHints: const [AutofillHints.email],
              ),
              ),
              SizedBox(height: 5,),


              // Padding(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 5),
              // child: TextFormField(
              //   style: TextStyle(color: Colors.white),
              //   textInputAction: TextInputAction.next,
              //   validator: (email){
              //     if(email!.isEmpty || email.contains("@")){
              //       return"Enter a valid eamil id";
              //     }
              //     else return null;
              //   },
              //   decoration: InputDecoration(
              //     border: OutlineInputBorder(
              //       borderRadius: BorderRadius.circular(30)
              //     ),
              //     hintText: "Email id ",
              //     hintStyle: TextStyle(color: Colors.white,)
              //   ),
              // ),
              // ),
              Padding(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 5),
                child: TextFormField(
                    controller: _passwordController,
                    validator: _passwordInputValidator,
                  obscuringCharacter: "*",
                  decoration: InputDecoration(
                    border: OutlineInputBorder(
                      borderRadius: BorderRadius.circular(30)
                    ),
                    hintText: "Password",
                      hintStyle: TextStyle(color: Colors.white,),

                  ),
                  obscureText: true,
                  enableSuggestions: false,
                  autocorrect: false,
                  keyboardType: TextInputType.visiblePassword,
                ),
              ),
              // Padding(padding: EdgeInsets.symmetric(horizontal: 20, vertical: 5),
              //   child: TextFormField(
              //     obscureText: showpwd1,
              //     obscuringCharacter: "*",
              //     decoration: InputDecoration(
              //       border: OutlineInputBorder(
              //           borderRadius: BorderRadius.circular(30)
              //       ),
              //       hintText: "Conform Password",
              //       hintStyle: TextStyle(color: Colors.white,),
              //
              //       suffixIcon: IconButton(onPressed: (){
              //         setState(() {
              //           if(showpwd1==true){
              //             showpwd1 = false;
              //           }
              //           else{
              //             showpwd1 = true;
              //           }
              //         });
              //       }, icon: Icon(showpwd1 == true?Icons.visibility:Icons.visibility_off,color: Colors.white,)),
              //     ),
              //     validator: (cpassword){
              //       if(cpassword != confirmpass || cpassword!.isEmpty){
              //         return"password mismatch / empty";
              //       }
              //       else return null;
              //     },
              //
              //   ),
              // ),
              SizedBox(height: 10,),
              ElevatedButton(
                onPressed: _signUp,
                child: const Text('Sign up'),
              ),
              const Padding(
                padding: EdgeInsets.symmetric(vertical: 16.0),
                child: Divider(),
              ),
              Row(
                mainAxisAlignment: MainAxisAlignment.center,
                children: [
                  Text('Already have an account?'),
                      // style: TextStyle(fontStyle: font),
                   SizedBox(width: 8),
                  TextButton(
                    onPressed: () {
                      Navigator.of(context).pop();
                    },
                    child: const Text('Sign in'),
                  ),
                ],
              ),




            ],

                ),
        ),
      ),


);

}
}
this is my signup code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant