<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: CodingWithZohaib</title>
    <description>The latest articles on Forem by CodingWithZohaib (@zohaib521321).</description>
    <link>https://forem.com/zohaib521321</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1064432%2F259e9621-9879-4caf-8460-9f10fcd6ed60.jpeg</url>
      <title>Forem: CodingWithZohaib</title>
      <link>https://forem.com/zohaib521321</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/zohaib521321"/>
    <language>en</language>
    <item>
      <title>A Comprehensive Tutorial on Developing In-App Chat Functionality using ZEGOCLOUD and Flutter.</title>
      <dc:creator>CodingWithZohaib</dc:creator>
      <pubDate>Sat, 15 Apr 2023 12:47:40 +0000</pubDate>
      <link>https://forem.com/zohaib521321/how-to-build-in-app-chat-using-zegocloud-sdk-and-flutter-5h0g</link>
      <guid>https://forem.com/zohaib521321/how-to-build-in-app-chat-using-zegocloud-sdk-and-flutter-5h0g</guid>
      <description>&lt;p&gt;&lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;ZEGOCLOUD&lt;/a&gt; is a powerful platform that permits app builders to create actual-time video and audio calling apps readily. With ZEGOCLOUD sort of tools and software improvement kits, developers can build applications for video conferencing, online learning, and stay streaming. ZEGOCLOUD SDK lets in builders to add actual-time chat capability to their apps, allowing users to speak in actual-time thru text, voice, and video. Integrating ZEGOCLOUD SDK with Flutter is easy and easy, allowing builders to build and launch their in-app chat functionality quickly.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" alt="ZEGOCLOUD"&gt;&lt;/a&gt;&lt;br&gt;
Utilizing the &lt;code&gt;ZEGOCLOUD Flutter SDK&lt;/code&gt;, developers can without problems expand software packages that enable people to have interaction in real-time video and audio conversations, in addition to utilize stay streaming talents alongside chat capabilities. within this composition, we shall offer a detailed manual on building an &lt;a href="https://www.zegocloud.com/product/in-app-chat" rel="noopener noreferrer"&gt;In-app Chat&lt;/a&gt; with the ZEGOCLOUD Flutter SDK.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5z627rlqglyjdfxa51v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa5z627rlqglyjdfxa51v.png" alt="in-app chat"&gt;&lt;/a&gt;&lt;br&gt;
Earlier than developing &lt;code&gt;in App Chat utility&lt;/code&gt; the use of ZEGOCLOUD Flutter &lt;a href="https://www.zegocloud.com/product/in-app-chat" rel="noopener noreferrer"&gt;In-app Chat&lt;/a&gt; SDK, it's far important to collect an App identity and App sign from the ZEGOCLOUD Console. those identifiers are vital in your utility to hook up with the ZEGOCLOUD platform and make use of its audio and video streaming competencies.&lt;br&gt;
here are the steps to attain an App identification and an App sign:&lt;/p&gt;

&lt;p&gt;1.Go to the ZEGOCLOUD Console internet site &lt;a href="https://console.zegocloud.com/account/signup" rel="noopener noreferrer"&gt;Console&lt;/a&gt;&lt;br&gt;
2.Sign up for an account and input your non-public statistics.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprbkjs4b9os6enk2u6sh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprbkjs4b9os6enk2u6sh.png" alt="Signup"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.After growing an account, you'll be induced to create a assignment. click the "Create" button to create a new undertaking.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" alt="Create project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Enter a call on your venture and pick the proper place in your challenge. Then click on the "Create" button.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pynpfexickghtzkl1lv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pynpfexickghtzkl1lv.png" alt="Name"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F910q3x742xf3f0ilhj6e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F910q3x742xf3f0ilhj6e.png" alt="UiKit"&gt;&lt;/a&gt;&lt;br&gt;
5.Once your challenge is created, you may be redirected to the task dashboard.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29exigdyc3l7xvecv166.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29exigdyc3l7xvecv166.png" alt="dashboard"&gt;&lt;/a&gt;&lt;br&gt;
6.Now click on service control after which select in-app chat to allow it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfpvvpry61eb0inaje2y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsfpvvpry61eb0inaje2y.png" alt="service"&gt;&lt;/a&gt;&lt;br&gt;
7.You may see your &lt;code&gt;App id&lt;/code&gt; and &lt;code&gt;App sign&lt;/code&gt; displayed on the web page. Make a note of these values as you will want them later when configuring your app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Be aware:&lt;/strong&gt; The &lt;code&gt;App sign&lt;/code&gt; is a secret fee that should not be shared with all people. preserve it safe and secure.&lt;/p&gt;
&lt;h2&gt;
  
  
  Create the Flutter Application
&lt;/h2&gt;

&lt;p&gt;Let's move directly to creating our Flutter application:&lt;/p&gt;

&lt;p&gt;Use the command "flutter create flutter_inappchat" to build new  project.&lt;/p&gt;

&lt;p&gt;Next, we need to install &lt;a href="https://pub.dev/packages/zego_uikit_prebuilt_call" rel="noopener noreferrer"&gt;zego_uikit_prebuilt_call&lt;/a&gt;&lt;br&gt;
&lt;code&gt;flutter pub add zego_uikit_prebuilt_call&lt;/code&gt;&lt;br&gt;
Launch the project using your &lt;code&gt;IDE&lt;/code&gt;, and perform some initial adjustments to ensure that the project runs smoothly.&lt;br&gt;
Begin by accessing &lt;code&gt;android/app/build.gradle&lt;/code&gt; and making modifications to the below-listed values:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;compileSdkVersion 33&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minSdkVersion 22&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;.&lt;code&gt;targetSdkVersion 33&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" alt="build.gradle"&gt;&lt;/a&gt;&lt;br&gt;
It is necessary to specify the permissions that the application will require. This can be done by adding the permission declarations within the manifest tag in the &lt;code&gt;AndroidManifest.xml&lt;/code&gt;file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.CAMERA" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.BLUETOOTH" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WAKE_LOCK" /&amp;gt;
    &amp;lt;!-- only invitation --&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.VIBRATE"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" alt="Permission"&gt;&lt;/a&gt;&lt;br&gt;
