https://github.com/polkawallet-io/app
[Main] Polkawallet app.
https://github.com/polkawallet-io/app
flutter substrate wallet
Last synced: 4 months ago
JSON representation
[Main] Polkawallet app.
- Host: GitHub
- URL: https://github.com/polkawallet-io/app
- Owner: polkawallet-io
- License: apache-2.0
- Created: 2020-11-10T08:20:54.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-12-26T11:40:48.000Z (over 1 year ago)
- Last Synced: 2025-05-16T07:40:25.209Z (about 1 year ago)
- Topics: flutter, substrate, wallet
- Language: Dart
- Homepage: https://polkawallet.io
- Size: 24.8 MB
- Stars: 157
- Watchers: 8
- Forks: 72
- Open Issues: 126
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Polkawallet App
## Download
[](https://apps.apple.com/us/app/polkawallet/id1520301768)
[](https://play.google.com/store/apps/details?id=io.polkawallet.www.polka_wallet)
----
[](https://github.com/polkawallet-io/app/releases)
[](https://github.com/polkawallet-io/app/tags)
Polkawallet built with Flutter, https://polkawallet.io

## Introduction
[Polkawallet](http://polkawallet.io) provide one-stop management for cross-chain assets, convenient staking and governance operations, and the private key is self-owned.
Polkawallet is aiming to provide a more convenient entrance of the polkadot network for all the users of Polkadot/Kusama/Substrate-based-blockchains.
- Friendly UI.
- Secure local accounts storage.
- Intuitive Tokens management.
- Simplified staking & governance operations.
- Offline signature supported.
- Available for both IOS and Android.
- Support any Substrate-based-blockchain to integrate as plugins.
### Todos
- [ ] Add proxy account operations.
- [ ] Support walletConnect protocol.
## Getting Started
Dependencies
- Flutter 2.5.x statble
- Dart 2.10.x
To get started
1. Clone the repo locally, via git clone https://github.com/polkawallet-io/app.git ``.
2. Install the dependencies by running `flutter pub get`.
3. In AndroidStudio, run `lib/main.dart` with arguments `--flavor=prod` on Android Devices,
or just run `lib/main.dart` with no arguments on IOS.
## Contribute
This app was built with several repos, developers of other substrate based chain
may create their own plugin and put it into polkawallet app:
```
__ polkawallet-io/app
|
|__ polkawallet-io/ui
| |__ polkawallet-io/sdk
|
|__ polkawallet_plugin_kusama
| |__ polkawallet-io/sdk
| |__ polkawallet-io/ui
|
|__ polkawallet_plugin_acala
| |__ polkawallet-io/sdk
| |__ polkawallet-io/ui
|
|__ polkawallet_plugin_laminar
| |__ polkawallet-io/sdk
| |__ polkawallet-io/ui
|
|__
|__ <...>
```
### 1. polkawallet-io/js_api
This is a `polkadot-js/api` wrapper which will be built into a single `main.js` file
to run in a hidden webView inside the App. So the App will connect to a substrate node
with `polkadot-js`.
And we wrapped `polkadot-js/keyring` in it, so the App can manage keyPairs.
### 2. polkawallet-io/sdk
This is a `polkawallet-io/js_api` wrapper dart package, it contains:
1. Keyring. Managing keyPairs.
2. PolkawalletSDK. Connect to remote node and call `polkadot-js/api` methods.
3. PolkawalletPlugin. A base plugin class, defined the data and life-circle methods
which will be used in the App.
A polkawallet plugin can get users' keyPairs in the App from Keyring instance.
A polkawallet plugin implementation should extend the `PolkawalletPlugin` class and
define it's own data & life-circle methods.
### 3. polkawallet-io/ui
The common used flutter widgets for `polkawallet-io/app`, like:
- AddressInputForm
- TxConfirmPage
- ScanPage
- ...
### 4. polkawallet-io/polkawallet_plugin_xxx
Examples:
1. [polkawallet-io/polkawallet_plugin_kusama](https://github.com/polkawallet-io/polkawallet_plugin_kusama)
2. [polkawallet-io/polkawallet_plugin_acala](https://github.com/polkawallet-io/polkawallet_plugin_acala)
3. [polkawallet-io/polkawallet_plugin_laminar](https://github.com/polkawallet-io/polkawallet_plugin_laminar)
### 5. App state management
We use [https://pub.dev/packages/mobx](https://pub.dev/packages/mobx).
so the directories in a plugin looks like this:
```
__ lib
|__ pages (the UI)
|__ store (the MobX store)
|__ service (the Actions fired by UI to mutate the store)
|__ ...
```
### 6. Submit your plugin
While your plugin was finished and tested, you may submit an issue in this repo.
We will check into your plugin and add it into the App.
### 7. Plugin update
Submit a update request issue to update your plugin. There are two different kinds of update:
1. Update the dart package. We will rebuild the App and publish a new release.
2. Update the js code of your plugin (dart code was not affected). We will rebuild the
js bundle file and the app will perform a hot-update through polkawallet-api.
### Translation
Polkawallet App has several translation projects on [crowdin.com](https://crowdin.com/):
- [polkawallet](https://crowdin.com/project/polkawallet)
- [kusama plugin](https://crowdin.com/project/polkawalletpluginkusama)
- [acala plugin](https://crowdin.com/project/polkawalletpluginacala)
Language files in the project are written in `json-like` style:
```dart
final enAccount = {
'key': 'value',
'key.another': 'Another value for translation.',
'key.multiline': 'Multiline text are \n split with symbol \n.',
};
/// This 3 strings above will display in the App like:
// value
// Another value for translation.
// Multiline text are
// split with symbol
// .
```
You need to keep the `'key'` field on the left as it is, and translate the `'value'`
field on the right only. Note that the `\n` symbol split a long string into several lines.
### Release checklist
- [ ] sdk version code updated.
- [ ] sdk jsCodeVersion code updated.
- [ ] sdk version code of `polkawallet-io/ui` updated.
- [ ] sdk & ui dependencies of plugins updated.
- [ ] plugins version updated.
- [ ] plugins node list updated.
- [ ] version code in `pubspec.yaml` updated.
- [ ] version code in Xcode for IOS updated.