Making a fully functional skype clone in flutter.

Overview

Skype Clone in

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

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

Comments
  • Search screen not displaying anything when I search

    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

    opened by sharmahal 10
  • The following NoSuchMethodError was thrown during a scheduler callback:

    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) ...

    opened by prakashssp077 9
  • After Final Build App not opening

    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

    opened by pnirav996 8
  • Getting an error when tried to do search for user from database

    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

    opened by Jainish-shah 8
  • Getting an error when tried searching for user list

    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??

    bug 
    opened by PE-Jeon 5
  • How to get call duration minutes between two users ?

    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.

    opened by MaheshPeri19 3
  • 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**}

    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]

    opened by Manishmg3994 2
  • Did anyone implement the calling feature when app is closed or fone is locked ?

    Did anyone implement the calling feature when app is closed or fone is locked ?

    Hi everyone Can anybody tell me how to implement the calling feature when the app is closed or fone is locked? I've tried many methods but couldn't implement it . Please share some code if you have done this. Thanks

    opened by hasnainsaeed9692 1
  • Remove App ID from config,dart

    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.

    opened by aloysiousBenoy 1
  • Url not found error message

    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.

    opened by jeremiahseun 1
  • Call Map fails to Map see the log .

    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

    opened by rockfire1212 1
  • I built the app and the message so error like this: Receiver: null

    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):

    opened by Lorngdy68 0
  • Video Call is not initializing  as Pickupscreen is showing at both screens but not dividing the screens for video call

    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

    opened by sangamsharma6 2
  • Chats not re-ordering on new message

    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

    opened by Milimeter 0
  • Issue faced in part 13 video

    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.

    opened by AndreLiu1225 5
Owner
Ronak Punase
Ronak Punase
Cloned Skype App using Flutter & Firebase

Cloned Skype App using Flutter & Firebase

Rohit Jain 5 Aug 3, 2022
On making this project I learned using Getx to change between dark mode to light mode, learned about the time zone and schedule notification , That I have Integrated in this small app, This is the small section of making a todo app.

On making this project I learned using Getx to change between dark mode to light mode, learned about the time zone and schedule notification , That I have Integrated in this small app, This is the small section of making a todo app.

Pawan Kumar 1 Aug 22, 2022
Flutter - Making a Christmas Tree 🎄| Tween Animation | Tween Animation

flutter_christmas A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you starte

Pawan Kumar 23 Dec 23, 2021
Shopping App developed using Flutter and Dart making use of Provider, Carousel Library, Google FireStore

Shopping App developed using Flutter and Dart making use of Provider, Carousel Library, Google FireStore. It's featuring standard modern shopping app UI

Atuoha Anthony 7 Jan 3, 2023
BMI App - The personal documentation while learning Multi Provider with Flutter by making BMI Calculator app

BMI App - The personal documentation while learning Multi Provider with Flutter by making BMI Calculator app

null 0 Feb 13, 2022
This app was designed with the idea of making Cryptocurrency a more widely known and a household name using Dart

This app was designed with the idea of making Cryptocurrency a more widely known and a household name using Dart as the main programming language Flutter as the supporting framework and java as the Backend language. UI Done simply to let people buy and sell cryptocurrencies easily

Ankit Kr Ghosh 2 Aug 23, 2022
A Completed Functional Flutter App (BLoC + Json API + Unit Test + Azure Active Directory OAuth + Access Dynamic CRM Entitis)

A Completed Functional Flutter App (BLoC + Json API + Unit Test + Azure Active Directory OAuth + Access Dynamic CRM Entitis)A Completed Functional Flutter App (BLoC + Json API + Unit Test + Azure Active Directory OAuth + Access Dynamic CRM Entitis)

Ali Tazik 9 Dec 23, 2022
Whats-App-Clone-UI-using-Flutter - WhatsApp Clone UI using Flutter

WhatsApp ?? Clone UI ?? using Flutter ?? Screenshots Links My Socials Youtube ch

AmirHossein Bayat 6 Dec 7, 2022
Wordle-clone - A Wordle-clone built using Flutter

Wordle-clone The project consists of two applications : wordle_clone_api : Which

Aswin Gopinathan 2 Jan 25, 2022
Whatapp clone UI - WhatApp UI clone in flutter

whatapp clone in flutter WhatApp UI clone in flutter Getting Started

Neha Tanwar 4 Feb 6, 2022
Fashion App Clone - a clone app from Emre Altunbilek's Flutter Course

Fashion App Clone This is a clone app from Emre Altunbilek's Flutter Course. I am trying to clone UI and improve code.

Eren 5 Oct 2, 2022
Whatsapp-clone - A whatsapp clone with dart

whatsapp-clone Just a simple whatsapp clone with dart

arinzejustinng 1 Mar 28, 2022
A simple fully working weather app with state management build using flutter.

A simple fully working weather app with state management build using flutter.

null 5 Apr 12, 2022
A fully responsive BMI calculator app made using flutter and dart with beautiful minimalistic user interface design and easy to use .

BMI_Calculator_Flutter A fully responsive BMI calculator app made using flutter and dart with beautiful minimalistic user interface design and easy to

null 1 Oct 9, 2021
Udacity UI Clone made with Flutter Web (Flutter 2.0).

Udacity UI Clone Flutter Web 2.0 Description: Udacity UI Clone made with Flutter Web (Flutter 2.0). ScreenShots: Tools & languages: Android studio (ID

Benotmane Mohammed 19 Oct 13, 2022
TikTok Flutter - Clone of TikTok with Flutter and Firebase

TikTok Flutter - Clone of TikTok with Flutter and Firebase

DolceFareNiente 2 Jan 22, 2022
Building a WhatsApp Clone in Flutter.

Flutter WhatsAppClone Building a WhatsApp Clone in Flutter. Show some ❤️ and star the repo to support the project Screenshots Watch the video tutorial

Pawan Kumar 1.5k Jan 7, 2023
A WhatsApp clone build using Flutter and AWS Amplify DataStore

Whatsapp Clone using Amplify DataStore in Flutter About The Project Built With Flutter AWS Amplify DataStore Getting Started To get a local copy up an

GeekyAnts 35 Jan 4, 2023
Flutter YouTube Clone

Flutter YouTube Clone Flutter YouTube Clone with MobX State Management, Dio for REST API requests Watch: Ekran.Kaydi.2021-08-25.15.28.50.mov Connect w

Ebrar Bilgili 7 Jun 25, 2022