<?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: Adetoba ✨</title>
    <description>The latest articles on DEV Community by Adetoba ✨ (@tobacodes).</description>
    <link>https://dev.to/tobacodes</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%2F1142057%2F81e8e98a-45aa-430f-88c2-7732b4686802.jpg</url>
      <title>DEV Community: Adetoba ✨</title>
      <link>https://dev.to/tobacodes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tobacodes"/>
    <language>en</language>
    <item>
      <title>Using Dart to create custom directories and files for your new Flutter project.</title>
      <dc:creator>Adetoba ✨</dc:creator>
      <pubDate>Mon, 21 Aug 2023 09:53:09 +0000</pubDate>
      <link>https://dev.to/tobacodes/using-dart-to-create-custom-directories-and-files-for-your-new-flutter-project-cnh</link>
      <guid>https://dev.to/tobacodes/using-dart-to-create-custom-directories-and-files-for-your-new-flutter-project-cnh</guid>
      <description>&lt;p&gt;After my recent &lt;a href="https://dev.to/tobacodes/creating-custom-directories-and-files-for-your-flutter-project-with-go-15b5"&gt;post&lt;/a&gt; on how to generate directories and files for your new flutter project in Golang, i got a comment on my twitter &lt;a href="https://twitter.com/tobacodes/status/1693214901601263711?s=20"&gt;post&lt;/a&gt; to replicate this same implementation in dart. I agree with the comment since any flutter developer would already have dart installed on their system and won't necessarily need to setup Golang on their machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HJ7ZirBz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jvd3cis3ohw5hs94v5m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HJ7ZirBz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7jvd3cis3ohw5hs94v5m.jpg" alt="Tweet Screenshot" width="800" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, we will learn how to generate custom directories and files for your new flutter project using dart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started 👍
&lt;/h2&gt;

&lt;p&gt;We will assume you already have flutter installed on your system so we'd skip the installation process and jump right into the implementation. Every Flutter SDK comes with a dart SDK which is automatically setup on your system.&lt;/p&gt;




&lt;h2&gt;
  
  
  Writing our codes 👨🏾‍💻
&lt;/h2&gt;

&lt;p&gt;To start off, we will create a new dart file &lt;code&gt;generator.dart&lt;/code&gt; which will contain all necessary functions for our program.&lt;/p&gt;

&lt;p&gt;First, we import all necessary packages for our program&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import 'dart.io';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dart.io&lt;/code&gt; package allows us to manipulate files and directories in dart.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt; directories = {
  "features": [],
  "shared": [],
  "theme": [
    "colors.dart",
    "theme.dart",
    "styles.dart"
  ],
  "utils": [
    "utils.dart",
    "storage.dart",
    "dimensions.dart"
  ],
  "/features/auth": [],
  "/features/auth/view_models": []
};

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a key-value variable named directories of type &lt;code&gt;Map&amp;lt;String, List&amp;lt;String&amp;gt;&amp;gt;&lt;/code&gt;. The key represents the name of the directory and the value represents the list of files to be created in the directory.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Future&amp;lt;Directory?&amp;gt; createDirectory(String path) async {
  try {
    final newDir = Directory(path);
    newDir.createSync(recursive: true);

    return newDir;
  } catch (e) {
    return null;
  }
}

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a function named &lt;code&gt;createDirectory&lt;/code&gt; which takes in a string path as an argument. The path string represents the parent directory where we want to create all our custom directories.&lt;/li&gt;
&lt;li&gt;Create a new Directory variable called &lt;code&gt;newDir&lt;/code&gt; and specify the path.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;newDir.createSync(recursive: true)&lt;/code&gt; function creates a new directory with the path you specified.&lt;/li&gt;
&lt;li&gt;Use a try-catch block to handle exceptions. Return null if an exception occurs and return the &lt;code&gt;newDir&lt;/code&gt; if the directory was successfully created.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Future&amp;lt;File?&amp;gt; createFile(String path, String fileName) async {
  try {
    final file = File("/$path/$fileName");
    final f = await file.create();
    return f;
  } catch (e) {
    return null;
  }
}

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create a new function named &lt;code&gt;createFile&lt;/code&gt; which takes two arguments. The first argument is the path where the file should be created and the second argument represents the file name.&lt;/li&gt;
&lt;li&gt;Create a new &lt;code&gt;File&lt;/code&gt; variable and specify the &lt;code&gt;path&lt;/code&gt; and &lt;code&gt;fileName&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;await file.create()&lt;/code&gt; from the &lt;code&gt;dart.io&lt;/code&gt; package to create a new file.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let's create our main function&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;void main() {
  print("Please provide a path to the lib folder of your flutter project (e.g /Users/hash/Documents/test_app/lib): ");
  String? parentPath = stdin.readLineSync();

  if(parentPath == null) {
    print("You must provide a path");
    exit(0);
  }

  directories.forEach((directory, fileNames) async {
    String? fullPath = "/$parentPath/$directory";

    final dir = await createDirectory(fullPath);

    if (dir == null) {
      print("Failed to create directory: $directory");
    } else {
      print("=&amp;gt; $directory created");
    }

    for (String fileName in fileNames) {
      final file = await createFile(fullPath, fileName);

      if (file == null) {
        print("Failed to create file: $fileName");
      }

    }
  });
}

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;std.readLineSync()&lt;/code&gt; function is used to read an input from the command line. We store the input in a String variable called &lt;code&gt;parentPath&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Check if the &lt;code&gt;parentPath&lt;/code&gt; is not null and exit the app using &lt;code&gt;exit(0)&lt;/code&gt; if the variable is null.&lt;/li&gt;
&lt;li&gt;Use a &lt;code&gt;forEach&lt;/code&gt; loop to iterate through the directories variable and create each directory using the &lt;code&gt;createDirectory&lt;/code&gt; function you created earlier.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;createDirectory&lt;/code&gt; function takes an argument which represents the full path where the directory should be created. We combine the parentPath and the directory string to get the full path.&lt;/li&gt;
&lt;li&gt;Create another for loop to iterate through each fileName in the directories map.&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;createFile&lt;/code&gt; function we created earlier to create each file. Pass the full path and the filename as arguments to the function.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, create a new flutter project named test_app in your documents folder.&lt;/p&gt;

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