Add the following permissions add to your Info.plist file for iOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSCameraUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) camera use&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) microphone use&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we've completed the essential configurations, we can begin writing our Dart code. To begin, you may substitute the code within the lib/main/home.dart file with the code provided below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:zego_zimkit/services/services.dart';
import 'package:zegocloud/main/dashboard_screen.dart';
class MainScreen extends StatefulWidget {
  const MainScreen({Key? key}) : super(key: key);
  @override
  State&amp;lt;MainScreen&amp;gt; createState() =&amp;gt; _MainScreenState();
}
class _MainScreenState extends State&amp;lt;MainScreen&amp;gt; {
  final TextEditingController _userIdController = TextEditingController();
  final TextEditingController _userNameController = TextEditingController();

  void changeSystemNavigationAndStatusBarColor(
      {Color navigationBarColor = Colors.white,
        Color statusBarColor = Colors.transparent,
        Brightness? statusIconBrightness = Brightness.dark,
        Brightness? navigationIconBrightness = Brightness.dark}) =&amp;gt;
      SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
        systemNavigationBarColor: navigationBarColor, // navigation bar color
        statusBarColor: statusBarColor, // status bar color
        statusBarIconBrightness: statusIconBrightness,
        systemNavigationBarIconBrightness: navigationIconBrightness,
      ));

  @override
  void initState() {
    changeSystemNavigationAndStatusBarColor();
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Container(
        width: MediaQuery.of(context).size.width,
        height: MediaQuery.of(context).size.height,
        margin: const EdgeInsets.symmetric(horizontal: 20),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ////UserName
            TextFormField(
                controller: _userNameController,
                cursorColor: const Color(0xff424242),
                decoration: InputDecoration(
                  enabledBorder: _commonBorder,
                  focusedBorder: _commonBorder,
                  border: _commonBorder,
                  filled: true,
                  hintText: 'User Name',
                  fillColor: const Color(0xFFF3F2F2),
                  contentPadding:
                  const EdgeInsets.symmetric(vertical: 17, horizontal: 15),
                )),
            const SizedBox(height: 15),
            ///User ID
            TextFormField(
                controller: _userIdController,
                cursorColor: const Color(0xff424242),
                decoration: InputDecoration(
                  enabledBorder: _commonBorder,
                  focusedBorder: _commonBorder,
                  border: _commonBorder,
                  filled: true,
                  hintText: 'User Id',
                  fillColor: const Color(0xFFF3F2F2),
                  contentPadding:
                  const EdgeInsets.symmetric(vertical: 17, horizontal: 15),
                )),
            const SizedBox(height: 15),
            _commonButton('Log in', () async {
await ZIMKit().connectUser(id: _userIdController.text,name: _userNameController.text);
              // await ZIMKit().connectUser(
              //     id: _userIdController.text, name: _userNameController.text);
              Navigator.push(
                  context,
                  MaterialPageRoute(
                      builder: (_) =&amp;gt;
                          DashBoardScreen(userId: _userIdController.text)));
            }),
          ],
        ),
      ),
    );
  }

  _commonButton(String btnName, VoidCallback onTap) {
    return ElevatedButton(
        onPressed: onTap,
        style: ElevatedButton.styleFrom(
            backgroundColor: const Color(0xff0155FE),
            shape:
            RoundedRectangleBorder(borderRadius: BorderRadius.circular(8)),
            padding: const EdgeInsets.symmetric(horizontal: 30, vertical: 10)),
        child: Text(
          btnName,
          style: const TextStyle(color: Colors.white, fontSize: 18),
        ));
  }

  get _commonBorder =&amp;gt; OutlineInputBorder(
    borderRadius: const BorderRadius.all(Radius.circular(12)),
    borderSide: BorderSide(
        color: const Color(0xff424242).withOpacity(0.4), width: 2),
  );
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you may substitute the code within the &lt;code&gt;lib/main/dashboard_screen.dart&lt;/code&gt;file with the code provided below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'package:zego_zimkit/compnents/compnents.dart';
import 'package:zego_zimkit/pages/pages.dart';
import 'package:zegocloud/main/ChatPopUpOptions.dart';
class DashBoardScreen extends StatefulWidget {
  final String userId;
  const DashBoardScreen({Key? key, required this.userId}) : super(key: key);
  @override
  State&amp;lt;DashBoardScreen&amp;gt; createState() =&amp;gt; _DashBoardScreenState();
}

