account.dart 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. import 'dart:convert';
  2. import 'package:flutter/material.dart';
  3. import 'package:polkawallet_sdk/api/types/balanceData.dart';
  4. import 'package:polkawallet_sdk/polkawallet_sdk.dart';
  5. import 'package:polkawallet_sdk_example/pages/keyring.dart';
  6. class AccountPage extends StatefulWidget {
  7. AccountPage(this.sdk, this.showResult);
  8. final WalletSDK sdk;
  9. final Function(BuildContext, String, String) showResult;
  10. static const String route = '/account';
  11. @override
  12. _AccountPageState createState() => _AccountPageState();
  13. }
  14. class _AccountPageState extends State<AccountPage> {
  15. final String _testPubKey =
  16. '0xe611c2eced1b561183f88faed0dd7d88d5fafdf16f5840c63ec36d8c31136f61';
  17. final String _testAddress =
  18. '16CfHoeSifpXMtxVvNAkwgjaeBXK8rAm2CYJvQw4MKMjVHgm';
  19. final String _testAddressGav =
  20. 'FcxNWVy5RESDsErjwyZmPCW6Z8Y3fbfLzmou34YZTrbcraL';
  21. bool _submitting = false;
  22. BalanceData? _balance;
  23. String? _msgChannel;
  24. Future<void> _encodeAddress() async {
  25. setState(() {
  26. _submitting = true;
  27. });
  28. final res = await widget.sdk.api.account.encodeAddress([_testPubKey]);
  29. widget.showResult(
  30. context,
  31. 'encodeAddress',
  32. JsonEncoder.withIndent(' ').convert(res),
  33. );
  34. setState(() {
  35. _submitting = false;
  36. });
  37. }
  38. Future<void> _decodeAddress() async {
  39. setState(() {
  40. _submitting = true;
  41. });
  42. final res = await widget.sdk.api.account.decodeAddress([_testAddress]);
  43. widget.showResult(
  44. context,
  45. 'decodeAddress',
  46. JsonEncoder.withIndent(' ').convert(res),
  47. );
  48. setState(() {
  49. _submitting = false;
  50. });
  51. }
  52. Future<void> _getPubKeyIcons() async {
  53. setState(() {
  54. _submitting = true;
  55. });
  56. final res = await widget.sdk.api.account.getPubKeyIcons([_testPubKey]);
  57. widget.showResult(
  58. context, 'getPubKeyIcons', JsonEncoder.withIndent(' ').convert(res));
  59. setState(() {
  60. _submitting = false;
  61. });
  62. }
  63. Future<void> _getAddressIcons() async {
  64. setState(() {
  65. _submitting = true;
  66. });
  67. final res = await widget.sdk.api.account.getAddressIcons([_testAddress]);
  68. widget.showResult(
  69. context, 'getAddressIcons', JsonEncoder.withIndent(' ').convert(res));
  70. setState(() {
  71. _submitting = false;
  72. });
  73. }
  74. Future<void> _queryIndexInfo() async {
  75. setState(() {
  76. _submitting = true;
  77. });
  78. final res = await widget.sdk.api.account
  79. .queryIndexInfo([_testAddress, _testAddressGav]);
  80. widget.showResult(
  81. context, 'queryIndexInfo', JsonEncoder.withIndent(' ').convert(res));
  82. setState(() {
  83. _submitting = false;
  84. });
  85. }
  86. Future<void> _queryBalance() async {
  87. setState(() {
  88. _submitting = true;
  89. });
  90. final res = await widget.sdk.api.account.queryBalance(_testAddress);
  91. widget.showResult(context, 'queryBalance',
  92. JsonEncoder.withIndent(' ').convert(res?.toJson()));
  93. setState(() {
  94. _submitting = false;
  95. });
  96. }
  97. Future<void> _subscribeBalance() async {
  98. final channel =
  99. await widget.sdk.api.account.subscribeBalance(_testAddress, (res) {
  100. setState(() {
  101. _balance = res;
  102. });
  103. });
  104. setState(() {
  105. _msgChannel = channel;
  106. });
  107. }
  108. Future<void> _checkAddressFormat() async {
  109. setState(() {
  110. _submitting = true;
  111. });
  112. final res =
  113. await widget.sdk.api.account.checkAddressFormat(_testAddress, 2);
  114. widget.showResult(context, 'checkAddressFormat',
  115. JsonEncoder.withIndent(' ').convert(res));
  116. setState(() {
  117. _submitting = false;
  118. });
  119. }
  120. @override
  121. void dispose() {
  122. if (_msgChannel != null) {
  123. widget.sdk.api.unsubscribeMessage(_msgChannel!);
  124. }
  125. super.dispose();
  126. }
  127. @override
  128. Widget build(BuildContext context) {
  129. return Scaffold(
  130. appBar: AppBar(
  131. title: Text('account API'),
  132. ),
  133. body: SafeArea(
  134. child: ListView(
  135. children: [
  136. ListTile(
  137. title: Text('subscribe balance: ${_balance?.freeBalance}'),
  138. ),
  139. Divider(),
  140. ListTile(
  141. title: Text('encodeAddress'),
  142. subtitle: Text('sdk.api.account.encodeAddress(["$_testPubKey"])'),
  143. trailing: SubmitButton(
  144. needConnect: widget.sdk.api.connectedNode == null,
  145. submitting: _submitting,
  146. call: _encodeAddress,
  147. ),
  148. ),
  149. Divider(),
  150. ListTile(
  151. title: Text('decodeAddress'),
  152. subtitle:
  153. Text('sdk.api.account.decodeAddress(["$_testAddress"])'),
  154. trailing: SubmitButton(
  155. submitting: _submitting,
  156. call: _decodeAddress,
  157. ),
  158. ),
  159. Divider(),
  160. ListTile(
  161. title: Text('getPubKeyIcons'),
  162. subtitle:
  163. Text('sdk.api.account.getPubKeyIcons(["$_testPubKey"])'),
  164. trailing: SubmitButton(
  165. submitting: _submitting,
  166. call: _getPubKeyIcons,
  167. ),
  168. ),
  169. Divider(),
  170. ListTile(
  171. title: Text('getAddressIcons'),
  172. subtitle:
  173. Text('sdk.api.account.getAddressIcons(["$_testAddress"])'),
  174. trailing: SubmitButton(
  175. submitting: _submitting,
  176. call: _getAddressIcons,
  177. ),
  178. ),
  179. Divider(),
  180. ListTile(
  181. title: Text('queryIndexInfo'),
  182. subtitle: Text(
  183. 'sdk.api.account.queryIndexInfo(["$_testAddress", "$_testAddressGav"])'),
  184. trailing: SubmitButton(
  185. needConnect: widget.sdk.api.connectedNode == null,
  186. submitting: _submitting,
  187. call: _queryIndexInfo,
  188. ),
  189. ),
  190. Divider(),
  191. ListTile(
  192. title: Text('queryBalance'),
  193. subtitle: Text('sdk.api.account.queryBalance("$_testAddress")'),
  194. trailing: SubmitButton(
  195. needConnect: widget.sdk.api.connectedNode == null,
  196. submitting: _submitting,
  197. call: _queryBalance,
  198. ),
  199. ),
  200. Divider(),
  201. ListTile(
  202. title: Text('subscribeBalance'),
  203. subtitle: Text(
  204. 'sdk.api.account.subscribeBalance("$_testAddress", onUpdate: (res) => {})'),
  205. trailing: SubmitButton(
  206. needConnect: widget.sdk.api.connectedNode == null,
  207. submitting: _submitting,
  208. call: _subscribeBalance,
  209. ),
  210. ),
  211. Divider(),
  212. ListTile(
  213. title: Text('checkAddressFormat'),
  214. subtitle: Text(
  215. 'sdk.api.account.checkAddressFormat(["$_testPubKey"],2)'),
  216. trailing: SubmitButton(
  217. // needConnect: !widget.sdk.api.isConnected,
  218. submitting: _submitting,
  219. call: _checkAddressFormat,
  220. ),
  221. ),
  222. Divider(),
  223. ],
  224. ),
  225. ), // This trailing comma makes auto-formatting nicer for build methods.
  226. );
  227. }
  228. }