<?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>DEV Community: Ifeoluwa Afuwape</title>
    <description>The latest articles on DEV Community by Ifeoluwa Afuwape (@hipheckts).</description>
    <link>https://dev.to/hipheckts</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%2F332280%2Fe281ef54-ee93-46f0-805e-c6619d825b49.jpg</url>
      <title>DEV Community: Ifeoluwa Afuwape</title>
      <link>https://dev.to/hipheckts</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hipheckts"/>
    <language>en</language>
    <item>
      <title>Create AI-Assisted Technical Documentations with Spreading.ai</title>
      <dc:creator>Ifeoluwa Afuwape</dc:creator>
      <pubDate>Fri, 27 Oct 2023 07:36:09 +0000</pubDate>
      <link>https://dev.to/hipheckts/create-ai-assisted-technical-documentations-with-spreadingai-1hi</link>
      <guid>https://dev.to/hipheckts/create-ai-assisted-technical-documentations-with-spreadingai-1hi</guid>
      <description>&lt;p&gt;Have you ever had to document features in your application and the thoughts were just too overwhelming? or you just want to get someone else to do it for you? I am happy to let you know that your worry days are over 😄!&lt;/p&gt;

&lt;p&gt;In this technical write-up, I will be introducing you to an efficient AI-Assited technical documentation app &lt;a href="https://spreading.ai"&gt;Spreading&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Spreading is an AI-Powered Knowledge Base Platform to let you build a self-service knowledge base for your customers and developers.  It helps developers to write technical documentation with AI well with essential and powerful documentation features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Code-Generated Documentation: Create top-notch technical documentation for your products.&lt;/li&gt;
&lt;li&gt;AI-Powered Assistance: Leverage AI to code more effectively, seamlessly switch between different programming languages, and enhance document quality.&lt;/li&gt;
&lt;li&gt;Live Collaborative Editing: Enable multiple users to collaboratively edit the same document, ensuring real-time updates and synchronization (permissions determined by subscription level).&lt;/li&gt;
&lt;li&gt;Streamlined Outlining: Efficiently produce document outlines.&lt;/li&gt;
&lt;li&gt;Multimedia Integration: Easily incorporate images, videos, links, tables, and more.&lt;/li&gt;
&lt;li&gt;Structured Directory and Document Categories: Organize your documents with directory structures and categorization.&lt;/li&gt;
&lt;li&gt;Document Management: Efficiently manage your documents.&lt;/li&gt;
&lt;li&gt;Brand Customization: Customize your branding, including using a custom domain.&lt;/li&gt;
&lt;li&gt;Markdown Syntax and Code Blocks: Utilize Markdown syntax and code blocks for writing documents.&lt;/li&gt;
&lt;li&gt;Multiple Website Creation: Create multiple websites as needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And guess what? "IT IS ENTIRELY FREE"😄 and requires no prior documentation-writing experience. Whether you're a novice or a seasoned developer, this article will guide you on the essential resources to commence your journey with Spreading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOW, LET'S GET INTO IT!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Set up a Spreading Account:&lt;/strong&gt; &lt;br&gt;
Go to &lt;a href="https://app.spreading.ai/signup"&gt;https://app.spreading.ai/signup&lt;/a&gt; to Sign Up&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PxpvBhWp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x7wryuqjcit132xmpy2s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PxpvBhWp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x7wryuqjcit132xmpy2s.png" alt="Sign Up page" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can quickly sign up with your Google account or your email and once successful you will then be required to name your workspace.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nAWoroxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxqo6pi2uxcggwv2bq1v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nAWoroxI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/oxqo6pi2uxcggwv2bq1v.png" alt="Workspace Name" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;and then redirected to the &lt;a href="https://app.spreading.ai/home/"&gt;Spreading App Dashboard&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BmrX9DiZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/97pe39n5pq7lfncgufjj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BmrX9DiZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/97pe39n5pq7lfncgufjj.png" alt="Dashboard" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;EASY YEAH 😄!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create a New Project:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;On your dashboard &lt;strong&gt;Team Project&lt;/strong&gt; section, click the &lt;strong&gt;Create a Project&lt;/strong&gt; button.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yeuLw6nl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bukuk1vxlwuqd3vohlt2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yeuLw6nl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bukuk1vxlwuqd3vohlt2.png" alt="Create a Project" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter your preferred &lt;strong&gt;Project Name&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--twVnner2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r0nx4zcchwnj819lxw7h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--twVnner2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r0nx4zcchwnj819lxw7h.png" alt="Project Name" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Generate a Directory:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Once the project is created, click to open the project. On the sidebar click on the &lt;strong&gt;AI Icon - Generate directory with AI&lt;/strong&gt; &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QZ2gmoYY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v7lgzn4asqkststv5dwa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QZ2gmoYY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v7lgzn4asqkststv5dwa.png" alt="Click AI" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lLg-4cuQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6swqm9klm66s2rkmfey6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lLg-4cuQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/6swqm9klm66s2rkmfey6.png" alt="Generate Directory" width="800" height="439"&gt;&lt;/a&gt;&lt;br&gt;
This launches a pop-up, you'll choose the type of documentation and provide project description, limited to 100 characters. Click the "generate" button, and this will automatically establish the folder structure with appropriate naming conventions. You can &lt;strong&gt;Regenerate&lt;/strong&gt; the output for improved results or &lt;strong&gt;Apply&lt;/strong&gt; it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--daMLjcc6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/umhtg03bazwrq55x13k9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--daMLjcc6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/umhtg03bazwrq55x13k9.png" alt="Directory" width="800" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Generate a Documentation:&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Now that project is successfully setup with appropriate folder structure, we can now populate the project files with content using the two available options of &lt;strong&gt;Generate Outline&lt;/strong&gt; or &lt;strong&gt;Generate doc from code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qF5BoZb1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z40uphlnd0f6mo4wdymv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qF5BoZb1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z40uphlnd0f6mo4wdymv.png" alt="Generate" width="800" height="437"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate Outline&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oHCIgfO0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2p7s26xtn2wncb89zbe6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oHCIgfO0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2p7s26xtn2wncb89zbe6.png" alt="Generate Outline" width="800" height="506"&gt;&lt;/a&gt;&lt;br&gt;
Create an outline by specifying the documentation type, audience type, and entering the product description in the provided textbox. Then, press the "Generate" button, which will generate the entire project outline. You can expand this outline by adding additional content using the "+" icons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate Doc from Code&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--C9dQPPTZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y1of36vpekd3d55200hx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--C9dQPPTZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y1of36vpekd3d55200hx.png" alt="Doc from Code" width="800" height="529"&gt;&lt;/a&gt;&lt;br&gt;
To use this feature, all you need to do is choose the context by specifying the documentation type and programming language. Then, insert the code snippet into the designated area and click the "generate" button. This will generate automatic documentation from the entire code as shown below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cXbcVMGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75oykk8x3v905rpz40r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cXbcVMGl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u75oykk8x3v905rpz40r.png" alt="Documentation" width="800" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Viola! You can do this for every file and then save or publish your documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other Features on Spreading:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Invite Members for Collaboration&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AZgBUxcW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i48pmvm5z4brsqdh7ukp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AZgBUxcW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i48pmvm5z4brsqdh7ukp.png" alt="Invite" width="800" height="440"&gt;&lt;/a&gt;&lt;br&gt;
Developers can engage in collaborative efforts by sharing an invitation link through the "Invite Members" section which allows anyone you share the invite with to access your work and contribute to it within a 7-day validity period.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Documentation Link&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XRvpv8Ic--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9fscxzo62dj104181pze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XRvpv8Ic--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9fscxzo62dj104181pze.png" alt="Publish" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spreading allows you to publish your documentation to a custom domain upon completion.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bHQ2G71J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8ew0bga39ku71ekjyqs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bHQ2G71J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o8ew0bga39ku71ekjyqs.png" alt="Custom" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private Space&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PP8465PJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8op95xzdpn6uwwwtr43u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PP8465PJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8op95xzdpn6uwwwtr43u.png" alt="Private" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also make your projects yours and yours alone by keeping them within your private space on Spreading, and like every other project you can &lt;strong&gt;generate outline&lt;/strong&gt; and &lt;strong&gt;docs from code&lt;/strong&gt; within you private space pages.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aIW-2JgK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0eaybilq034gs0zooti3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aIW-2JgK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0eaybilq034gs0zooti3.png" alt="Page" width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beyond the features highlighted above, Spreading also provides a host of other tools which can be useful for you now or in your future developments and projects especially with its high scalability rate, hence be sure to explore and try new things with it.&lt;/p&gt;

