Member-only story
Build an NFT Collection using Flutter
Use Flutter to create art and manage smart contracts

You are a Flutter fan and want to learn the basics of Non-Fungible Tokens and Smart Contracts. In this project, we will build a collection of NFTs and deploy it on the OpenSea marketplace. We will build two Flutter apps: one to generate art, one to control our smart contract. We will use many Web3 tools: IPFS, Pinata, MetaMask, Hardhat, Solidity, OpenZeppelin, Polygonscan, Alchemy.
If you have some cool ideas about NFT images and are just looking for a quick and easy way of creating a collection and selling it, then this post is not for you. Check out LaunchMyNFT.io or a similar site.
These are the steps in this project:
- Understand what we will develop.
- Generate art: Build a Flutter app to create images and descriptions. Upload them to IPFS — the InterPlanetary File System.
- Get a wallet with some cryptocurrency.
- Create and deploy a Smart Contract that will live on a blockchain and keep track of your NFTs.
- Build a Flutter app to manage your contract and mint NFTs.
- List your NFTs on the OpenSea marketplace.
- Go from the test environment to production.
1. What we will develop
OpenSea is the most used marketplace for NFTs. Click this link to see The Bling NFT Collection on OpenSea. It was developed as described in this document. First, familiarise yourself with the collection page. Then click on one of the NFTs and examine the NFT page, including Properties and Details.
You will create your own collection like this one, albeit with much simpler images.
2. Generate art
You can sell basically anything as an NFT. But in most cases, an NFT is tied to an image. Again, it can be any kind of image, e.g. a picture of a cute dog downloaded from the internet. But usually, an NFT collection contains images generated by a computer program. The image has a number of properties, called traits, and by varying these, a large number (often thousands) of similar but different images can be generated. Google “generative…