class _DashBoardScreenState extends State&amp;lt;DashBoardScreen&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      appBar: AppBar(
        backgroundColor: const Color(0xff0155FE),
        elevation: 0,
        title: const Text('Chat and Groups'),
        actions: const [ChatPopUpOptions()],  ///Implimentation in new file
      ),
      body: Column(
        children: [
          _upperSection(),
          _chatAndGroupsVisibleSection(),
        ],
      ),
    );
  }

  _upperSection() {
    return InkWell(
      onTap: () {

      },
      child: Container(
        width: MediaQuery.of(context).size.width,
        height: 60,
        alignment: Alignment.center,
        child: Text(
          'User Id: ${widget.userId}',
          style: const TextStyle(fontSize: 16),
        ),
      ),
    );
  }

  _chatAndGroupsVisibleSection() {
    return Expanded(child: ZIMKitConversationListView(
      onPressed: (context, conversation, defaultAction) {
        Navigator.push(
            context,
            MaterialPageRoute(
                builder: (_) =&amp;gt; ZIMKitMessageListPage(
                    conversationID: conversation.id,
                    conversationType: conversation.type)));
      },
    ));
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you may substitute the code within the lib/main/ChatPopUpOptions.dart file with the code provided below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:zego_zimkit/zego_zimkit.dart';
class ChatPopUpOptions extends StatefulWidget {
  const ChatPopUpOptions({Key? key}) : super(key: key);

  @override
  State&amp;lt;ChatPopUpOptions&amp;gt; createState() =&amp;gt; _ChatPopUpOptionsState();
}

class _ChatPopUpOptionsState extends State&amp;lt;ChatPopUpOptions&amp;gt; {
  @override
  Widget build(BuildContext context) {
    return PopupMenuButton(
      shape: const RoundedRectangleBorder(
          borderRadius: BorderRadius.all(Radius.circular(15))),
      position: PopupMenuPosition.under,
      icon: const Icon(Icons.more_vert_rounded),
      itemBuilder: (context) {
        return [
          PopupMenuItem(
            value: 'New Chat',
            child: const ListTile(
              leading: Icon(CupertinoIcons.chat_bubble_2_fill),
              title: Text('Create New Chat', maxLines: 1,),
            ),
            onTap: (){
              ZIMKit().showDefaultNewPeerChatDialog(context);
            },
          ), PopupMenuItem(
            value: 'Create New Group',
            child: const ListTile(
              leading: Icon(CupertinoIcons.group_solid),
              title: Text('Create New Group', maxLines: 1,),
            ),
            onTap: (){
              ZIMKit().showDefaultNewGroupChatDialog(context);
            },
          ), PopupMenuItem(
            value: 'Join New Group',
            child: const ListTile(
              leading: Icon(Icons.group_add),
              title: Text('Join New Group', maxLines: 1,),
            ),
            onTap: (){
              ZIMKit().showDefaultJoinGroupDialog(context);
            },
          ),
        ];
      },
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As soon as you've got configured the required settings correctly, you must be capable of start a &lt;strong&gt;in-app chat&lt;/strong&gt; app using the provided code.&lt;/p&gt;

&lt;h2&gt;
  
  
  conclusion
&lt;/h2&gt;

&lt;p&gt;In short, we've obtained information on growing an in-app messaging software the use of the &lt;code&gt;ZEGOCLOUD Flutter SDK&lt;/code&gt;. The system entailed acquiring an&lt;code&gt;AppID and AppSign&lt;/code&gt; from the &lt;code&gt;ZEGOCLOUD Console&lt;/code&gt;, granting us get admission to to its audio and video streaming competencies. in the end, we generated a Flutter software and integrated crucial dependencies. in the end, we executed the in-app messaging characteristic with Dart language by means of initializing the SDK, becoming a member of a digital area, and publishing or subscribing to a transmission. Adhering to these steps, you may manufacture your personal in-app messaging software program utilising the ZEGOCLOUD Flutter SDK.&lt;br&gt;
&lt;a href="https://bit.ly/3UgdPv9" rel="noopener noreferrer"&gt;Sign up for 10,000 free mins&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.ly/3nRyoBR" rel="noopener noreferrer"&gt;Find out more about ZEGOCLOUD &lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>zegocloud</category>
      <category>inappchat</category>
    </item>
    <item>
      <title>Mastering the Art of Live Streaming with ZEGOClOUD SDK and Flutter</title>
      <dc:creator>CodingWithZohaib</dc:creator>
      <pubDate>Sat, 15 Apr 2023 10:00:17 +0000</pubDate>
      <link>https://forem.com/zohaib521321/how-to-build-a-live-streaming-app-using-zegocloud-sdk-and-flutter-53d5</link>
      <guid>https://forem.com/zohaib521321/how-to-build-a-live-streaming-app-using-zegocloud-sdk-and-flutter-53d5</guid>
      <description>&lt;p&gt;&lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;ZEGOCLOUD&lt;/a&gt; is a real-time audio and video conversation platform that offers developers with the equipment they want to build audio and video communique programs, consisting of video name apps, live streaming apps, and on line training apps. ZEGOCLOUD offers a ramification of equipment and assets which can assist builders save money and time whilst constructing real-time audio and video verbal exchange packages.&lt;br&gt;
ZEGOCLOUD uses the brand new era to deliver  audio and video. ZEGOCLOUD can be scaled to meet the wishes of any application, so that you can reach more customers with your real-time audio and video communique packages.&lt;br&gt;
ZEGOCLOUD offers numerous software improvement kits (SDKs) for several programming languages such as Java, Python, and Flutter. The Flutter SDK is specifically designed to facilitate the creation of high-overall performance audio and video communique packages that can run seamlessly on cell devices.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" alt="ZEGOCLOUD"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using the ZEGOCLOUD Flutter SDK, builders can without difficulty build audio and video call apps with chat and stay streaming features. In this article, we can stroll via the procedure of constructing a &lt;a href="https://www.zegocloud.com/product/live-streaming" rel="noopener noreferrer"&gt;Live Streaming app&lt;/a&gt; using the ZEGOCLOUD Flutter SDK. the use of the ZEGOCLOUD Flutter SDK.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafdc8tm33h0ff7i71bmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fafdc8tm33h0ff7i71bmg.png" alt="Live Streaming"&gt;&lt;/a&gt;&lt;br&gt;
Before creating stay Streaming software using ZEGOCLOUD Flutter stay Streaming SDK, it is essential to accumulate an App id and App signal from the ZEGOCLOUD Console. these identifiers are vital in your application to connect with the ZEGOCLOUD platform and utilize its audio and video streaming talents.&lt;br&gt;
here are the stairs to obtain your &lt;code&gt;AppID and AppSign&lt;/code&gt; from the ZEGOCLOUD Console:&lt;/p&gt;

&lt;p&gt;1.Go to the ZEGOCLOUD &lt;code&gt;Console&lt;/code&gt; website &lt;a href="https://console.zegocloud.com/account/signup" rel="noopener noreferrer"&gt;Console&lt;/a&gt;&lt;br&gt;
2.sign on for an account and input your personal facts.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprbkjs4b9os6enk2u6sh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fprbkjs4b9os6enk2u6sh.png" alt="Signup"&gt;&lt;/a&gt;&lt;br&gt;
3.After developing an account, you'll be caused to create a venture. click the "Create" button to create a new assignment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" alt="Create project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Enter a call on your mission and select the right vicinity to your task. Then click on the "Create" button.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pynpfexickghtzkl1lv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pynpfexickghtzkl1lv.png" alt="Name"&gt;&lt;/a&gt;&lt;br&gt;
5.Once your challenge is created, you will be redirected to the mission dashboard.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29exigdyc3l7xvecv166.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F29exigdyc3l7xvecv166.png" alt="dashboard"&gt;&lt;/a&gt;&lt;br&gt;
6.You will see your &lt;code&gt;AppID&lt;/code&gt; and &lt;code&gt;AppSign&lt;/code&gt; displayed on the web page. Make a note of those values as you'll need them later when configuring your app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observe&lt;/strong&gt;: The &lt;code&gt;App sign&lt;/code&gt; is a mystery value that need to now not be shared with every person. hold it safe and at ease.&lt;/p&gt;
&lt;h2&gt;
  
  
  Generate the Flutter Application
&lt;/h2&gt;

&lt;p&gt;Let's move on to creating our Flutter application:&lt;/p&gt;

&lt;p&gt;Use the command "flutter create flutter_LiveStreaming" to create the project.&lt;/p&gt;

&lt;p&gt;Next, we need to install &lt;a href="https://pub.dev/packages/zego_uikit_prebuilt_call" rel="noopener noreferrer"&gt;zego_uikit_prebuilt_call&lt;/a&gt;&lt;br&gt;
&lt;code&gt;flutter pub add zego_uikit_prebuilt_call&lt;/code&gt;&lt;br&gt;
Release the challenge the use of your &lt;code&gt;IDE&lt;/code&gt;, and carry out a few initial adjustments to make sure that the assignment runs smoothly.&lt;br&gt;
Begin by accessing &lt;code&gt;android/app/build.gradle&lt;/code&gt; and making modifications to the below-listed values:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;compileSdkVersion 33&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minSdkVersion 22&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.&lt;code&gt;targetSdkVersion 33&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" alt="build.gradle"&gt;&lt;/a&gt;&lt;br&gt;
It is necessary to specify the permissions that the application will require. this can be carried out by including the permission declarations within the show up tag within the &lt;code&gt;AndroidManifest.xml&lt;/code&gt;file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.CAMERA" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.BLUETOOTH" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&amp;gt;    
&amp;lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&amp;gt;
&amp;lt;uses-permission android:name="android.permission.WAKE_LOCK"/&amp;gt;
&amp;lt;uses-permission android:name="android.permission.VIBRATE"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" alt="Permission"&gt;&lt;/a&gt;&lt;br&gt;
Add the following permissions upload in your info.plist report for iOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSCameraUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) camera use&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) microphone use&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we've completed the vital configurations, we can begin writing our Dart code. to start, you may alternative the code in the &lt;code&gt;lib/main/home.dart&lt;/code&gt; document with the code supplied underneath:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:zego_zimkit/zego_zimkit.dart';
import 'package:zegocloud/inApp_chat/main_screen.dart';
final String userID=math.Random().nextInt(1000).toString();
void main() async{
await ZIMKit().init(appID: Utils.appID,appSign: Utils.appsign);
WidgetsFlutterBinding.ensureInitialized();
  // await ZIMKit().init(appID:Utils.appID, appSign: Utils.appsign);
  // WidgetsFlutterBinding.ensureInitialized();
  runApp(const MyApp());
}
class MyApp extends StatelessWidget{
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:  HomeScreen(),
    );
  }
}
class HomeScreen extends StatefulWidget {
  const HomeScreen({Key? key}) : super(key: key);
  @override
  State&amp;lt;HomeScreen&amp;gt; createState() =&amp;gt; _HomeScreenState();
}
class _HomeScreenState extends State&amp;lt;HomeScreen&amp;gt; {
  // Generate Live Streaming ID with 6 digit length
  final liveIDController = TextEditingController(
    text: '1111',
  );
  // Generate userID with 6 digit length
  final String userID = Random().nextInt(900000 + 100000).toString();
  @override
  Widget build(BuildContext context) {
    var buttonStyle = ElevatedButton.styleFrom(
      backgroundColor: const Color(0xff034ada),
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(10),
      ),
    );

