<?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: Mouayed Amr</title>
    <description>The latest articles on DEV Community by Mouayed Amr (@mouayed_amr_91537efe31bb8).</description>
    <link>https://dev.to/mouayed_amr_91537efe31bb8</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%2F3592496%2Fa0e61a21-a930-4764-ad8d-140767da9399.jpg</url>
      <title>DEV Community: Mouayed Amr</title>
      <link>https://dev.to/mouayed_amr_91537efe31bb8</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mouayed_amr_91537efe31bb8"/>
    <language>en</language>
    <item>
      <title>How to Create and Publish a Flutter Package on pub.dev</title>
      <dc:creator>Mouayed Amr</dc:creator>
      <pubDate>Sun, 02 Nov 2025 02:09:20 +0000</pubDate>
      <link>https://dev.to/mouayed_amr_91537efe31bb8/how-to-create-and-publish-a-flutter-package-on-pubdev-1dmh</link>
      <guid>https://dev.to/mouayed_amr_91537efe31bb8/how-to-create-and-publish-a-flutter-package-on-pubdev-1dmh</guid>
      <description>&lt;p&gt;Have you ever built a cool feature in Flutter and thought, “Other developers could really use this!”?&lt;/p&gt;

&lt;p&gt;That’s when it’s time to turn your code into a &lt;strong&gt;Flutter package&lt;/strong&gt; and share it with the community.&lt;/p&gt;

&lt;p&gt;In this guide, I’ll walk you step-by-step through creating your own Flutter package and publishing it on &lt;a href="https://pub.dev/" rel="noopener noreferrer"&gt;pub.dev&lt;/a&gt;&lt;br&gt;
"the official package repository for Dart and Flutter developers"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a New Package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open your terminal and run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flutter create --template=package my_awesome_package&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
This creates a folder named my_awesome_package with this structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my_awesome_package/
├── lib/
│   └── my_awesome_package. Dart
├── pubspec.yaml
└── test/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt;&lt;br&gt;
If you want to build a package that includes native Android/iOS code (like accessing sensors or camera), use:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flutter create --template=plugin my_awesome_plugin&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;Step 2: Write Your Package Code&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open the file lib/my_awesome_package.dart.&lt;br&gt;
Let’s write a simple utility function that capitalizes the first letter of any string:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;library my_awesome_package;

String capitalize(String text) {
  if (text.isEmpty) return text;
  return text[0].toUpperCase() + text.substring(1);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That’s it, you’ve written your first reusable function inside a Flutter package!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Add Tests&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Testing ensures that your package works correctly and builds trust among users.&lt;/p&gt;

&lt;p&gt;Go to the test folder and add a new file named my_awesome_package_test.dart:&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_test/flutter_test.dart';
import 'package:my_awesome_package/my_awesome_package.dart';

void main() {
  test('capitalize function works', () {
    expect(capitalize('flutter'), 'Flutter');
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run your tests:&lt;br&gt;
&lt;code&gt;flutter test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Update pubspec.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before publishing, fill in your pubspec.yaml with proper details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: my_awesome_package
description: A simple Flutter package that capitalizes text.
version: 1.0.0
homepage: https://github.com/yourusername/my_awesome_package
repository: https://github.com/yourusername/my_awesome_package
issue_tracker: https://github.com/yourusername/my_awesome_package/issues
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Don’t forget to add a LICENSE file (e.g., MIT License) and a README.md explaining how to use your package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Test It Locally&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before going public, you should test your package in another project.&lt;/p&gt;

&lt;p&gt;In another Flutter app’s pubspec.yaml, add your package as a dependency:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dependencies:
  my_awesome_package:
    path: ../my_awesome_package
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flutter pub get&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now try importing and using your package in your Flutter app:&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:my_awesome_package/my_awesome_package.dart';

print(capitalize("flutter"));
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it works, you’re ready to go live!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Publish to pub.dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1- Sign in to pub.dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to pub.dev&lt;br&gt;
 and sign in with your Google account.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2- Check before publishing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Run this command in your package directory:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flutter pub publish --dry-run&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This checks for potential issues (like missing fields or files).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3- Publish it!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If everything looks good, run:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flutter pub publish&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Confirm with y when prompted.&lt;/p&gt;

&lt;p&gt;Congratulations!&lt;br&gt;
Your Flutter package is now live on &lt;a href="https://pub.dev/" rel="noopener noreferrer"&gt;pub.dev&lt;/a&gt; for the world to use!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Maintain and Improve Your Package&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Once your package is live:&lt;/li&gt;
&lt;li&gt;Follow semantic versioning (1.0.1, 1.1.0, etc.)&lt;/li&gt;
&lt;li&gt;Keep your README updated&lt;/li&gt;
&lt;li&gt;Add CHANGELOG.md to track updates&lt;/li&gt;
&lt;li&gt;Encourage contributions from others&lt;/li&gt;
&lt;li&gt;Fix issues and respond to feedback&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The better maintained your package is, the more developers will trust and use it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Wrap-Up&lt;/strong&gt;&lt;br&gt;
Creating and publishing a Flutter package might seem complicated, but it’s actually straightforward once you’ve done it once.&lt;br&gt;
It’s also one of the best ways to contribute to the open-source community and grow as a Flutter developer.&lt;br&gt;
If you found this article helpful, don’t forget to leave a ❤️, comment, or follow me for more Flutter tutorials and open-source tips!&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>flutter</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
