Giter Club home page Giter Club logo

skype-clone's Introduction

Skype Clone in Flutter

Skype Clone License Skype Clone Forks Skype Clone Stars Skype Clone Pull Requests Skype Clone Repo Size

Making a Skype Clone in Flutter - Completed Checkout the course here : THE CS GUY

Null Safety + Firebase SDK Update

The code has been updated to accommodate the latest flutter standards for null-safety, changes in Firebase and Agora, and everything should now compile on Flutter 2.0.0+

The updated code can be found here: Rohit19060/skype_clone

Screenshots

Project Structure

This project is going to be divided in several different branches. As I release a new video, the content related to that video will be committed to the branch with the same name as that of the video.

  1. MASTER - Code

  2. Firebase Integration - Video - Code

  3. Google Sign In - Video - Code

  4. Getting Started With UI - Video - Code

  5. Making Chat Screen - Video - Code

  6. Search Screen And Functionality - Video - Code

  7. Chat Screen UI - Video - Code

  8. Exchaning Messages - Video - Code

  9. Cleanup And Rearrangements - Video - Code

  10. Emojis in Flutter - Video - Code

  11. Exchanging Images - Video - Code

  12. End to End Video Calling - Video - Code

12.5. [BREAKING - CHANGES] - Video - Code

  1. Populating Chat List and Presence Indicator - Video - Code

  2. User Profile and Logout - Video - Code

  3. Implementing local storage with Hive and Sqlite - Video - Code

  4. SQLite CRUD in Flutter - Video - Code

  5. CRUD Operations in HIVE - Flutter Tutorial - Video - Code

  6. Saving Call Logs Locally - Video - Code

skype-clone's People

Contributors

ronak99 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

skype-clone's Issues

Getting an error when tried to do search for user from database

Recently, I cloned the Part - 6 - Search Screen UI and Functionality where I faced one error, that is occurring in the userList where the error says

