Flutter加密货币管理插件moneroo_flutter_sdk的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter加密货币管理插件moneroo_flutter_sdk的使用

Moneroo网站

Moneroo Flutter SDK #

Slack · 网站 · 联系我们 · 文档

需求

❗ 为了开始使用Moneroo Flutter,你必须在你的机器上安装[Flutter SDK][flutter_install_link]。

安装

通过 flutter pub add 安装:

flutter pub add moneroo_flutter_sdk

配置

Android

在你的 <code>AndroidManifest.xml</code> 中添加这一行。这将帮助你在处理支付时避免出现 ERR_CLEAR_TEXT_NOT_PERMITTED 错误。

不要忘记允许Android应用访问互联网!更多信息请点击这里!

<application
        ...
        android:usesCleartextTraffic="true"
        ...
        >
        ...
</application>

iOS

在你的 <code>Info.plist</code> 中添加这一行。这将帮助你在处理支付时避免出现 ERR_CLEAR_TEXT_NOT_PERMITTED 错误。

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

文档

你可以在这里查看一个完整的示例。你也可以使用 <code>MonerooApi</code> 类来实现自己的支付功能,而无需使用此包提供的 Moneroo 小部件。

开发

开发模式

注意事项

异常处理 🐛

  • MonerooException: 当API调用期间发生错误时抛出此异常。你可以通过记录该类的属性来获取更多相关信息。
  • ServiceUnavailableException: 当SDK无法将请求发送到服务器时抛出此异常。可能是由于网络问题导致的。

安全漏洞

如果你在Moneroo Flutter SDK中发现了一个安全漏洞,请通过电子邮件将其报告给Moneroo Security,邮箱地址为 hello@moneroo.io。所有安全漏洞都将得到及时处理。

许可证

Moneroo Flutter SDK 是开源软件,根据MIT许可证授权。


示例代码

import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:moneroo_flutter_sdk/moneroo_flutter_sdk.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Moneroo Flutter SDK Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

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

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: ElevatedButton(
          child: const Text('立即支付'),
          onPressed: () {
            Navigator.of(context).push(
              MaterialPageRoute(
                builder: (context) => Moneroo(
                  amount: 1, // 支付金额
                  apiKey: 'YOUR_API_KEY', // 你的API密钥
                  currency: MonerooCurrency.XOF, // 货币类型
                  customer: MonerooCustomer(
                    email: 'email@gmail.com', // 客户邮箱
                    firstName: 'firstname', // 客户名
                    lastName: 'lastname', // 客户姓
                  ),
                  description: '这是一个描述', // 支付描述
                  onPaymentCompleted: (infos, context) {
                    if (infos.status == MonerooStatus.success) {
                      Navigator.of(context).pop(); // 如果支付成功,则返回上一页
                    } else {
                      ScaffoldMessenger.of(context).showSnackBar(
                        const SnackBar(
                          content: Text(
                            '我们未能正确完成支付!',
                          ),
                          backgroundColor: Colors.red,
                        ),
                      );
                    }
                  },
                  onError: (error, context) {
                    log(error.toJson().toString()); // 记录错误信息

                    ScaffoldMessenger.of(context).showSnackBar(
                      const SnackBar(
                        content: Text(
                          '发生错误!',
                        ),
                        backgroundColor: Colors.red,
                      ),
                    );
                    Navigator.pop(context); // 返回上一页
                  },
                ),
              ),
            );
          },
        ),
      ),
    );
  }
}

更多关于Flutter加密货币管理插件moneroo_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter加密货币管理插件moneroo_flutter_sdk的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用moneroo_flutter_sdk插件进行加密货币管理的示例代码。请注意,这只是一个基础示例,实际应用中可能需要更多的错误处理和功能扩展。假设moneroo_flutter_sdk插件已经正确安装并添加到你的pubspec.yaml文件中。

首先,确保在pubspec.yaml中添加依赖:

dependencies:
  flutter:
    sdk: flutter
  moneroo_flutter_sdk: ^最新版本号  # 请替换为实际最新版本号

然后,运行flutter pub get来安装依赖。

接下来,在你的Flutter项目中,你可以按照以下步骤使用moneroo_flutter_sdk

  1. 导入包
import 'package:moneroo_flutter_sdk/moneroo_flutter_sdk.dart';
  1. 初始化客户端

你需要提供Monero节点信息来初始化客户端。这里假设你有一个可用的Monero节点。

MoneroClient client = MoneroClient(
  networkType: MoneroNetworkType.MAINNET, // 或者 TESTNET
  daemonAddress: 'http://your-monero-node-address:port', // 替换为你的Monero节点地址和端口
  daemonRpcUser: 'your-rpc-user', // 替换为你的RPC用户名
  daemonRpcPassword: 'your-rpc-password', // 替换为你的RPC密码
);
  1. 获取账户信息
Future<void> fetchAccountInfo() async {
  try {
    MoneroAccountInfo accountInfo = await client.getAccountInfo();
    print('Account Balance: ${accountInfo.balance}');
    print('Unlocked Balance: ${accountInfo.unlockedBalance}');
  } catch (e) {
    print('Error fetching account info: $e');
  }
}
  1. 发送交易

发送交易需要构建交易对象,并调用发送方法。以下是一个简单的示例:

Future<void> sendTransaction() async {
  try {
    String addressTo = 'recipient_monero_address'; // 替换为接收方的Monero地址
    int amount = 100000000000; // 替换为你想发送的Monero金额(单位为原子单位)

    MoneroTransferDetails transferDetails = MoneroTransferDetails(
      address: addressTo,
      amount: amount,
    );

    List<MoneroTransferDetails> transfers = [transferDetails];

    MoneroTransactionConfig config = MoneroTransactionConfig(
      priority: MoneroTransactionPriority.UNIMPORTANT,
      ringSize: 7, // Ring size
      mixinMode: MoneroMixinMode.RANDOM_REMOTE,
      doNotRelay: false,
      getTxKey: true,
    );

    MoneroTransactionResult result = await client.createAndSendTransfer(transfers, config);
    print('Transaction hash: ${result.txHash}');
  } catch (e) {
    print('Error sending transaction: $e');
  }
}
  1. 在主函数中调用
void main() {
  runApp(MyApp());

  // 示例调用
  fetchAccountInfo();
  sendTransaction();
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Monero Wallet App'),
        ),
        body: Center(
          child: Text('Check console for account info and transaction details'),
        ),
      ),
    );
  }
}

注意

  • 在实际使用中,fetchAccountInfosendTransaction函数应该被适当地封装在状态管理逻辑中,而不是直接在main函数中调用。
  • 确保你的Monero节点是运行中的,并且RPC用户名和密码是正确的。
  • 处理所有可能的异常和错误情况,尤其是在处理加密货币交易时。

这个示例展示了如何使用moneroo_flutter_sdk进行基本的账户信息查询和交易发送。根据你的具体需求,你可能需要扩展和修改这些代码。

回到顶部