{"id":21616376,"url":"https://github.com/rootsoft/flutter-algosigner","last_synced_at":"2026-05-07T21:36:09.147Z","repository":{"id":61973414,"uuid":"376958193","full_name":"RootSoft/flutter-algosigner","owner":"RootSoft","description":"A Flutter web plugin to approve or deny Algorand transactions using AlgoSigner.","archived":false,"fork":false,"pushed_at":"2021-06-15T10:24:01.000Z","size":160,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-24T20:47:31.734Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RootSoft.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-06-14T21:15:07.000Z","updated_at":"2022-02-02T23:55:24.000Z","dependencies_parsed_at":"2022-10-24T13:30:39.647Z","dependency_job_id":null,"html_url":"https://github.com/RootSoft/flutter-algosigner","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RootSoft%2Fflutter-algosigner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RootSoft%2Fflutter-algosigner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RootSoft%2Fflutter-algosigner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RootSoft%2Fflutter-algosigner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RootSoft","download_url":"https://codeload.github.com/RootSoft/flutter-algosigner/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244267475,"owners_count":20425835,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-24T22:14:20.966Z","updated_at":"2026-05-07T21:36:09.118Z","avatar_url":"https://github.com/RootSoft.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e \n\u003cimg src=\"https://github.com/PureStake/algosigner/raw/develop/media/algosigner-wallet-banner-3.png\"\u003e\n\u003c/p\u003e\n\n# flutter-algosigner\n[![pub.dev][pub-dev-shield]][pub-dev-url]\n[![Effective Dart][effective-dart-shield]][effective-dart-url]\n[![Stars][stars-shield]][stars-url]\n[![Issues][issues-shield]][issues-url]\n[![MIT License][license-shield]][license-url]\n\nAlgoSigner is a blockchain wallet that makes it easy to use Algorand-based applications on the web. Simply create or import your Algorand account, visit a compatible dApp, and approve or deny transactions — all from within your browser.\n\nAlgoSigner opens the door for developers to build DeFi applications on [Algorand](https://www.algorand.com/) by providing a secure way to add transaction capabilities. This enables developers to initiate transactions and accept ALGOs seamlessly, without jeopardizing the security of their users’ secrets.\n\nDApp users can trust AlgoSigner to:\n\n* Securely store and encrypt account secrets\n* Authorize transactions without giving dApps direct access to their keys\n* Sign and approve transactions when using dApps\n\nThe plugin was developed by RootSoft and is not affiliated with PureStake or AlgoSigner is any way. For more information, check out the official AlgoSigner [documentation](https://github.com/PureStake/algosigner/blob/develop/docs/dApp-guide.md).\n\n## Introduction\n\nAlgoSigner injects a JavaScript library into every web page the browser user visits, which allows the site to interact with the extension. The dApp can use the injected library to connect to the user's Wallet, discover account addresses it holds, query the Network (make calls to AlgoD v2 or the Indexer) and request AlgoSigner to request for the user to sign a transaction initiated by the application. All methods of the injected library return a Future that needs to be handled by the dApp.\n\nThe flutter-algosigner plugin follows the AlgoSigner API closely and all methods are available. The plugin integrates elegantly with the [algorand_dart](https://github.com/RootSoft/algorand-dart) SDK so transactions can be easily signed and approved.\n\nOnce installed, you can simply sign transactions and start sending payments:\n\n```dart\nawait AlgoSigner.connect();\n\n/// Sign the transaction\nfinal txs = await AlgoSigner.signTransaction(\n    {\n      'txn': transaction.toBase64(),\n    },\n);\n\n// Send the transaction\nfinal txId = await AlgoSigner.send(\n    ledger: 'TestNet',\n    transaction: blob,\n);\n```\n\n## Getting started\n\n### Installation\n\nYou can install the package via pub.dev:\n\n```bash\nflutter pub add flutter_algosigner\n```\n\nThis will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):\n\n```yaml\ndependencies:\n  flutter_algosigner: ^latest-version\n```\n\nAlternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.\n\n## Methods\nThe **flutter-algosigner** web plugin wraps the JavaScript API and exposes methods for Flutter developers. This way, Flutter web developers can benefit and create web3 dApplications using the same API.\n\n### connect()\n\nRequests access to the Wallet for the dApp, may be rejected or approved. Every access to the extension begins with a connect request, which if approved by the user, allows the dApp to follow-up with other requests.\n\n```dart\nawait AlgoSigner.connect();\n```\n\n### accounts()\n\nReturns an array of accounts present in the Wallet for the given Network.\n\n```dart\nfinal accounts = await AlgoSigner.accounts(ledger: 'TestNet');\n```\n\n### algod()\n\nProxies the requested path to the Algod v2 API. Is limited to endpoints made available by the API server. By default, all calls to the AlgoSigner.algod method are GET.\n\n```dart\nawait AlgoSigner.algod(\n    ledger: 'TestNet',\n    path: '/v2/transactions/params',\n);\n```\n\nTo make a POST requests, more details need to be included in as input.\n\n```dart\nawait AlgoSigner.algod(\n    ledger: 'TestNet',\n    path: '/v2/teal/compile',\n    body: 'int 0',\n    method: 'POST',\n    contentType: 'text/plain',\n);\n```\n\n### indexer()\n\nProxies the requested path to the Indexer v2 API. Is limited to endpoints made available by the API server. The API backend may be configured by advanced users and is not guaranteed to respond as expected. More information can be found here.\n\n```dart\nawait AlgoSigner.indexer(\n    ledger: 'TestNet',\n    path: '/v2/assets/150821',\n);\n```\n\n### signTransaction()\n\nSend transaction objects, conforming to the Algorand JS SDK, to AlgoSigner for approval. The Network is determined from the 'genesis-id' property. If approved, the response is an array of signed transaction objects, with the binary blob field base64 encoded to prevent transmission issues.\n\n#### Transaction Requirements\n\nTransactions objects need to be presented with the following structure:\n\n```\n{\n  txn: Base64-encoded string of a transaction binary,\n  signers?: [optional] array of addresses to sign with (defaults to the sender),\n  multisig?: [optional] extra metadata needed for multisig transactions,\n};\n```\n\nFor more information, see the [transaction requirements](https://github.com/PureStake/algosigner/blob/develop/docs/dApp-integration.md#transaction-requirements)\n\n#### Request\n\n```dart\nawait AlgoSigner.signTransactions(\n    [\n      {\n        'txn': transaction.toBase64(),\n      },\n    ],\n);\n```\n\n#### Example\nThe following displays an example on how the algorand-dart SDK can be used to sign transactions with AlgoSigner.\n\n```dart\nawait AlgoSigner.connect();\n\n// Fetch the suggested transaction params\nfinal params = await algorand.getSuggestedTransactionParams();\n\n// Build the transaction\nfinal transaction = await (PaymentTransactionBuilder()\n    ..sender = address\n    ..note = 'Hi from Flutter'\n    ..amount = Algo.toMicroAlgos(0.1)\n    ..receiver = address\n    ..suggestedParams = params)\n  .build();\n\nfinal txs = await AlgoSigner.signTransactions(\n    [\n      {\n        'txn': transaction.toBase64(),\n      },\n    ],\n);\n\nfinal blob = txs[0]['blob'];\n```\n\n### send()\n\nSend a base64 encoded signed transaction blob to AlgoSigner to transmit to the Network.\n\n```dart\nfinal txId = await AlgoSigner.send(\n    ledger: 'TestNet',\n    transaction: blob,\n);\n\nfinal tx = await algorand.waitForConfirmation(txId);\n```\n\n## Changelog\n\nPlease see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.\n\n## Contributing \u0026 Pull Requests\nFeel free to send pull requests.\n\nPlease see [CONTRIBUTING](.github/CONTRIBUTING.md) for details.\n\n## Credits\n\n- [Tomas Verhelst](https://github.com/rootsoft)\n- [All Contributors](../../contributors)\n\n## License\n\nThe MIT License (MIT). Please see [License File](LICENSE.md) for more information.\n\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[pub-dev-shield]: https://img.shields.io/pub/v/flutter_algosigner?style=for-the-badge\n[pub-dev-url]: https://pub.dev/packages/flutter_algosigner\n[effective-dart-shield]: https://img.shields.io/badge/style-effective_dart-40c4ff.svg?style=for-the-badge\n[effective-dart-url]: https://github.com/tenhobi/effective_dart\n[stars-shield]: https://img.shields.io/github/stars/rootsoft/flutter-algosigner.svg?style=for-the-badge\u0026logo=github\u0026colorB=deeppink\u0026label=stars\n[stars-url]: https://github.com/RootSoft/flutter-algosigner/stargazers\n[issues-shield]: https://img.shields.io/github/issues/rootsoft/flutter-algosigner.svg?style=for-the-badge\n[issues-url]: https://github.com/rootsoft/flutter-algosigner/issues\n[license-shield]: https://img.shields.io/github/license/rootsoft/flutter-algosigner.svg?style=for-the-badge\n[license-url]: https://github.com/RootSoft/flutter-algosigner/blob/master/LICENSE","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootsoft%2Fflutter-algosigner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frootsoft%2Fflutter-algosigner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootsoft%2Fflutter-algosigner/lists"}