    return Scaffold(
      body: Padding(
        padding: const EdgeInsets.symmetric(
          horizontal: 24,
        ),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const SizedBox(
              height: 20,
            ),
            Text('Your UserID: $userID'),
            const Text('Please test with two or more devices'),
            const SizedBox(
              height: 30,
            ),
            TextFormField(
              controller: liveIDController,
              decoration: const InputDecoration(
                labelText: 'Join or Start a Live by Input an ID',
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.all(
                    Radius.circular(10),
                  ),
                ),
              ),
            ),
            const SizedBox(
              height: 20,
            ),
            ElevatedButton(
              style: buttonStyle,
              child: const Text('Start a Live'),
              onPressed:(){
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) =&amp;gt; LiveScreenView(
                      liveID: liveIDController.text,
                      isHost: true, userID:"$userID",
                    ),
                  ),
                );
              },
            ),
            const SizedBox(
              height: 16,
            ),
            ElevatedButton(
                style: buttonStyle,
                child: const Text('Join a Live'),
                onPressed: () {
                  Navigator.push(
                    context,
                    MaterialPageRoute(
                      builder: (context) =&amp;gt; LiveScreenView(
                        liveID: liveIDController.text,
                        isHost: false,
                        userID: '$userID',
                      ),
                    ),
                  );
                }
            )
          ],
        ),
      ),
    );
  }

}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import 'dart:math';
import 'package:zego_uikit_prebuilt_live_streaming/zego_uikit_prebuilt_live_streaming.dart';
import 'package:zegocloud/main/utils.dart';
// Live Page Prebuilt UI from ZEGOCLOUD UIKits
class LiveScreenView extends StatelessWidget {
  final String liveID , userID;
  final bool isHost;
  LiveScreenView({
    super.key,
    required this.liveID,
    this.isHost = false,
    required this.userID
  });
  // Add your app id here and app sign in
  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: ZegoUIKitPrebuiltLiveStreaming(
        appID: Utils.appID,
        appSign: Utils.appsign,
        userID: userID,
        userName: 'user_$userID',
        liveID: liveID,
        config: isHost
            ? ZegoUIKitPrebuiltLiveStreamingConfig.host()
            : ZegoUIKitPrebuiltLiveStreamingConfig.audience()
          ..audioVideoViewConfig.showAvatarInAudioMode = true
          ..audioVideoViewConfig.showSoundWavesInAudioMode = true,
      ),
    );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As soon as you have got configured the specified settings efficiently, you have to be capable of begin a *&lt;em&gt;live Streaming *&lt;/em&gt; app the use of the furnished code.&lt;/p&gt;

&lt;h2&gt;
  
  
  End
&lt;/h2&gt;

