Awesome
Polkawallet App
Download
Polkawallet built with Flutter, https://polkawallet.io
Introduction
Polkawallet 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
- Clone the repo locally, via git clone https://github.com/polkawallet-io/app.git
<optional local path>
. - Install the dependencies by running
flutter pub get
. - In AndroidStudio, run
lib/main.dart
with arguments--flavor=prod
on Android Devices, or just runlib/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
|
|__ <plugin of another substrate based chain>
|__ <...>
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:
- Keyring. Managing keyPairs.
- PolkawalletSDK. Connect to remote node and call
polkadot-js/api
methods. - 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:
- polkawallet-io/polkawallet_plugin_kusama
- polkawallet-io/polkawallet_plugin_acala
- polkawallet-io/polkawallet_plugin_laminar
5. App state management
We use 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:
- Update the dart package. We will rebuild the App and publish a new release.
- 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:
Language files in the project are written in json-like
style:
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.