Flutter ICP Integration is a free, open source sample app for developers who want to see how a Flutter interface communicates with a canister on the Internet Computer. It is aimed at programmers learning to pair Dart and Flutter code with a local Internet Computer setup, not at people looking for a finished desktop tool for everyday use.
The project is small by design. You deploy a simple counter canister to a local replica, point the Flutter code at its canister ID, and run the app to watch the two sides exchange data. The last code update is dated November 2023, more than two years before this page was published, so treat it as a reference project. Some dependencies and tooling steps may have changed since then, and you should expect to troubleshoot.
What Is an Internet Computer Canister?
A canister is the basic unit of code and state on the Internet Computer. Think of it as a program that keeps its own data and responds to calls from other programs or from a web or mobile front end. In this sample, the counter canister holds a single number that the app can read and change.
Deploying to a public network costs time and resources, which is why developers usually start locally. The dfx tool runs a local replica on your machine, a small copy of the network where you can deploy canisters and test calls. Everything you learn here carries over conceptually to larger projects.
Flutter ICP Integration shows the handoff between two worlds. Dart code handles the user interface and button presses, while the canister handles the stored state. Understanding where each responsibility lives is the real lesson of the project, and it is the mental model you will need for any app that talks to a blockchain backend.
Who Is This Sample App Built For?
The most natural audience is a developer who already knows some Flutter and wants to try Internet Computer integration without building everything from scratch. A mobile or desktop developer curious about decentralized backends will find the project a practical starting point. Students following tutorials on Dart and blockchain development will also find it useful.
The project is less suited to people who want a ready-made application. There is no polished user experience to evaluate, and the value comes from reading the code and running the setup. Someone expecting a finished wallet or dashboard will be disappointed.
If you are comfortable with a terminal and can follow build instructions, you will get the most from it. If you are new to both Flutter and command-line tools, plan to spend extra time on the environment setup before expecting the counter to respond.
Practical Ways to Extend a Starter Project
Once the counter works, the next step is usually to replace it with your own canister. Define a simple method, such as one that stores a text value, and call it from a button in the Flutter interface. This exercise teaches you how arguments and return values move between the app and the canister.
Another useful experiment is adding a second screen that displays the canister state and handles errors. Network calls can fail for reasons unrelated to your code, such as a stopped replica or an outdated canister ID. Building clear error messages early makes development far less frustrating.
Teams evaluating Internet Computer for a product can also use the project as a proof of concept. It lets them check whether their Flutter skills and tooling are a good fit before committing to a larger architecture. Treat the sample as a learning scaffold rather than production code.
Key features
Local canister connection
Counter canister example
Flutter environment check
Dependency installation
Canister ID configuration
macOS debugging entitlements
How to install Flutter ICP Integration on Windows
- 1
Get the source code
Download the project from the official GitHub repository at github.com/somyaranjansahu/flutter-icp-integration. You can download a source archive or clone the repository with Git. Download only from the official website or the GitHub repository, and check the source as described in the safety section.
- 2
Install the Internet Computer SDK
Install dfx, the command-line tool used to run a local replica and deploy canisters. Follow the installation instructions in the official Internet Computer developer documentation. Confirm the installation by running dfx --version in a terminal window.
- 3
Install Flutter and check your setup
Install the Flutter SDK from the official flutter.dev site, then run flutter doctor -v. Resolve any items it flags, such as missing Windows desktop build tools or a missing device, before going further. A clean report at this stage prevents most early build failures.
- 4
Fetch the packages
Open the project folder in a terminal and run flutter pub get. This downloads the packages listed in the project configuration so the app can compile. Run the command again if you move to a different branch of the code.
- 5
Start the replica and deploy the counter canister
Start the local replica, then run dfx deploy from the project root. When deployment finishes, the terminal shows the ID of the counter canister running on your local replica. Keep the terminal open while you test, because stopping the replica disconnects the app.
-
Point the app at your canister
Copy the canister ID into the local canister ID file under the .dfx/local folder, and update the canister setting in main.dart to match. Then launch the app with flutter run and check that the counter responds. On macOS, make sure the entitlement files described in the project are in place before debugging.
How to use Flutter ICP Integration
This sample is a development project, so usage means running it in a local environment and watching the counter respond to calls. Work through the setup in order, because each step depends on the one before it.
- Start the local replica so dfx has a network to deploy to.
- Run dfx deploy from the project root and note the counter canister ID shown in the output.
- Open the local canister ID file under .dfx/local and confirm the ID matches the deployment.
- Open main.dart and update the canister ID setting so the app points to your canister.
- Run flutter pub get if you have not done so since your last change.
- Launch the app with flutter run and wait for the interface to appear.
- Trigger the counter in the interface and check that the value updates as expected.
- Stop the app, change the canister ID if you redeployed, and repeat the test.
If the counter does not respond, check the canister ID first, because a mismatch is the most common cause. Confirm the replica is still running, then review the terminal output from both Flutter and dfx for error messages.
Pros & cons
- Free and open source, so you can read and modify every line
- Small codebase that is easy to follow for beginners
- Demonstrates a complete local round trip between Flutter and a canister
- Setup steps are documented, including Flutter environment checks
- Useful starting point for building a larger Internet Computer front end
- Last code update dates to November 2023, so some tooling may be outdated
- Aimed at developers rather than everyday users
- Documented debugging notes focus on macOS, leaving Windows users to adapt steps
- Requires separate developer tools to run, which takes time to set up
- Sample scope is limited to a single counter example
Is Flutter ICP Integration safe?
This is open source code, not a finished application, and its last update was in November 2023, more than two years ago. Treat it as a learning resource and expect to update dependencies or fix issues yourself. Get the code only from the official GitHub repository, and avoid copies posted on unfamiliar websites or file-sharing pages. If you download a release archive, compare its SHA-256 checksum with the value published by the project. If the project provides signed commits or tags, verify those too.
The project does not require a seed phrase or wallet keys to run locally. If any tutorial, website or message asks you to enter a seed phrase while you work with this sample, stop immediately. Run the sample against a local replica rather than the public network while you learn. Check the official website or repository for the latest status before relying on the code.
- Official source only. Download from github.com/somyaranjansahu/flutter-icp-integration. Ignore ads and lookalike domains.
- Check the SHA-256. Compare the installer hash with the value the developer publishes before running it.
- Never share your seed phrase. No developer, support agent or website — including CryptApps — will ever ask for it.
Alternatives
Flutter ICP Integration sits in a different niche from most programs in this catalog. PSBT Commander is a Rust-based tool for building Bitcoin partially signed transactions, and it serves people who work with transaction files. The Powershell Algorand Module is a scripting library for interacting with the Algorand network from the command line. Both are aimed at operators and power users rather than Flutter developers.
The English lessons on FunC smart contracts for The Open Network teach contract development from the ground up, which complements this project if you want to understand the backend side of a blockchain app. Flutter ICP Integration is narrower but more hands-on for mobile and desktop front-end developers. If you want to learn writing contracts, start with a course. If you want to connect an interface to a canister, this sample is a better fit.
Specifications
- Price
- Free
- Type
- Open source
- License
- —
- Latest version
- —
- Last update
- 25 Nov 2023
- Windows support
- Yes (Windows build or installer)
- Source code
- github.com/somyaranjansahu/flutter-icp-integration
Frequently asked questions
Yes. Flutter ICP Integration is free and open source, so you can download the source code and study or modify it at no cost. There is no paid version or license fee attached to the sample. Your main costs will be your time and any hardware you need for development.
The project lists Windows as a supported platform, but its documented setup focuses on macOS debugging, including entitlement files. Windows users can still follow the general flow: install the Flutter SDK, set up dfx, run the project and deploy the counter canister. Expect to check Flutter doctor output and adapt some steps.
The sample is generally low risk when you run it against a local replica and download it only from the official GitHub repository. Verify any release archive against its published SHA-256 checksum. Never enter a seed phrase into a third-party site while you work with it, because the project does not require one.
Start a local replica, deploy the counter canister with dfx deploy, then copy its canister ID into the local ID file and main.dart. Run flutter pub get and launch the app with flutter run. Click the counter to confirm that the value updates through the canister.
A canister is a unit of code and state on the Internet Computer. It stores its own data and responds to calls from other programs or front ends. In this sample, the counter canister holds one number, which makes it a simple way to learn how Flutter sends requests and receives responses.
Yes. dfx is the command-line tool that runs a local replica and deploys canisters, and the sample depends on it for the counter canister. You need it before you can test the connection. Install it from the official Internet Computer documentation and confirm it works with dfx --version.
Yes, but most alternatives are different kinds of tools. If you want to learn smart contract development, the TON lessons in this catalog cover contract writing. For transaction building or scripting, PSBT Commander and the Powershell Algorand Module serve other workflows. Choose based on whether you need a front-end example or backend knowledge.
Verdict
Flutter ICP Integration is a good pick for Flutter developers who want a concrete, small example of an app talking to a local canister. It rewards patience and some comfort with the terminal, and it teaches the handoff between interface and backend well. It is not a finished product, and its last update dates to November 2023, so expect to adjust tooling and dependencies. Use it as a learning scaffold, then build your own project on top of the concepts it demonstrates.