[NoSuchMethodError: The method 'toLowerCase' was called on null.
Receiver: null
Tried calling: toLowerCase()
See also: https://flutter.dev/docs/testing/errors
Below I have attached the screenshot of the error too...
WhatsApp Image 2020-04-16 at 4 54 04 PM

This error occurred after I changed the previous error issue code

The following NoSuchMethodError was thrown during a scheduler callback:

The getter 'uid' was called on null.
Receiver: null
Tried calling: uid

When the exception was thrown, this was the stack:
#0 Object.noSuchMethod (dart:core-patch/object_patch.dart:53:5)
#1 _HomeScreenState.initState. (package:skypeclone/screens/home_screen.dart:33:38)
#2 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1102:15)
#3 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1049:9)
#4 SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:957:5)
...

contact list empty first run

hi, the app is not asking for permission to read contacts, the start searching screen is empty , and when you press any letter on the key board the app return an error:

The method 'toLowerCase' was called on null.
Receiver: null
Tried calling: toLowerCase()
_SearchScreenState.buildSuggestions. (package:skype_clone/screens/search_screen.dart:95:53)

Screenshot_1598231090
Screenshot_1598231078
Screenshot_1598231086

App is not loading

after adding video calling functionality to the app. when I run the app, it just shows the circular progress indicator.

the error I am getting is -
E/flutter (25915): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
E/flutter (25915): Receiver: null
E/flutter (25915): Tried calling:

build broken after update to latest firebase plugins

i update the yaml file to the latest firebase plugins

  firebase_auth: ^0.18.0+1
  cloud_firestore: ^0.14.0+2
  firebase_core: ^0.5.0
  firebase_storage: ^4.0.0
  firebase_messaging: ^7.0.0
  firebase_database: ^4.0.0

after this i get this error code when try to run the app

lib/resources/auth_methods.dart:6:1: Error: 'User' is imported from both 'package:firebase_auth/firebase_auth.dart' and 'package:skype_clone/models/user.dart'.
import 'package:skype_clone/models/user.dart';

Url was null

I was following along the tutorial and in the 13. tutorial the app was working. I could send photo messages. However, when I move forward, it stopped working for photo sending. It is now saying Url was null. I copied the code from the repository but it is still giving the same error.

After Final Build App not opening

Below error message in mobile

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.chatbee/com.example.chatbee.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "com.example.chatbee.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.chatbee-E19D9G7k3x6AXtBZL8pcrg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.chatbee-E19D9G7k3x6AXtBZL8pcrg==/lib/arm64, /data/app/com.example.chatbee-E19D9G7k3x6AXtBZL8pcrg==/base.apk!/lib/arm64-v8a, /system/lib64]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2876) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3081) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loop(Looper.java:201) at android.app.ActivityThread.main(ActivityThread.java:6823) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:873) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.example.chatbee.MainActivity" on path: DexPathList[[zip file "/data/app/com.example.chatbee-E19D9G7k3x6AXtBZL8pcrg==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.chatbee-E19D9G7k3x6AXtBZL8pcrg==/lib/arm64, /data/app/com.example.chatbee-E19D9G7k3x6AXtBZL8pcrg==/base.apk!/lib/arm64-v8a, /system/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:171) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:69) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43) at android.app.Instrumentation.newActivity(Instrumentation.java:1216) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2864) ... 11 more

Getting an error when tried searching for user list

I'm studying Flutter through your videos on Youtube. Before asking many thanks for your effort to making those videos.

Recently, I cloned the last part of yours of [Part - 10 - Emojis in Flutter | Skype Clone] and I've got an error saying that

[NoSuchMethodError: The method 'where' was called on null.
Receiver: null
Tried calling: where(Closure: (User) => bool)
See also:
https://flutter.dev/docs/testing/errors]

[Error message]
image 1

[User data in my Firebase cloud-store]
image

I tried to research for this error in a stack overflow case which seems to be similar with this error
https://stackoverflow.com/questions/52046870/flutter-the-method-was-called-on-null
It looks similar with this but I can't applicable this in my code, since I'm newbie in Flutter and Dart.

Could you help me out this??

Flutter error “the method 'toLowerCase()' was called on null”

I am creating a skype clone app in flutter and encountered an error when making the "search" functionality. I want to search my firebase db for other users by username or name returned in lowercase via a list that updates as you are typing. However, on first key stroke I encounter this error:

The method 'toLowerCase' was called on null. Receiver: null Tried calling: toLowerCase()

Here is the code for the search screen (the problem is under buildSuggestions):

`import 'package:chatbee/models/user.dart';
import 'package:chatbee/resources/firebase_repository.dart';
import 'package:chatbee/screens/chatscreens/chat_screen.dart';
import 'package:chatbee/utils/universal_variables.dart';
import 'package:chatbee/widgets/custom_tile.dart';
import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:gradient_app_bar/gradient_app_bar.dart';

class SearchScreen extends StatefulWidget {
@OverRide
_SearchScreenState createState() => _SearchScreenState();
}

class _SearchScreenState extends State {
FirebaseRepository _repository = FirebaseRepository();

List userList;
String query = "";
TextEditingController searchController = TextEditingController();

@OverRide
void initState() {
// TODO: implement initState
super.initState();

_repository.getCurrentUser().then((FirebaseUser user) {
  _repository.fetchAllUsers(user).then((List<User> list) {
    setState(() {
      userList = list;
    });
  });
});

}

searchAppBar(BuildContext context) {
return GradientAppBar(
backgroundColorStart: UniversalVariables.gradientColorStart,
backgroundColorEnd: UniversalVariables.gradientColorEnd,
leading: IconButton(
icon: Icon(Icons.arrow_back, color: Colors.white),
onPressed: () => Navigator.pop(context),
),
elevation: 0,
bottom: PreferredSize(
preferredSize: const Size.fromHeight(kToolbarHeight + 20),
child: Padding(
padding: EdgeInsets.only(left: 20),
child: TextField(
controller: searchController,
onChanged: (val) {
setState(() {
query = val;
});
},
cursorColor: UniversalVariables.blackColor,
autofocus: true,
style: TextStyle(
fontWeight: FontWeight.bold,
color: Colors.white,
fontSize: 35,
),
decoration: InputDecoration(
suffixIcon: IconButton(
icon: Icon(Icons.close, color: Colors.white),
onPressed: () {
WidgetsBinding.instance
.addPostFrameCallback((_) => searchController.clear());
},
),
border: InputBorder.none,
hintText: "Search",
hintStyle: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 35,
color: Color(0x88ffffff),
),
),
),
),
),
);
}

buildSuggestions(String query) {
final List suggestionList = query.isEmpty
? []
: userList.where((User user) {
String _getUsername = user.username.toLowerCase();
String _query = query.toLowerCase();
String _getName = user.name.toLowerCase();
bool matchesUsername = _getUsername.contains(_query);
bool matchesName = _getName.contains(_query);

        return (matchesUsername || matchesName);
      }).toList();

return ListView.builder(
  itemCount: suggestionList.length,
  itemBuilder: ((context, index) {
    User searchedUser = User(
        uid: suggestionList[index].uid,
        profilePhoto: suggestionList[index].profilePhoto,
        name: suggestionList[index].name,
        username: suggestionList[index].username);

    return CustomTile(
      mini: false,
      onTap: () {
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) => ChatScreen(
                      receiver: searchedUser,
                    )));
      },
      leading: CircleAvatar(
        backgroundImage: NetworkImage(searchedUser.profilePhoto),
        backgroundColor: Colors.grey,
      ),
      title: Text(
        searchedUser.username,
        style: TextStyle(
          color: Colors.white,
          fontWeight: FontWeight.bold,
        ),
      ),
      subtitle: Text(
        searchedUser.name,
        style: TextStyle(color: UniversalVariables.greyColor),
      ),
    );
  }),
);

}

@OverRide
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: UniversalVariables.blackColor,
appBar: searchAppBar(context),
body: Container(
padding: EdgeInsets.symmetric(horizontal: 20),
child: buildSuggestions(query),
),
);
}
}`

How to get call duration minutes between two users ?

Hi,

Thanks for this example project with agora sdk. I want some suggestions to solve my requirements.

  1. How to get call duration in minutes between two users?
    As you are saving timestamp that is call starting time.

  2. How to make voice call ? Already i tried by disable video. But it didn't work.
    AgoraRtcEngine.disableVideo();

  3. It would be great if provide pickup layout when app is in background mode/close/kill mode.

  4. Incoming ringtone while second user is receiving a call.

Could not find the correct Provider<ImageUploadProvider> above this chat_screen Widget

this is the error i am facing

════════ Exception caught by widgets library ═══════════════════════════════════════════════════════
The following ProviderNotFoundException was thrown building MyApp(dirty, state: _MyAppState#fa1d0):
Error: Could not find the correct Provider above this MyApp Widget

This likely happens because you used a BuildContext that does not include the provider
of your choice. There are a few common scenarios:

  • The provider you are trying to read is in a different route.

    Providers are "scoped". So if you insert of provider inside a route, then
    other routes will not be able to access that provider.

  • You used a BuildContext that is an ancestor of the provider you are trying to read.

    Make sure that MyApp is under your MultiProvider/Provider.
    This usually happen when you are creating a provider and trying to read it immediatly.

    For example, instead of:

    Widget build(BuildContext context) {
      return Provider<Example>(
        create: (_) => Example(),
        // Will throw a ProviderNotFoundError, because `context` is associated
        // to the widget that is the parent of `Provider<Example>`
        child: Text(context.watch<Example>()),
      ),
    }
    

    consider using builder like so:

    Widget build(BuildContext context) {
      return Provider<Example>(
        create: (_) => Example(),
        // we use `builder` to obtain a new `BuildContext` that has access to the provider
        builer: (context) {
          // No longer throws
          return Text(context.watch<Example>()),
        }
      ),
    }
    

If none of these solutions work, consider asking for help on StackOverflow:
https://stackoverflow.com/questions/tagged/flutter

App Crashes in iOS

I was trying to add the Google-Services-Info.plist file to the application. I think that I did that correctly and it communicated with the firebase. However when I press login button on the iOS the app crashes. How can I solve this?

Url not found error message

type 'Future' is not a subtype of type 'FutureOr'

That is the error message that is coming out in the terminal.

Instead of showing a picture after I upload, it shows Url not found.

Search screen not displaying anything when I search

initially my code was working fine but after working more on the project , I got this error
[NoSuchMethodError: The method 'where' was called on null.
Receiver: null
Tried calling: where(Closure: (User) => bool)
See also:
https://flutter.dev/docs/testing/errors]

then I changed my a funtion and wrote this -
` buildSuggestions(String query) {
final List suggestionList = query.isEmpty
? []
: userList != null
? userList.where((User user) {
String _getUsername = user.username.toLowerCase();
String _query = query.toLowerCase();
String _getName = user.name.toLowerCase();
bool matchesUsername = _getUsername.contains(_query);
bool matchesName = _getName.contains(_query);

  return (matchesUsername || matchesName);

  // (User user) => (user.username.toLowerCase().contains(query.toLowerCase()) ||
  //     (user.name.toLowerCase().contains(query.toLowerCase()))),
}).toList()
    : [];`

but still the search screen doesnt display the user it used to display intially

I built the app and the message so error like this: Receiver: null

E/flutter (11754): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: NoSuchMethodError: The method '[]' was called on null.
E/flutter (11754): Receiver: null
E/flutter (11754): Tried calling:
E/flutter (11754): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:54:5)
E/flutter (11754): #1 new Users.fromMap (package:skypeclone/models/users.dart:33:23)
E/flutter (11754): #2 FirebaseMethods.getUserDetails (package:skypeclone/resources/firebasemethods.dart:31:18)
E/flutter (11754):
E/flutter (11754): #3 UserProvider.refreshUser (package:skypeclone/provider/userprovider.dart:12:19)
E/flutter (11754):
E/flutter (11754):

Issue faced in part 13 video

Hi Ronak99,

I have been facing these issues, which are "The getter 'name' was called on null. Receiver: null Tried calling: name" and same issue for the uid. The relevant widget causing this problem is the UserCircle.

Upgrade the Project to FlutterFire along with upgrading all the all dependencies

Update the code to work with new FlutterFire
I would like to upgrade all the dependencies of this project. As new FlutterFire has came so I would like to update all the firebase functions which have been deprecated or are not working.
I will not change your implementation but will update the code to work with new FlutterFire as when we add firebase_messaging it will not work as we need to add firebase_core and ultimately upgrade all libraries .
I have seen people facing problem in upgrading the project.

Pickup Screen only ends call for dialler(caller){only documents were deleted for caller not of receiver when call is being ended from receivers end **even from after picking the call**}

Pickup Screen only ends call for dialler(caller){only documents were deleted for caller not of receiver when call is being ended from receivers end even from after picking the call}
please help i need help for this o solve i followed your code but the issues are regarding recievers end as from pick up screen we can't end the call for recieiver himself also after picking and pressing the end call button call only ends for caller not for receiver [when call is being ended from receivers end]

Video Call is not initializing as Pickupscreen is showing at both screens but not dividing the screens for video call

E/RtcEngine( 5714): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference
E/RtcEngine( 5714): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference
E/RtcEngine( 5714): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference
E/RtcEngine( 5714): onEvent: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object java.util.HashMap.put(java.lang.Object, java.lang.Object)' on a null object reference

The project is OUTDATED!!!

Please upgrade all dependencies and code. Its completely outdated and really hard to implement. Please upgrade all dependencies.

Call Map fails to Map see the log .

I tried the exact same step as mentioned in the tutorial as well.

Future makeCall({Call call}) async {
try {
print("line 1" + call.callerId);
print("line 1" + call.receiverId);

  call.hasDialled = true;
  print("call.hasDialled set to true");
  Map<String, dynamic> hasDialledMap = call.toMap(call);
  print(hasDialledMap);
  call.hasDialled = false;
  print("call.hasDialled set to true");
  Map<String, dynamic> hasNotDialledMap = call.toMap(call);
  print(hasNotDialledMap);

  await Firestore.instance.collection(CALL_COLLECTION)
      .document(call.callerId)
      .setData(hasDialledMap);
  print("call object for caller has been set");
  await Firestore.instance.collection(CALL_COLLECTION)
      .document(call.receiverId)
      .setData(hasNotDialledMap);
  print("call object for receiver has been set");

  return true;
} catch (e) {
  print("madarchod firestore mein kuch problemwa hai");
  return false;
}

The same way my call.dart is :

class Call {
String callerId;
String callerName;
String receiverId;
String receiverName;
String channelId;
bool hasDialled;

Call({
this.callerId,
this.callerName,
// this.callerPic,
this.receiverId,
this.receiverName,
// this.receiverPic,
this.channelId,
this.hasDialled,
});

Map<String, dynamic> toMap(Call call) {
Map<String, dynamic> callMap = Map();
callMap["caller_id"] = call.callerId;
callMap["caller_name"] = call.callerName;
// callMap["caller_pic"] = call.callerPic;
callMap["receiver_id"] = call.receiverId;
callMap["receiver_name"] = call.receiverName;
// callMap["receiver_pic"] = call.receiverPic;
callMap["channel_id"] = call.channelId;
callMap["hasDialled"] = call.hasDialled;
}

Call.fromMap(Map callMap) {
this.callerId = callMap["caller_id"];
this.callerName = callMap["caller_name"];
// this.callerPic = callMap["caller_pic"];
this.receiverId = callMap["receiver_id"];
this.receiverName = callMap["receiver_name"];
// this.receiverPic = callMap["receiver_pic"];
this.channelId = callMap["channel_id"];
this.hasDialled = callMap["hasDialled"];
}
}

Call_utilities file:
import 'package:docapp/screens/callscreens/call_screen.dart';
import 'package:flutter/material.dart';
import 'package:docapp/resources/call_methods.dart';
import 'package:docapp/models/user.dart';
import 'package:docapp/models/call.dart';
import 'dart:math';

class CallUtils {
static final CallMethods callMethods = CallMethods();

static dial({String senderName, User from, User to, context}) async {
print("sender name is " + senderName);
print("sender uid is " + from.uid);
print("receiver uid is" + to.uid);
print("receiver name is " + to.name);

Call call = Call(
  callerId: from.uid,
  callerName: senderName,

// callerPic: from.profilePhoto,
receiverId: to.uid,
receiverName: to.name,
// receiverPic: to.profilePhoto,
channelId: Random().nextInt(1000).toString(),
);

bool callMade = await callMethods.makeCall(call: call);
if(callMade) {
  print("callMade tak gaya");
} else {
  print("call utils mein atak gaya");
}
call.hasDialled = true;

if(callMade) {
  Navigator.push(
    context,
    MaterialPageRoute(
      builder: (context) => CallScreen(call:  call),
    ));
}

}
}

the error log :
I/flutter ( 4548): sender name is abcdef
I/flutter ( 4548): sender uid is eKsPXt5Nr4bkxYFW7SPaRXL4xh23
I/flutter ( 4548): receiver uid isaLSb7ebMfsfAxybrwq21kXjkcJM2
I/flutter ( 4548): receiver name is abhishek
I/flutter ( 4548): line 1eKsPXt5Nr4bkxYFW7SPaRXL4xh23
I/flutter ( 4548): line 1aLSb7ebMfsfAxybrwq21kXjkcJM2
I/flutter ( 4548): line 1abcdef
I/flutter ( 4548): line 1abhishek
I/flutter ( 4548): call.hasDialled set to true
I/flutter ( 4548): null
I/flutter ( 4548): call.hasDialled set to true
I/flutter ( 4548): null
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): Failed to handle method call
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): java.lang.NullPointerException: Provided data must not be null.
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at b.d.c.a.j.a(:906)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at com.google.firebase.firestore.h.a(:161)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at com.google.firebase.firestore.h.a(:146)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at io.flutter.plugins.firebase.cloudfirestore.a.onMethodCall(:872)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at c.a.b.a.j$a.a(:226)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at io.flutter.embedding.engine.e.b.a(:85)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(:631)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at android.os.MessageQueue.next(MessageQueue.java:325)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at android.os.Looper.loop(Looper.java:142)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at android.app.ActivityThread.main(ActivityThread.java:6541)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
E/MethodChannel#plugins.flutter.io/cloud_firestore( 4548): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
I/flutter ( 4548): madarchod firestore mein kuch problemwa hai
I/flutter ( 4548): call utils mein atak gaya

Can't login

  • start the app
  • click on "Login" - > infinity progress

error stacktrace

[ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(sign_in_failed, com.google.android.gms.common.api.ApiException: 10: , null)
E/flutter (29515): #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
E/flutter (29515): #1 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:321:33)
E/flutter (29515):
E/flutter (29515): #2 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:349:48)
E/flutter (29515): #3 GoogleSignIn._callMethod (package:google_sign_in/google_sign_in.dart:218:23)
E/flutter (29515):
E/flutter (29515): #4 GoogleSignIn._addMethodCall (package:google_sign_in/google_sign_in.dart:257:20)
E/flutter (29515): #5 GoogleSignIn.signIn (package:google_sign_in/google_sign_in.dart:324:48)
E/flutter (29515): #6 FirebaseMethods.signIn (package:skype_clone/resources/firebase_methods.dart:44:62)
E/flutter (29515): #7 FirebaseRepository.signIn (package:skype_clone/resources/firebase_repository.dart:16:53)
E/flutter (29515): #8 LoginScreenState.performLogin (package:skype_clone/screens/login_screen.dart:62:17)
E/flutter (29515): #9 LoginScreenState.loginButton. (package:skype_clone/screens/login_screen.dart:49:26)
E/flutter (29515): #10 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:706:14)
E/flutter (29515): #11 _InkResponseState.build. (package:flutter/src/material/ink_well.dart:789:36)
E/flutter (29515): #12 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (29515): #13 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (29515): #14 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (29515): #15 BaseTapGestureRecognizer.handlePrimaryPointer (package:flutter/src/gestures/tap.dart:199:7)
E/flutter (29515): #16 PrimaryPointerGestureRecognizer.handleEvent (package:flutter/src/gestures/recognizer.dart:467:9)
E/flutter (29515): #17 PointerRouter._dispatch (package:flutter/src/gestures/pointer_router.dart:76:12)
E/flutter (29515): #18 PointerRouter._dispatchEventToRoutes. (package:flutter/src/gestures/pointer_router.dart:117:9)
E/flutter (29515): #19 _LinkedHashMapMixin.forEach (dart:collection-patch/compact_hash.dart:379:8)
E/flutter (29515): #20 PointerRouter._dispatchEventToRoutes (package:flutter/src/gestures/pointer_router.dart:115:18)
E/flutter (29515): #21 PointerRouter.route (package:flutter/src/gestures/pointer_router.dart:101:7)
E/flutter (29515): #22 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:218:19)
E/flutter (29515): #23 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (29515): #24 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (29515): #25 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (29515): #26 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (29515): #27 _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (29515): #28 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (29515): #29 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (29515): #30 _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (29515): #31 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)

Remove App ID from config,dart

Consider removing your Agora App ID from the git repo and keeping it secret. It is always best to keep your app id confidential. This is just a friendly reminder.

Chats not re-ordering on new message

On the ChatListScreen, whenever there is a new message(received or sent), the chat that has the message does not automatically relocate to the top of the list

Help

How can I add different colors for texts in sender and receiver layout as get messages() function has fixed colors for both??

Call Ended Label

I think that I am doing something wrong here. It doesn't say "Call Ended" when the call finishes on the chat screen. It doesn't say "Call Missed". So how can fix those?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.