Other Crypto Tools

Flutter ICP IntegrationA Flutter Sample for Local Canisters

A free open source Flutter sample that connects to a local canister. See setup steps, use cases, limits and safety notes for 2026.

Free Open source Windows: Yes Updated 25 Nov 2023
10 min read Last update 25 Nov 2023 github.com/somyaranjansahu/flutter-icp-integration

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.

02

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.

03

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.

04

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.

05

Key features

Local canister connection

The app is built to talk to a canister running on your own machine. Because the backend lives on a local replica, you can test calls without deploying anything to the public network. That makes the project a safe sandbox for early experiments with canister calls.

Counter canister example

The sample relies on a simple counter canister that you deploy with dfx deploy. Its small, predictable behavior gives you an easy target for checking that reads and updates reach the Flutter screen. Starting with a minimal contract keeps debugging focused on the connection itself.

Flutter environment check

The setup guide asks you to run flutter doctor -v before anything else. That command reports whether the Flutter SDK, platform tooling and connected devices are ready. Catching problems at this stage saves time later in the process.

Dependency installation

Running flutter pub get pulls in the packages the example needs. The step is short, but skipping it is a common reason a project fails to build. Run it again whenever you switch branches or change the package configuration.

Canister ID configuration

Once your counter canister is deployed, its ID must be copied into the project's local canister ID file and into main.dart. The app uses that ID to decide which canister to call. Keeping the two values in sync is the most important manual step in the setup.

macOS debugging entitlements

The project documents entitlement settings for macOS debug and release builds. These files control what the app is allowed to do when it runs on a Mac. The guide points to them specifically for macOS debugging, so Windows users should read the project's own notes before copying anything.
06

How to install Flutter ICP Integration on Windows

  1. 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. 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. 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. 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. 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.

  6. 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.

07

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.

  1. Start the local replica so dfx has a network to deploy to.
  2. Run dfx deploy from the project root and note the counter canister ID shown in the output.
  3. Open the local canister ID file under .dfx/local and confirm the ID matches the deployment.
  4. Open main.dart and update the canister ID setting so the app points to your canister.
  5. Run flutter pub get if you have not done so since your last change.
  6. Launch the app with flutter run and wait for the interface to appear.
  7. Trigger the counter in the interface and check that the value updates as expected.
  8. 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.

08

Pros & cons

Pros
  • 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
Cons
  • 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
09

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.
10

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.

11

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
12

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.

13

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.

Download now