Mega Bundle SALE is ON! Get ALL of our amazing Flutter codebases with 75% OFF discount 🔥

In the era of increasing remote interactions, the demand for integrating video calls into applications has surged. As a solution, we have a myriad of options, but today, we’ll focus on using Flutter with Twilio, a fantastic duo for this purpose. With Flutter’s efficient UI toolset and Twilio’s advanced communication features, creating a robust video calling app has never been easier. So, let’s delve into our comprehensive guide on how to implement video calls in Flutter using Twilio.


To follow along with this Flutter Twilio tutorial, you need:

  1. Basic knowledge of Dart and Flutter
  2. Flutter SDK installed
  3. An IDE of your choice (like VSCode or Android Studio)
  4. A Twilio account

Setting up the Twilio SDK

After setting up your Twilio account, you will be provided with a Twilio Account SID and Auth Token. You will also need to create an API Key and Secret, which can be done in the Twilio Console. This is crucial to the integration of Twilio with Flutter.

Starting a Flutter Project

Initiate a new Flutter project using the following command in your terminal:

flutter create video_call_app

Replace video_call_app with the name of your project.

Adding Twilio Video Package

Add the Twilio Video package in your pubspec.yaml file:

    sdk: flutter
  twilio_programmable_video: ^0.6.3

Remember to run flutter pub get in your terminal to fetch the package.

Implementing Video Calls in Flutter with Twilio

We will divide the implementation of Flutter Twilio video calls into several parts for simplicity.

Initializing Twilio

To interact with the Twilio service, we need to initialize it with our credentials. In our case, we’ll initialize Twilio in the main.dart file.

import 'package:flutter/material.dart';
import 'package:twilio_programmable_video/twilio_programmable_video.dart';

void main() {
  TwilioProgrammableVideo.debug(on: true); // Turn on for debugging

Remember to replace 'SID' and 'TOKEN' with your actual Twilio SID and Auth Token.

Connecting to Room

To make a video call, a user needs to connect to a video room. Here’s how you can do that:

try {
  final connectOptions = ConnectOptions('ROOM_NAME', //replace with room name
    accessToken: 'ACCESS_TOKEN', //replace with your access token
  room = await TwilioProgrammableVideo.connect(connectOptions);
} catch (e) {
  print('Error while connecting to room: $e');
Displaying Video

Once connected to a room, the local and remote videos can be displayed using LocalVideoTrack and RemoteVideoTrack:

final localVideoTrack = LocalVideoTrack(true, 'camera');

final localVideoWidget = LocalVideoTrackWidget(localVideoTrack);

final remoteVideoTrack = room.remoteParticipants.first.videoTracks.first;

final remoteVideoWidget = RemoteVideoTrackWidget(remoteVideoTrack);

The LocalVideoTrackWidget and RemoteVideoTrackWidget will be the Flutter widgets where the local and remote video feeds are displayed.

Disconnecting from Room

When the call is over, the user can disconnect from the room with the following code:

await room.disconnect();


In this blog post, we’ve discussed the step-by-step process of implementing video calls in Flutter using Twilio. Remember, Twilio provides an extensive range of services, and you can further enhance your Flutter Twilio app by integrating chat, voice, or even SMS services. This guide should provide you with the basic building blocks to start creating your video calling application. Enjoy building!

Note: The information provided above is intended for educational purposes only. Always remember to secure your SID and Auth Token, as they can be used to interact with your Twilio account.

Happy Fluttering with Twilio!

Disclaimer: The versions of the software used in this guide are current as of the publication date. Please make sure to check the official documentation for the updated methods or classes if you’re viewing this guide at a later time.

Categories: Flutter Tutorials

Leave a Reply

Your email address will not be published. Required fields are marked *

Shopping Cart