</description>
      <category>documentation</category>
      <category>ai</category>
      <category>spreading</category>
      <category>developers</category>
    </item>
    <item>
      <title>Create a Flutter Video Call App with ZEGOCLOUD</title>
      <dc:creator>Ifeoluwa Afuwape</dc:creator>
      <pubDate>Wed, 12 Apr 2023 06:08:33 +0000</pubDate>
      <link>https://dev.to/hipheckts/create-a-flutter-video-call-app-with-zegocloud-309o</link>
      <guid>https://dev.to/hipheckts/create-a-flutter-video-call-app-with-zegocloud-309o</guid>
      <description>&lt;p&gt;Have you ever thought or had to integrate communication features in you application and the complexity almost turned you off? or even many times wouldn't just work.&lt;/p&gt;

&lt;p&gt;In this technical write-up, I will be showing you a seamless solution to achieve many communication features within your app in Flutter using &lt;a href="https://www.zegocloud.com/" rel="noopener noreferrer"&gt;Zegocloud&lt;/a&gt; without having to reinvent the wheel. Zegocloud is a global communication service provider which provides &lt;a href="https://www.zegocloud.com/product/video-call" rel="noopener noreferrer"&gt;powerful communication SDKs &amp;amp; APIs&lt;/a&gt; for app development (chat messaging, video and voice calls, video conference and live-streaming) with developer-friendly environment and features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ready-to-use 1-on-1/group calls&lt;/li&gt;
&lt;li&gt;Customizable UI styles&lt;/li&gt;
&lt;li&gt;Real-time sound waves display&lt;/li&gt;
&lt;li&gt;Device management&lt;/li&gt;
&lt;li&gt;Switch views during a 1-on-1 call&lt;/li&gt;
&lt;li&gt;Extendable menu bar&lt;/li&gt;
&lt;li&gt;Participant list&lt;/li&gt;
&lt;li&gt;Call invitation/Offline call invitation&lt;/li&gt;
&lt;li&gt;Custom call ringtones&lt;/li&gt;
&lt;li&gt;Screen sharing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Throughout this write-up, we will go step-by-step on how to set up a new Flutter project, configure your flutter project, and integrate Zegocloud into our app. I will include code snippets and images to help you follow along and &lt;a href="https://www.zegocloud.com/docs/video-call/overview?platform=flutter&amp;amp;language=dart" rel="noopener noreferrer"&gt;build your own video call app with Zegocloud using Flutter&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;br&gt;
Basic knowledge of Flutter and Dart&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Set up a Zegocloud Account:&lt;/strong&gt; &lt;br&gt;
Go to &lt;a href="https://console.zegocloud.com/account/signup" rel="noopener noreferrer"&gt;https://console.zegocloud.com/account/signup&lt;/a&gt; to Sign Up&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%2Fdo42c21gt393q5ub79qz.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%2Fdo42c21gt393q5ub79qz.png" alt="Sign Up Page"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Bonus:&lt;/strong&gt;&lt;/em&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%2Fw0spmj5cvflu6rexoazj.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%2Fw0spmj5cvflu6rexoazj.png" alt="Free 10000mins credit"&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%2Fassxealhm87xgsaqtbpx.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%2Fassxealhm87xgsaqtbpx.png" alt="Free 10000mins credit"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once, your account is setup... your console should look like this:&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%2Frlxifpugdtykldpn04ku.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%2Frlxifpugdtykldpn04ku.png" alt="Console"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Set up a new Flutter project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open Android Studio/VS Code and create a new Flutter 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%2Flh3f4et2r1za8o3vu130.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%2Flh3f4et2r1za8o3vu130.png" alt="Flutter New Project"&gt;&lt;/a&gt;&lt;br&gt;
or run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter create zego_call
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once your project is setup, we need to add the ZegoCloud UIKit Dependency for 1-on-1 calls&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%2Fohmg85fpdz73qcdos00x.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%2Fohmg85fpdz73qcdos00x.png" alt="UIkit"&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;run&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flutter pub add zego_uikit_prebuilt_call
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your pubspec.yaml should be updated as shown:&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%2F0qkgmecwihajctaagtsq.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%2F0qkgmecwihajctaagtsq.png" alt="pubspec"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create a Zegocloud Project from your console&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Click on &lt;strong&gt;Create your project&lt;/strong&gt; from the console and you will be redirected to the screen shown below: &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%2Fr73jhll7rsep2ip33edx.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%2Fr73jhll7rsep2ip33edx.png" alt="New Project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are varieties to choose from, but for the sake of this tutorial we will be using the &lt;strong&gt;Voice &amp;amp; Video Call&lt;/strong&gt;, click NEXT and enter preferred project name.&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%2F3m9x6bl8qyoglnpg0v4n.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%2F3m9x6bl8qyoglnpg0v4n.png" alt="Project Information"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then click &lt;strong&gt;Start with UIKits&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Wait for the console to create your project and you will be redirected to your project page with all your project info.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Implement Zegocloud dependency in your project&lt;/strong&gt;&lt;br&gt;
Now that we have created a project on the console, we need to create our screens:&lt;/p&gt;