&lt;p&gt;In precis, we've got discovered the way to expand a stay streaming utility utilizing the ZEGOCLOUD Flutter SDK. The process involved acquiring an &lt;code&gt;AppID and AppSign&lt;/code&gt; from the ZEGOCLOUD Console, which allowed us to connect with the ZEGOCLOUD platform and leverage its audio and video streaming skills. We created a Flutter software and included the important dependencies. ultimately, we implemented the &lt;code&gt;stay streaming&lt;/code&gt; capability thru Dart code, which includes initializing the SDK, connecting to a digital area, and publishing or subscribing to a transmission. with the aid of following these steps, you could create your very own &lt;code&gt;stay streaming application&lt;/code&gt; the use of the ZEGOCLOUD Flutter SDK.&lt;br&gt;
&lt;a href="https://bit.ly/3UgdPv9" rel="noopener noreferrer"&gt;Sign up for 10,000 free mins&lt;/a&gt; &lt;br&gt;
&lt;a href="https://bit.ly/3nRyoBR" rel="noopener noreferrer"&gt;Find out more about ZEGOCLOUD &lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>zegocloud</category>
      <category>livestreaming</category>
    </item>
    <item>
      <title>Optimizing Group Calling Experience with ZEGOCLOUD SDK in flutter</title>
      <dc:creator>CodingWithZohaib</dc:creator>
      <pubDate>Fri, 14 Apr 2023 17:27:58 +0000</pubDate>
      <link>https://forem.com/zohaib521321/how-to-build-a-group-calling-app-using-zegocloud-sdk-and-flutter-nh5</link>
      <guid>https://forem.com/zohaib521321/how-to-build-a-group-calling-app-using-zegocloud-sdk-and-flutter-nh5</guid>
      <description>&lt;p&gt;&lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;ZEGOCLOUD&lt;/a&gt; is a cloud-based totally platform that offers builders with the gear they want to build actual-time audio and video verbal exchange applications. The platform offers a ramification of features, which include SDKs, APIs, and documentation, that make it easy to create  audio and video packages. it's far used by a spread of corporations and agencies, inclusive of video conferencing agencies, live streaming structures, and online schooling vendors.&lt;br&gt;
ZEGOCLOUD is used by video conferencing groups to provide video conferencing services to their users.&lt;br&gt;
ZEGOCLOUD presents a broad variety of software program improvement kits (SDKs) catering to exceptional programming languages, like Java, Python, and Flutter. specially, the &lt;code&gt;Flutter SDK&lt;/code&gt; stands proud for its great suitability in designing and constructing high-overall performance audio and video verbal exchange apps for mobile gadgets. Its characteristic-wealthy toolkit empowers builders to create apps with no trouble and efficiency.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" alt="ZEGOCLOUD"&gt;&lt;/a&gt;&lt;br&gt;
the usage of the ZEGOCLOUD Flutter SDK, developers can easily build group calling apps &lt;a href="https://medical%20doctors.zegocloud.com/article/14728" rel="noopener noreferrer"&gt; How to make Group calling apps with flutter&lt;/a&gt;. In this newsletter, we are able to walk through the manner of constructing a group calling app the use of the ZEGOCLOUD Flutter SDK.&lt;br&gt;
The ZEGOCLOUD Flutter SDK presents a handy manner for builders to construct organization calling programs. to illustrate this, we have prepared a tutorial on constructing a collection calling app with the ZEGOCLOUD Flutter SDK, which may be discovered right here: &lt;a href="https://medical%20doctors.zegocloud.com/article/14728" rel="noopener noreferrer"&gt; How to make Group calling apps with flutter&lt;/a&gt;. the academic outlines the step-by means of-step procedure of using the ZEGOCLOUD Flutter SDK to create a &lt;code&gt;organization calling app&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2p2wk6vqwt3flsdeo7ak.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2p2wk6vqwt3flsdeo7ak.png" alt="Group calling"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so as to broaden a set calling application the use of the ZEGOCLOUD flutter &lt;a href="https://medical%20doctors.zegocloud.com/article/14728" rel="noopener noreferrer"&gt; Group Calling SDK&lt;/a&gt;, it is vital to acquire an App identification and App signal from the ZEGOCLOUD Console. those are wonderful identifiers that provide your software access to audio and video communication abilities and permit it to connect with the ZEGOCLOUD platform.&lt;/p&gt;

&lt;p&gt;Right here are the steps to attain  &lt;strong&gt;AppID and AppSign&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;1.Navigate to the ZEGOCLOUD Console internet site &lt;a href="https://console.zegocloud.com/account/signup" rel="noopener noreferrer"&gt;Console&lt;/a&gt;.&lt;br&gt;
2.register for an account via providing your non-public info.&lt;/p&gt;

&lt;p&gt;3.After registering, you will be prompted to create a brand new mission. click the "Create" button to continue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" alt="Create project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;four.name your mission and select the ideal place. later on, hit the "Create" button to verify.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pynpfexickghtzkl1lv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4pynpfexickghtzkl1lv.png" alt="Name"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;four.you will be taken to the &lt;code&gt;venture dashboard&lt;/code&gt; once your mission has been created.&lt;/p&gt;

&lt;p&gt;5.Your &lt;code&gt;AppID and AppSign&lt;/code&gt; will be proven on the web page. Please maintain a file of those values as you may require them whilst setting up your app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observe:&lt;/strong&gt; Your &lt;code&gt;App sign&lt;/code&gt; is a confidential value that have to be saved at ease and no longer shared with all people.&lt;/p&gt;
&lt;h2&gt;
  
  
  Putting in place the Flutter application
&lt;/h2&gt;

&lt;p&gt;Allow get began by means of putting in our Flutter utility:&lt;/p&gt;

&lt;p&gt;Create the project by way of executing the "flutter create flutter_GroupCall" command.&lt;/p&gt;

&lt;p&gt;Next, we need to install &lt;a href="https://pub.dev/programs/zego_uikit_prebuilt_call" rel="noopener noreferrer"&gt;zego_uikit_prebuilt_call&lt;/a&gt;&lt;br&gt;
&lt;code&gt;flutter pub add zego_uikit_prebuilt_call&lt;/code&gt;&lt;br&gt;
launch the assignment the use of your &lt;code&gt;IDE&lt;/code&gt;, and perform a few preliminary modifications to make certain that the assignment runs smoothly.&lt;br&gt;
begin by gaining access to &lt;code&gt;android/app/build.gradle&lt;/code&gt; and making adjustments to the under-listed values:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;compileSdkVersion 33&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minSdkVersion 22&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.&lt;code&gt;targetSdkVersion 33&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" alt="build.gradle"&gt;&lt;/a&gt;&lt;br&gt;
It's far vital to specify the permissions that the application would require. this may be accomplished by adding the permission declarations inside the show up tag within the &lt;code&gt;AndroidManifest.xml&lt;/code&gt;record:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.CAMERA" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.BLUETOOTH" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WAKE_LOCK" /&amp;gt;
    &amp;lt;!-- only invitation --&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.VIBRATE"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" alt="Permission"&gt;&lt;/a&gt;&lt;br&gt;