&lt;p&gt;Now, we need to run our generator.dart file to generate our custom directories for our flutter project. Open up a terminal and make sure you're in the directory where your generator.dart file is stored then type &lt;code&gt;dart run generator.dart&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;You should see this screen if everything works as expected.&lt;/p&gt;

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

&lt;p&gt;Check the new flutter project you created to see if your files were generated successfully.&lt;/p&gt;

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

&lt;p&gt;We have learnt how to generate custom directories and files for our flutter project using dart. You can tweak this dart code and use it however necessary to create custom directories or files for your projects.&lt;/p&gt;

</description>
      <category>dart</category>
      <category>flutter</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>Creating custom directories and files for your Flutter project with Go</title>
      <dc:creator>Adetoba ✨</dc:creator>
      <pubDate>Sun, 20 Aug 2023 10:45:14 +0000</pubDate>
      <link>https://dev.to/tobacodes/creating-custom-directories-and-files-for-your-flutter-project-with-go-15b5</link>
      <guid>https://dev.to/tobacodes/creating-custom-directories-and-files-for-your-flutter-project-with-go-15b5</guid>
      <description>&lt;p&gt;As a flutter developer, it can be really cumbersome having to create directories and files for your project all the time 😓. Every flutter project, depending on the architecture you prefer to use will normally have similar directories or files. &lt;/p&gt;

&lt;p&gt;In this tutorial, we will learn how to generate custom directories and files for your new flutter project using Go. 👨🏾‍💻&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Golang? 🤖
&lt;/h2&gt;

&lt;p&gt;Golang, is a statically typed, compiled programming language designed for simplicity, efficiency, and ease of use. It was created by Google engineers and was first released in 2009. Golang is commonly used for various types of applications, including web development, system programming, cloud services, network services, and more.&lt;/p&gt;

&lt;p&gt;We will be making use of Golang's system programming capabilities to create our desired directories and files. System programming is a specialized area of software development focused on creating programs that interact closely with the underlying hardware and operating system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Setting up Golang
&lt;/h3&gt;

&lt;p&gt;You can skip this step if you already have Go SDK setup on your system. If you're new to Golang, you need to download and install the sdk from their &lt;a href="https://go.dev/doc/install" rel="noopener noreferrer"&gt;official website&lt;/a&gt;. Golang SDK is available for MacOS, Linux and Windows. After downloading and installing the SDK, run this command to verify that the sdk was installed successfully.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;go version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This should print out the sdk version currently installed on your system.&lt;/p&gt;

&lt;h3&gt;
  
  
  Important packages
&lt;/h3&gt;

&lt;p&gt;We will be making use of some in-built packages available in the Golang. One of the important package we will be using is the &lt;a href="https://golangdocs.com/golang-os-package" rel="noopener noreferrer"&gt;os&lt;/a&gt; package. This package allows us to manipulate files and directories as entities.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://pkg.go.dev/fmt" rel="noopener noreferrer"&gt;fmt&lt;/a&gt; package allows us to print and format string extensively in go.&lt;/p&gt;




&lt;h2&gt;
  
  
  Writing our codes 👨🏾‍💻
&lt;/h2&gt;

&lt;p&gt;To start off, we will create a new file called &lt;code&gt;generator.go&lt;/code&gt; which will contain all the necessary functions for our program.&lt;/p&gt;

&lt;p&gt;First, we import all the necessary packages:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import(
   "fmt"
   "os"
)