&lt;p&gt;In your &lt;strong&gt;main.dart&lt;/strong&gt; file, add the following code:&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';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: MyApp(),
    );
  }
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SizedBox(
        width: double.infinity,
        child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              const Text(
                'ZegoCloud\nVideo Call Kit',
                textAlign: TextAlign.center,
                style: TextStyle(fontSize: 30, fontWeight: FontWeight.bold),
              ),
              const SizedBox(
                height: 100,
              ),
              SizedBox(
                  width: 300,
                  height: 52,
                  child: ElevatedButton(
                    onPressed: () {
                      Navigator.of(context).push(MaterialPageRoute(
                          builder: ((context) =&amp;gt;
                              const CallPage(callID: 'ifeoluwa'))));
                    },
                    style: ButtonStyle(
                        backgroundColor: MaterialStateProperty.all&amp;lt;Color&amp;gt;(
                            const Color.fromRGBO(95, 51, 255, 1))),
                    child: const Text('Start Call'),
                  )),
            ]),
      ),
    );
  }
}

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

&lt;/div&gt;



&lt;p&gt;Create a stateless callpage below the &lt;strong&gt;main.dart&lt;/strong&gt; file and add the code, this is where we consume the prebuilt UI kit by zegocloud and pass in the appID and appSign which can be gotten from the project console&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%2F4mvbvveam1lodzlow9y5.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%2F4mvbvveam1lodzlow9y5.png" alt="Project Console"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class CallPage extends StatelessWidget {
  const CallPage({Key? key, required this.callID}) : super(key: key);
  final String callID;

  @override
  Widget build(BuildContext context) {
    return ZegoUIKitPrebuiltCall(
        appID:
            1873850625, // Fill in the appID that you get from ZEGOCLOUD Admin Console.
        appSign:
            "9adffd105b8fd9925f617746797f340e5f9a10c5ba36738b0edda8de3bcb16f7", // Fill in the appSign that you get from ZEGOCLOUD Admin Console.
        userID: 'usos2345dhdoee',
        userName: 'popop',
        callID: callID,
        // You can also use groupVideo/groupVoice/oneOnOneVoice to make more types of calls.
        config: ZegoUIKitPrebuiltCallConfig.oneOnOneVideoCall()
        // ..onOnlySelfInRoom = () =&amp;gt; Navigator.of(context).pop(),
        );
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our Screen should be like this:&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%2F3r9vx17uwe5auwpdc573.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%2F3r9vx17uwe5auwpdc573.png" alt="Screen UI"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Configure your flutter project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For your app to perform properly you need to require some permissions on the device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Android:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the project_directory/android/app/build.gradle file, and modify the &lt;strong&gt;compileSdkVersion&lt;/strong&gt; to &lt;strong&gt;33&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
.
.
android {
    compileSdkVersion 33
    ndkVersion flutter.ndkVersion
.
.
.
 defaultConfig {
        minSdkVersion 21
    }
.
.
.

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Open the file project_directory/app/src/main/AndroidManifest.xml add the following code just before the application tag.
&lt;/li&gt;
&lt;/ol&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;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Open the project_directory/android/app folder, create a  file named &lt;strong&gt;proguard-rules.pro&lt;/strong&gt; and add the code below:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-keep class **.zego.** { *; }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then save.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the project_directory/android/app/build.gradle file again, then add the code below under buildTypes:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.
.
.
buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
.
.
.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;iOS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the project_directory/ios/Runner/Info.plist file, then add the following code:&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;We require camera access to connect to a call&amp;lt;/string&amp;gt;
&amp;lt;key&amp;gt;NSMicrophoneUsageDescription&amp;lt;/key&amp;gt;
&amp;lt;string&amp;gt;We require microphone access to connect to a call&amp;lt;/string&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%2Fapsn69trozv0qqnv5v71.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%2Fapsn69trozv0qqnv5v71.png" alt="iOS Config"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Awesome! Our Video call App implementation is ready, you can now run your app and when you click the Start Call button, you should get the view below with all call features enabled.&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%2Fbiy4gmv18nduy2v2gw0d.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%2Fbiy4gmv18nduy2v2gw0d.png" alt="Call View"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find the sourcecode here: &lt;a href="https://github.com/Hipheckts/zego_call" rel="noopener noreferrer"&gt;sourcecode&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or watch my Video Tutorial Here: &lt;a href="https://youtu.be/VPSR1E-7nx4" rel="noopener noreferrer"&gt;CREATE A FLUTTER VIDEO CALL APP WITH ZEGOCLOUD&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Beyond the Video call, Zegocloud provides a host of other communication SDKs and APIs which can be useful for you now or in your future developments and projects especially with its high scalability rate, hence be sure to explore and try new things with it and you may be on your way to building another Fortune 500 with less stress as Zegocloud handles all communications whilst you focus on your core.&lt;/p&gt;

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