Upload the subsequent permissions add to your info.plist file for iOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSCameraUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) camera use&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) microphone use&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we've finished the vital configurations, we will start writing our Dart code. to start, you may substitute the code in the lib/main.dart record with the code supplied underneath:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import'package:zego_uikit_prebuilt_call/zego_uikit_prebuilt_call.dart';
import 'dart:math' as math;
final String userID=math.Random().nextInt(1000).toString();
void main() {

  runApp(const MyApp());
}
class MyApp extends StatelessWidget{
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:  Groupcalling(),
    );
  }
}
class Groupcalling extends StatefulWidget {
  @override
  State&amp;lt;Groupcalling&amp;gt; createState() =&amp;gt; _GroupcallingState();
}
class _GroupcallingState extends State&amp;lt;Groupcalling&amp;gt; {
final _controller=TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("ZEGOCLOUD Group Calling"),
          centerTitle: true,
        ),
        body:Column(
          children: [
            TextFormField(
              controller: _controller,
              decoration: InputDecoration(
                labelText: "Enter UId"
              ),

            ),
            ElevatedButton(onPressed: (){
Navigator.push(context, MaterialPageRoute(builder: (builder)=&amp;gt;cllingId(CallingId: _controller.text.toString())));
            }, child: Text("Join")),
          ],
        )
    );
  }
}
class cllingId extends StatelessWidget {
  final String CallingId;
  const cllingId({required this.CallingId});
  @override
  Widget build(BuildContext context) {
    return SafeArea(child: ZegoUIKitPrebuiltCall(appID: appID,
      appSign: appsign,
      callID: CallingId,
      userID: userID,
      userName:"user_$userID" ,
      config: ZegoUIKitPrebuiltCallConfig.groupVideoCall()..onOnlySelfInRoom=(context){
      Navigator.pop(context);
      },
    ));
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you've got configured the specified settings efficaciously, you need to be capable of begin a &lt;strong&gt;group calling&lt;/strong&gt; using the provided code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;ZEGOCLOUD Flutter SDK. This involved obtaining an &lt;code&gt;App ID and App Sign&lt;/code&gt; from the ZEGOCLOUD Console, which allowed us to connect to the platform and access its audio and video communication features. Subsequently, we created a Flutter application and integrated the required dependencies. Finally, we implemented the &lt;code&gt;Group calling functionality&lt;/code&gt; by using Dart code to initialize the SDK, join a room, and publish or subscribe to a stream. By following these procedures, you can develop your Group calling app using the ZEGOCLOUD Flutter SDK.&lt;br&gt;
&lt;a href="https://bit.ly/3UgdPv9" rel="noopener noreferrer"&gt;Sign up for 10,000 free mins&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/3nRyoBR" rel="noopener noreferrer"&gt;Find out more about ZEGOCLOUD &lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>zegocloud</category>
      <category>groupcalling</category>
    </item>
    <item>
      <title>Creating an Audio Call App with ZEGOClOUD SDK and Flutter: Step-by-Step Guide</title>
      <dc:creator>CodingWithZohaib</dc:creator>
      <pubDate>Fri, 14 Apr 2023 06:15:58 +0000</pubDate>
      <link>https://forem.com/zohaib521321/how-to-build-a-audio-call-app-using-zegocloud-sdk-and-flutter-5dc4</link>
      <guid>https://forem.com/zohaib521321/how-to-build-a-audio-call-app-using-zegocloud-sdk-and-flutter-5dc4</guid>
      <description>&lt;p&gt;&lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;ZEGOCLOUD&lt;/a&gt; is a cloud-based totally platform that gives builders with the tools they want to build real-time audio and video verbal exchange applications. The platform gives a selection of capabilities, including SDKs, APIs, and documentation, that make it clean to create  audio and video applications. ZEGOCLOUD is used by a selection of groups and groups, which includes video conferencing corporations, stay streaming systems, and online schooling providers.&lt;br&gt;
ZEGOCLOUD uses the modern day generation to deliver  audio and video calling.&lt;br&gt;
ZEGOCLOUD affords a numerous selection of development kits for software program introduction, appropriate for numerous programming languages.The &lt;strong&gt;Flutter SDK&lt;/strong&gt; has been tailor-made to beautify the improvement of audio and video communique packages on mobile devices, delivering a comprehensive and dependable collection of tools to assist builders.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkaaeydn3lhaq02g35gea.png" alt="ZEGOCLOUD"&gt;&lt;/a&gt;&lt;br&gt;
With the ZEGOCLOUD Flutter SDK, developers have a powerful set of equipment to create audio calling apps learn &lt;a href="https://www.zegocloud.com/product/voice-call" rel="noopener noreferrer"&gt;how to create an audio call app&lt;/a&gt; with Flutter right here. on this tutorial, we are able to guide you through the method of building an audio call app the usage of the ZEGOCLOUD Flutter SDK.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3me6yim9nqx04zorilyq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3me6yim9nqx04zorilyq.png" alt="Voice call"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym91voa2pzi2bo77dlwq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fym91voa2pzi2bo77dlwq.png" alt="audio Call SDK"&gt;&lt;/a&gt;&lt;br&gt;
To increase an audio call utility with ZEGOCLOUD Flutter SDK, you need to first gather  App ID and App Sign from the ZEGOCLOUD Console. those identifiers are essential on your app to set up a reference to the ZEGOCLOUD platform and access its audio and video communication functionalities.&lt;br&gt;
Follow these steps to obtain  App ID and an App Sign:&lt;br&gt;
1.get entry to the ZEGOCLOUD Console internet site &lt;a href="https://console.zegocloud.com/account/signup" rel="noopener noreferrer"&gt;Console&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;2.sign up for an account with the aid of offering your personal info.&lt;/p&gt;

&lt;p&gt;3.After registering, you may be precipitated to create a new venture. click at the "Create" button to begin.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fww5gq6pftkiwlu6pqq15.png" alt="Create project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.supply your task a call and select an appropriate area. Then, click at the "Create" button to continue.&lt;/p&gt;

&lt;p&gt;5.As soon as your undertaking is created, you will be taken to the task dashboard&lt;/p&gt;

&lt;p&gt;Note: The &lt;code&gt;App Sign&lt;/code&gt; is a confidential value that should not be disclosed to others. Ensure it is kept safe and secure.&lt;/p&gt;
&lt;h2&gt;
  
  
  Constructing the Flutter App
&lt;/h2&gt;

&lt;p&gt;Now allow create the Flutter utility:&lt;/p&gt;

&lt;p&gt;To create the project, use the command "flutter create flutter_AudioCall".&lt;/p&gt;

&lt;p&gt;After creating the project, we need to install the &lt;a href="https://pub.dev/packages/zego_uikit_prebuilt_call" rel="noopener noreferrer"&gt;zego_uikit_prebuilt_call&lt;/a&gt;&lt;br&gt;
  using the command &lt;code&gt;flutter pub add zego_uikit_prebuilt_call&lt;/code&gt;.&lt;br&gt;
Launch your preferred IDE and make necessary adjustments to ensure the smooth functioning of the project. Access &lt;code&gt;android/app/build.gradle&lt;/code&gt; and modify the below-listed values:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;code&gt;compileSdkVersion 33&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minSdkVersion 22&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.&lt;code&gt;targetSdkVersion 33&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6b72bvw68aeur7ii2i3.png" alt="build.gradle"&gt;&lt;/a&gt;&lt;br&gt;
it is necessary to specify the permissions that the application would require. this can be executed with the aid of adding the permission declarations in the occur tag within the &lt;code&gt;AndroidManifest.xml&lt;/code&gt;file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.CAMERA" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.BLUETOOTH" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WAKE_LOCK" /&amp;gt;
    &amp;lt;!-- only invitation --&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.VIBRATE"/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhg6l0jp5sl94lwqiel9o.png" alt="Permission"&gt;&lt;/a&gt;&lt;br&gt;
To enable the required functionality on IOS, please ensure that the following permissions have been added to your Info.plist file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSCameraUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) camera use&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) microphone use&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we've completed the essential configurations, we can begin writing our Dart code. To begin, you may substitute the code within the lib/main.dart file with the code provided below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import'package:zego_uikit_prebuilt_call/zego_uikit_prebuilt_call.dart';
import 'dart:math' as math;
final String userID=math.Random().nextInt(1000).toString();
void main() {

  runApp(const MyApp());
}
class MyApp extends StatelessWidget{
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:  Audiocalling(),
    );
  }
}
class Audiocalling extends StatefulWidget {
  @override
  State&amp;lt;Audiocalling&amp;gt; createState() =&amp;gt; _AudiocallingState();
}
class _AudiocallingState extends State&amp;lt;Audiocalling&amp;gt; {
final _controller=TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("ZEGOCLOUD Audio Calling"),
          centerTitle: true,
        ),
        body:Column(
          children: [
            TextFormField(
              controller: _controller,
              decoration: InputDecoration(
                labelText: "Enter UId"
              ),

            ),
            ElevatedButton(onPressed: (){
Navigator.push(context, MaterialPageRoute(builder: (builder)=&amp;gt;cllingId(CallingId: _controller.text.toString())));
            }, child: Text("Join")),
          ],
        )
    );
  }
}
class cllingId extends StatelessWidget {
  final String CallingId;
  const cllingId({required this.CallingId});
  @override
  Widget build(BuildContext context) {
    return SafeArea(child: ZegoUIKitPrebuiltCall(appID: appID,
      appSign: appsign,
      callID: CallingId,
      userID: userID,
      userName:"user_$userID" ,
      config: ZegoUIKitPrebuiltCallConfig.oneOnOneVoiceCall()..onOnlySelfInRoom=(context){
      Navigator.pop(context);
      },

    ));
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once you have got configured the required settings efficiently, you must be able to begin a Audio name using the software. to start, update the code in the &lt;code&gt;lib/important.dart&lt;/code&gt; record with the code snippet provided.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To summarize, we have comprehended the manner of growing an audio name software making use of the ZEGOCLOUD Flutter SDK. The technique entailed acquiring an App id and App sign from the ZegoCloud Console, granting us access to the ZegoCloud platform and its audio and video conversation features. We then designed a Flutter application and integrated the necessary dependencies. in the long run, we carried out &lt;code&gt;Audio call&lt;/code&gt; functionality via Dart code, which concerned initializing the SDK, joining a room, and publishing or subscribing to a stream. &lt;br&gt;
&lt;a href="https://bit.ly/3UgdPv9" rel="noopener noreferrer"&gt;Sign up for 10,000 free mins&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://bit.ly/3nRyoBR" rel="noopener noreferrer"&gt;Find out more about ZEGOCLOUD &lt;/a&gt;  &lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>zegocloud</category>
      <category>audiocall</category>
    </item>
    <item>
      <title>How to Build a Video Call App Using ZEGOCLOUD SDK and Flutter</title>
      <dc:creator>CodingWithZohaib</dc:creator>
      <pubDate>Thu, 13 Apr 2023 19:42:02 +0000</pubDate>
      <link>https://forem.com/zohaib521321/how-to-build-a-video-call-app-using-zegocloud-sdk-and-flutter-2a5e</link>
      <guid>https://forem.com/zohaib521321/how-to-build-a-video-call-app-using-zegocloud-sdk-and-flutter-2a5e</guid>
      <description>&lt;p&gt;&lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;ZEGOCLOUD&lt;/a&gt; is a real-time audio and video communication cloud platform that provides SDKs and APIs for developers to build audio and video communication applications such as video call apps, live streaming apps, online education apps, and more. &lt;/p&gt;

&lt;p&gt;ZEGOCLOUD provides a range of SDKs for different programming languages, including Java, Python, and Flutter. The Flutter SDK is specifically designed for building audio and video communication apps for mobile devices.&lt;/p&gt;

&lt;p&gt;Using the ZEGOCLOUD Flutter SDK, developers can easily build video call apps&lt;a href="https://www.zegocloud.com/blog/flutter-callkit" rel="noopener noreferrer"&gt; How to make video call apps with flutter&lt;/a&gt;. In this article, we will walk through the process of building a video call app using the ZEGOCLOUD Flutter SDK.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbr2yhga773bimumviq30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbr2yhga773bimumviq30.png" alt="ZEGOCLOUD"&gt;&lt;/a&gt;&lt;br&gt;
Before building a video call app using the ZEGOCLOUD flutter &lt;a href="https://www.zegocloud.com/product/video-call" rel="noopener noreferrer"&gt;video Call SDK&lt;/a&gt;, you need to obtain an App ID and an App Sign from the ZEGOCLOUD Console. These are unique identifiers that allow your app to connect to the ZEGOCLOUD platform and access its audio and video communication features.&lt;br&gt;
Here are the steps to obtain an App ID and an App Sign:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to the ZEGOCLOUD Console website &lt;a href="https://console.zegocloud.com/account/signup" rel="noopener noreferrer"&gt;Console&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.Create an account by entering your personal information.&lt;/p&gt;

&lt;p&gt;3.After creating an account, you will be prompted to create a project. Click the "Create" button to create a new project.&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugb7dl7bs7p13lb15sp7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fugb7dl7bs7p13lb15sp7.png" alt="Create New Project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Enter a name for your project and select the appropriate region for your project. Then click the "Create" button. &lt;/p&gt;

&lt;p&gt;4.Once your project is created, you will be redirected to the project dashboard. &lt;/p&gt;

&lt;p&gt;5.You will see your &lt;strong&gt;App ID&lt;/strong&gt; and &lt;strong&gt;App Sign&lt;/strong&gt; displayed on the page. Make a note of these values as you will need them later when configuring your app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The &lt;strong&gt;App Sign&lt;/strong&gt; is a secret value that should not be shared with anyone. Keep it safe and secure.&lt;/p&gt;
&lt;h2&gt;
  
  
  Create the Flutter Application
&lt;/h2&gt;

&lt;p&gt;Let's move on to creating our Flutter application:&lt;/p&gt;

&lt;p&gt;Use the command "flutter create flutter_VideoCall" to create the project.&lt;/p&gt;

&lt;p&gt;Next, we need to install &lt;a href="https://pub.dev/packages/zego_uikit_prebuilt_call" rel="noopener noreferrer"&gt;zego_uikit_prebuilt_call&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flutter pub add zego_uikit_prebuilt_call&lt;/code&gt;&lt;br&gt;
Launch the project using your preferred &lt;strong&gt;Integrated Development Environment (IDE)&lt;/strong&gt;, and perform some initial adjustments to ensure that the project runs smoothly.&lt;br&gt;
Begin by accessing android/app/build.gradle and making modifications to the below-listed values:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; &lt;code&gt;compileSdkVersion 33&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;minSdkVersion 22&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;targetSdkVersion 33&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbpipmgi2tusku3xg9ep.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxbpipmgi2tusku3xg9ep.png" alt="Sdk"&gt;&lt;/a&gt;&lt;br&gt;
It is necessary to specify the permissions that the application will require. This can be done by adding the permission declarations within the manifest tag in the AndroidManifest.xml file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; &amp;lt;uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.RECORD_AUDIO" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.INTERNET" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.CAMERA" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.BLUETOOTH" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.READ_PHONE_STATE" /&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.WAKE_LOCK" /&amp;gt;
    &amp;lt;!-- only invitation --&amp;gt;
    &amp;lt;uses-permission android:name="android.permission.VIBRATE"/&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwjy8pda8hin6htyqzst.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmwjy8pda8hin6htyqzst.png" alt="AndroidManifest.xml "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add the following permissions to your Info.plist file for iOS:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;key&amp;gt;NSCameraUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) camera use&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;$(PRODUCT_NAME) microphone use&amp;lt;/string&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alright, now that we have made the necessary configurations, let's start writing our Dart code. You can replace the code inside the lib/main.dart file with the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'package:flutter/material.dart';
import'package:zego_uikit_prebuilt_call/zego_uikit_prebuilt_call.dart';
import 'dart:math' as math;
final String userID=math.Random().nextInt(1000).toString();
void main() {

  runApp(const MyApp());
}
class MyApp extends StatelessWidget{
  const MyApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home:  videocalling(),
    );
  }
}
class videocalling extends StatefulWidget {
  @override
  State&amp;lt;videocalling&amp;gt; createState() =&amp;gt; _videocallingState();
}
class _videocallingState extends State&amp;lt;videocalling&amp;gt; {
final _controller=TextEditingController();
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
          title: Text("Zego Cloud Video Calling"),
          centerTitle: true,
        ),
        body:Column(
          children: [
            TextFormField(
              controller: _controller,
              decoration: InputDecoration(
                labelText: "Enter UId"
              ),

            ),
            ElevatedButton(onPressed: (){
Navigator.push(context, MaterialPageRoute(builder: (builder)=&amp;gt;cllingId(CallingId: _controller.text.toString())));
            }, child: Text("Join")),
          ],
        )
    );
  }
}
class cllingId extends StatelessWidget {
  final String CallingId;
  const cllingId({required this.CallingId});
  @override
  Widget build(BuildContext context) {
    return SafeArea(child: ZegoUIKitPrebuiltCall(appID: appID,
      appSign: appsign,
      callID: CallingId,
      userID: userID,
      userName:"user_$userID" ,
      config: ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall()..onOnlySelfInRoom=(context){
      Navigator.pop(context);
      },

    ));
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assuming that you have correctly configured the necessary settings, you should now be able to initiate a video call using the application. To do so, you can replace the code in lib/main.dart with the provided code snippet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We have seen how to use the ZegoCloud Flutter SDK to build a video call app. We started by obtaining an App ID and an App Sign from the ZegoCloud Console, which allowed us to connect to the ZegoCloud platform and access its audio and video communication features. Then, we created a Flutter application and added the necessary dependencies to it. Finally, we wrote Dart code to implement the video call functionality, which included initializing the SDK, joining a room, and publishing or subscribing to a stream. By following these steps, you should now be able to build your own video call app using the ZegoCloud Flutter SDK.&lt;br&gt;
&lt;a href="https://bit.ly/3UgdPv9" rel="noopener noreferrer"&gt;Sign up for 10,000 free mins&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bit.ly/3nRyoBR" rel="noopener noreferrer"&gt;Find out more about ZEGOCLOUD&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>zegocloud</category>
      <category>videocall</category>
    </item>
  </channel>
</rss>
