Flutter钱包连接插件ios_wallet_connect的使用

Flutter钱包连接插件ios_wallet_connect的使用

将DApp带到iOS

请在示例文件夹中查看一个可用的示例。

对于方法的具体实现,请参阅以下文档: https://docs.phantom.app/phantom-deeplinks/provider-methods

完整示例代码

以下是使用ios_wallet_connect插件的完整示例代码:

import 'package:flutter/material.dart';
import 'package:pinenacl/x25519.dart';
import 'package:ios_wallet_connect/ios_wallet_connect.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});
  
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'IOS_Wallet_Connect Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.lightBlue),
        useMaterial3: true,
      ),
      home: const MyHomePage(title: 'IOS_Wallet_Connect Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  // 初始化客户端
  var client = IosWalletConnect(
    appUrl: "https://dreader.io",
    deepLinkUrl: "soltest://",
  );

  [@override](/user/override)
  void initState() {
    // 初始化客户端
    client.init();
    super.initState();
  }

  // 创建按钮
  Widget Button(Function onPressed, String name) {
    return ElevatedButton(
      onPressed: () {
        onPressed();
      },
      child: Text(name),
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            // 连接钱包
            Button(() async {
              var session = await client.connect(cluster: "devnet");
              print(session);
            }, "连接"),

            const SizedBox(height: 10),

            // 签名交易
            Button(() async {
              var session = await client.signTransaction(
                  transaction: Uint8List.fromList([1, 2, 3, 4, 5, 6, 7, 8, 9]));
              print(session);
            }, "签名交易"),

            const SizedBox(height: 10),

            // 签名所有交易
            Button(() async {
              var session = await client.signAllTransactions(transactions: [
                Uint8List.fromList([1, 2, 3, 4, 5, 6, 7, 8, 9])
              ]);
              print(session);
            }, "签名所有交易"),

            const SizedBox(height: 10),

            // 签名并发送交易
            Button(() async {
              var session = await client.signAndSendTransaction(
                  transaction: Uint8List.fromList([1, 2, 3, 4, 5, 6, 7, 8, 9]));
              print(session);
            }, "签名并发送交易"),

            const SizedBox(height: 10),

            // 签名消息
            Button(() async {
              var session = await client.connect(cluster: "devnet");
              print(session);
            }, "签名消息"),

            const SizedBox(height: 10),

            // 断开连接
            Button(() async {
              await client.disconnect();
            }, "断开连接"),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter钱包连接插件ios_wallet_connect的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter钱包连接插件ios_wallet_connect的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


ios_wallet_connect 是一个用于在 Flutter 应用中实现与 iOS 钱包连接功能的插件。它允许你在 Flutter 应用中与支持 WalletConnect 协议的 iOS 钱包进行交互,例如 MetaMask、Trust Wallet 等。

以下是如何在 Flutter 项目中使用 ios_wallet_connect 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 ios_wallet_connect 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  ios_wallet_connect: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在需要使用 ios_wallet_connect 的 Dart 文件中导入插件:

import 'package:ios_wallet_connect/ios_wallet_connect.dart';

3. 初始化 WalletConnect

在使用 WalletConnect 之前,你需要初始化它:

final walletConnect = WalletConnect(
  bridge: 'https://bridge.walletconnect.org',  // WalletConnect 桥接服务器
  clientMeta: const PeerMeta(
    name: 'Your App Name',
    description: 'Your App Description',
    url: 'https://your.app.url',
    icons: ['https://your.app.url/icon.png'],
  ),
);

4. 连接到钱包

你可以使用 walletConnect.connect() 方法来启动连接流程。这通常会显示一个二维码,用户可以使用他们的 iOS 钱包应用扫描该二维码以建立连接。

final session = await walletConnect.connect();

5. 处理连接会话

一旦连接成功,你可以处理会话信息,例如获取钱包地址:

final walletAddress = session.accounts[0];
print('Connected wallet address: $walletAddress');

6. 发送交易或签名消息

你可以使用 walletConnect.sendTransaction()walletConnect.signMessage() 方法来发送交易或请求签名消息。

final txHash = await walletConnect.sendTransaction(
  from: walletAddress,
  to: '0xRecipientAddress',
  value: '0x1',  // 金额
  gas: '0x5208',  // Gas 限制
  gasPrice: '0x3B9ACA00',  // Gas 价格
  data: '0x',  // 交易数据
);

print('Transaction hash: $txHash');

7. 断开连接

当你不再需要连接时,可以调用 walletConnect.disconnect() 来断开连接。

await walletConnect.disconnect();

8. 监听会话状态变化

你可以监听会话状态的变化,例如连接、断开等:

walletConnect.on('connect', (session) {
  print('Connected: ${session.accounts[0]}');
});

walletConnect.on('disconnect', () {
  print('Disconnected');
});

9. 处理错误

处理可能发生的错误:

walletConnect.on('error', (error) {
  print('Error: $error');
});

10. iOS 配置

确保在 Info.plist 文件中添加必要的权限和配置,例如:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key>
  <true/>
</dict>

11. 运行应用

现在你可以运行你的 Flutter 应用,并测试与 iOS 钱包的连接功能。

flutter run
回到顶部