Flutter区块链交互插件magic_ext_tezos的使用
Flutter区块链交互插件magic_ext_tezos的使用
特性
Magic 提供了一种创新的无密码认证流程,使你的iOS或Android应用无需用户承担传统OAuth实现带来的用户体验负担。它还允许你与Tezos区块链进行交互。
安装
在pubspec.yaml
文件中添加以下依赖项:
dependencies:
flutter:
sdk: flutter
magic_sdk: ^4.0.0
magic_ext_tezos: ^0.2.0
# 请使用启用了远程签名器的tezart版本
tezart:
git: https://github.com/Ethella/tezart.git
运行以下命令以安装依赖项:
$ dart pub get
创建SDK实例
在main.dart
文件中,使用你的发布密钥实例化Magic,并初始化Tezos。
void main() {
runApp(const MyApp());
Magic.instance = Magic.blockchain("YOUR_PUBLISHABLE_KEY", rpcUrl: "https://ithacanet.smartpy.io/", chain: SupportedBlockchain.tezos);
}
使用Stack
作为顶级组件,并将Magic.instance.relayer
添加到Stack
的子组件中,以确保最佳性能。
注意:Relayer是建立应用程序和服务之间通信所必需的。在需要认证或与区块链交互时,请确保包含它。
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
// 这个小部件是你的应用的根
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
title: 'Magic Demo',
home: Stack(children: [
const LoginPage(),
Magic.instance.relayer
]),
);
}
}
认证第一个用户
通过OAuth方式认证你的第一个用户:
var token = await magic.auth.loginWithEmailOTP(email: textController.text);
与Tezos交互
认证一个新用户后,现在可以开始与Tezos进行交互了。
// 创建Tezos签名器
final tezosSigner = Magic.instance.tezos;
// 创建Tezart实例
final client = TezartClient('https://ithacanet.smartpy.io/');
// 初始化Tezos签名器
await tezosSigner.init();
// 发送交易
final operationsList = await client.transferOperation(
source: Keystore.fromRemoteSigner(tezosSigner),
destination: tezosSigner.address,
amount: 10001,
);
await operationsList.executeAndMonitor();
示例代码
以下是一个完整的示例代码,展示了如何使用magic_ext_tezos
插件与Tezos进行交互。
import 'package:flutter/material.dart';
import 'package:magic_ext_tezos/magic_ext_tezos.dart';
import 'package:magic_sdk/magic_sdk.dart';
import 'package:tezart/tezart.dart';
class TezosPage extends StatefulWidget {
[@override](/user/override)
_TezosPageState createState() => _TezosPageState();
}
class _TezosPageState extends State<TezosPage> {
final tezosSigner = Magic.instance.tezos;
final client = TezartClient('https://ithacanet.smartpy.io/');
[@override](/user/override)
void initState() {
super.initState();
tezosSigner.init();
}
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
// 获取公钥地址
ElevatedButton(
onPressed: () async {
String? address = tezosSigner.address;
print(address);
},
child: const Text('获取公钥'),
),
// 发送交易
ElevatedButton(
onPressed: () async {
final operationsList = await client.transferOperation(
source: Keystore.fromRemoteSigner(tezosSigner),
destination: tezosSigner.address,
amount: 10001,
);
await operationsList.executeAndMonitor();
},
child: const Text('发送交易'),
),
// 获取余额
ElevatedButton(
onPressed: () async {
final balance = await client.getBalance(address: tezosSigner.address);
print('余额为: ${tezosSigner.address}, $balance');
},
child: const Text('获取余额'),
),
],
),
),
);
}
}
更多关于Flutter区块链交互插件magic_ext_tezos的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复