var directories map[string][]string = map[string][string]{
   "features": {},
   "shared": {},
   "theme": {
     "colors.dart",
     "theme.dart",
     "styles.dart"
   },
  "utils": {
     "storage.dart",
     "utils.dart",
     "validator.dart"
  },
  "/features/auth": {},
  "features/auth/views": {},
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;import&lt;/code&gt; statement is used to import all the necessary packages we need for our program to run.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;We created a key-value variable named directories of type &lt;code&gt;map[string][]string&lt;/code&gt;. The key represents the name of the directory and the value represents the list of files to be created in the directory.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func CreateDirectory(path string) error {
   _, err := os.Stat(path)

   if err == nil {
     return nil
   }

   if os.IsNotExist(err) {
     err := os.MkdirAll(path, os.ModePerm)
     if err != nil {
       return err
     }
   }

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We created a function named &lt;code&gt;CreateDirectory&lt;/code&gt; which takes in a string &lt;code&gt;path&lt;/code&gt; as an argument. The &lt;code&gt;path&lt;/code&gt; string represents the parent directory where we want to create all our custom directories.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;os.Stat&lt;/code&gt; function is used to get the file information for our directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;os.IsNotExist&lt;/code&gt; function is used to check if the directory already exists. If it doesn't exists, create a new directory using the &lt;code&gt;os.MkdirAll(path, os.ModePerm)&lt;/code&gt; function.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;os.MkdirAll&lt;/code&gt; takes two arguments. The first argument is the path where the directory should be created and the second argument is the permission needed to create the directory.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func CreateDartFile(path, filename string) error {
   _, err := os.Create(fmt.Sprintf("/%v/%v", path, filename))

   if err != nil {
     return err
   }

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;We create a new function named &lt;code&gt;CreateDartFile&lt;/code&gt; which takes two arguments. The first argument is the path where the file should be created and the second argument represents the file name.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;os.Create&lt;/code&gt; function takes an argument which specifies the directory where the file should be created.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;fmt.Sprintf&lt;/code&gt; is used to combine the path and filename which then returns a string. &lt;/li&gt;
&lt;li&gt;The &lt;code&gt;os.Create&lt;/code&gt; returns two values. The first value represents the file and the second value returns an error if the file was not created successfully.&lt;/li&gt;
&lt;li&gt;We check if &lt;code&gt;os.Create&lt;/code&gt; function throws an error and return it to the &lt;code&gt;CreateDartFile&lt;/code&gt; function.&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;os.Create&lt;/code&gt; does not throw an error, we return nil&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, we will look at our &lt;code&gt;main&lt;/code&gt; function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;func main() {
  if len(os.Args) != 2 {
    fmt.Println("Please provide a parent directory")
    os.Exit(1)
  }

  parentPath := os.Args[1]

  for directory, files := range directories {
    err := CreateDirectory(fmt.Sprintf("/%v/%v", parentPath, directory))
    if err != nil {
       fmt.Printf("Failed to create directory: %v\n", directory)
    }

    for _, fileName := range files {
       err := CreateDartFile(fmt.Sprintf("/%v/%v", parentPath, directory), fileName)
       if err != nil {
         fmt.Printf("Failed to create file: %v\n", fileName)
       }
    }
  }

  fmt.Println("All directories &amp;amp; files generated successfully 🚀")
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;os.Args&lt;/code&gt; function is used to specify a directory when we run &lt;code&gt;go run&lt;/code&gt; from the terminal. The argument represents the parent directory where all our custom directory will be created.&lt;/li&gt;
&lt;li&gt;Create a new variable &lt;code&gt;parentPath&lt;/code&gt; to hold the specified directory from the terminal.&lt;/li&gt;
&lt;li&gt;Use a &lt;code&gt;for&lt;/code&gt; loop to iterate through the directories variable and create each directory using the &lt;code&gt;CreateDirectory&lt;/code&gt; function you created earlier.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;CreateDirectory&lt;/code&gt; takes an argument which represents the full path where the directory should be created. We combine the &lt;code&gt;parentPath&lt;/code&gt; and the &lt;code&gt;directory&lt;/code&gt; string to get the full path.&lt;/li&gt;
&lt;li&gt;Create another &lt;code&gt;for&lt;/code&gt; loop to iterate through each file in the directories map.&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;CreateDartFile&lt;/code&gt; function we created earlier to create each file. Pass the full path and the filename as arguments to the function.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, create a new flutter project named test_app in your documents folder.&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%2F1vhnxvc6jv2lfex4ol3d.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%2F1vhnxvc6jv2lfex4ol3d.png" alt="Create flutter project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, we need to run our generator.go file to generate our custom directories for our flutter project. Open up a terminal and type &lt;code&gt;go run generator.go ~/documents/test_app/lib&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%2Fsiwd3wx3lu9je6j5h0ki.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%2Fsiwd3wx3lu9je6j5h0ki.png" alt="Terminal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should see the message "All directories &amp;amp; files generated successfully".&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%2Ftsqfp9zmn649u3q8xffi.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%2Ftsqfp9zmn649u3q8xffi.png" alt="Flutter project"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yay! All our custom directories and files were successfully generated.&lt;/p&gt;

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

&lt;p&gt;We have learnt how to generate custom directories and files for our flutter project. You can tweak this go code and use it however necessary to create custom directories or files for your projects. &lt;/p&gt;

</description>
      <category>go</category>
      <category>flutter</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
