[Dart/Flutter]agent_dart updates v0.1.16 - Flutter Web Supported

Hi eveyone.

We are making a dart/flutter version of agent library for Internet Computer. Dart and Flutter devs can use it to build either mobile wallets, Stand-alone/fusion Dapps powered by canisters, or even backend service.

You can get it here:


And for source code, here:


Current version is 0.1.16, we will update latest features and changes in this post.


  • added principal to accountId
  • added Flutter Web support
  • regroup project structure
  • fixed archiver overriding
  • fixed bls on dart:io and dart:html
  • fixed test compatible with flutter web

0.1.11 - 0.1.15

  • Fixed secp256k1 signature length
  • Expose AgentFactory
  • Fix Cbor with List casting
  • Minor Fix fetch and KeySmith
  • added Windows ffi support
  • BREAKING separating auth_provider to standalone agent_dart_auth package
  • IMPORTANT fix candid parser with BigInt and others


  • Added Secp256k1 Identity with ECDA sign

  • Added ledger with send and getBalance


  • BREAKING the auth_client flow is a little bit change due to Internet Identity service won’t give correct identity using local webpage like we use webAuthProvider here

  • How ever we keep the provider here, because we may have other Identity Provider to give other solution.

  • But we managed to change auth_client a bit.


  • fixed uri parser, added path to auth_client


  • IMPORATANT Use blsSync instead of async isolation, to fix memory leak in rust-dart-ffi interop


  • Fix cbordecode in the Delegation

  • Apply rosetta-api to current docker specs


  • BREAKING remove ICPSigner.fromPrivatekey and added ICPSigner.fromSeed

  • Won’t support import privatekey to signer anymore, may separate different signer, eg: Secp256k1Signer or SchnorrSigner in the future supporting different coin specs.


  • added sourceType of II, plugWallet, keysmith with different settings since they use different derivePath to generate seed

  • added Signer.importPhrase to use settings above

  • added related tests


  • fix delegation request sign and request_id


  • fix delegation chain transformRequest


  • fix error decoding

  • follow agent-js latest features

  • fix readme

Here are core features in this package:

  • agent, core library, with crypto and encoding/decoding methods , http call/query encapsulated, for interacting with canister.

  • auth_client, a popup window for flutter, used for getting authentication from Identity provider(eg, Internet Identity).

  • authentication, a library supports auth_client

  • candid, candid library, used for encoding/decoding candid data types, and used them in dart-lang.

  • principal, principal library, used for generate principal for many usage cases.

  • protobuf, protobuf library, used for interacting with rosetta-node in submit/query transaction

  • utils, common utils, including useful helpers like extension methods in dart.

  • wallet, wallet library, signer, rosetta, key-smith all-in-one library.


Updates since 0.1.16:


  • Add CurveType for signers.

  • Add bits getters for FixedIntClass and FixedNatClass.

  • Adopt Platform.environment for Flutter 3.


  • Fix issues when encoding OptClass.


  • Add encryptCborPhrase method.


  • :adhesive_bandage: HotFix :adhesive_bandage: Remove invalid asserts with defaultFetch. (#19)

  • Remove unused tests.


  • :bulb: BREAKING CHANGE :bulb: Fix fetch method type.

  • Remove unused files.

  • Use structured polling exceptions.

  • Improve defaultFetch.

  • Add decryptCborPhrase.


  • Fix function name typos.

  • Support toJson to candid.


  • Remove unused files and functions.


  • Use archive: 3.3.0.


  • Use Isolate.spawn and Isolate.exit` to optimize isolate functions.


  • Fix http request when IC returns dual headers using Flutter web.


  • Skip…


  • Use latest api of ledger.

  • Fix encoder.


  • Add identity from pem.


  • Fix type annotation applied to dart 2.15.0.


  • Add CanisterId class.

  • Fix rosetta api.

  • Prevent secp256k1 weak signatures.

  • Fix build scripts.


  • Add fromStorage to auth_client.


  • Fix rosetta with latest mainnet APIs.

  • Fix cbor with primitive types.

  • Format all files.


Hey @neeboo,

agent_dart is incredible, inspiring developers to create solutions with a mobile-first approach.

We recently transitioned our backend from a monolithic to a microservices architecture and are eager to leverage the “composite queries” feature introduced in dfx 0.15.0. I attempted to use agent_dart: ^1.0.0-dev.16, but encountered timeout issues with the endpoint request. Could you provide guidance on the likely cause of this problem? Thank you in advance.

P.S : We’re eagerly waiting to add composite queries to our dApp before we launch the pre-beta version. The boost in throughput from this feature is huge, making it totally worth the wait before our big release.

1 Like

In js version, does it work?

And how do you generate dart code? Candid_dart or write manually?

1 Like

I tried using Candid Ui and it returns the response as expected

I wrote the interface manually, not used candid_dart.