Flutter钱包核心功能插件trust_wallet_core_new的使用

Flutter钱包核心功能插件trust_wallet_core_new的使用

trust_wallet_core

trust_wallet_core 是一个用于 Flutter 的插件,它映射了所有在 https://github.com/trustwallet/wallet-core/tree/master/include/TrustWalletCore 中列出的 API。


IMPORTANT

由于官方库在 CMakeLists.txt 中设置了 set(CMAKE_CXX_VISIBILITY_PRESET hidden),这会导致 Android 上运行时 Dart FFI 查找函数时出现异常。

如果你希望运行 Android 示例,请按照以下步骤操作:
我的另一个仓库 来运行完整的演示。


Android

在你的 Android 项目中,你需要在 MainActivity.kt 文件中添加以下代码:

class MainActivity: FlutterActivity() {
    init {
        System.loadLibrary("TrustWalletCore")
    }
}

同时,确保你的 minSdk 设置为 >= 23。


iOS

对于 iOS 平台,支持的最低版本为 iOS 13.0。


Dart 部分

在使用 wallet_core 之前,需要调用以下初始化函数一次:

FlutterTrustWalletCore.init();

然后你就可以开始运行了。


完整示例代码

以下是完整的示例代码,展示如何使用 trust_wallet_core 插件。

示例代码:example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:trust_wallet_core/flutter_trust_wallet_core.dart'; // 引入 trust_wallet_core 插件
import 'package:trust_wallet_core_example/bitcoin_address_example.dart'; // 示例模块
import 'package:trust_wallet_core_example/bitcoin_transaction_example.dart';
import 'package:trust_wallet_core_example/ethereum_example.dart';
import 'package:trust_wallet_core_example/private_key_is_valid_example.dart';
import 'package:trust_wallet_core_example/tron_example.dart';

List<String> logs = []; // 日志列表

void main() {
  runApp(MyApp()); // 启动应用
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Example(), // 主页面
    );
  }
}

class Example extends StatefulWidget {
  [@override](/user/override)
  _ExampleState createState() => _ExampleState(); // 创建状态
}

class _ExampleState extends State<Example> {
  late HDWallet wallet; // 钱包实例

  [@override](/user/override)
  void initState() {
    FlutterTrustWalletCore.init(); // 初始化插件
    super.initState();
    String mnemonic =
        "rent craft script crucial item someone dream federal notice page shrug pipe young hover duty"; // 测试助记词
    wallet = HDWallet.createWithMnemonic(mnemonic); // 创建钱包
  }

  // 生成示例按钮
  Widget _exampleItem({
    required String name,
    required WidgetBuilder builder,
  }) {
    return ElevatedButton(
      onPressed: () {
        Navigator.of(context).push(MaterialPageRoute(builder: builder)); // 跳转到示例页面
      },
      child: Text(name),
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('wallet core example app'), // 应用标题
      ),
      body: SafeArea(
        child: Column(
          children: [
            Text(wallet.mnemonic()), // 显示助记词
            Expanded(
              child: ListView(
                padding: EdgeInsets.zero,
                children: [
                  _exampleItem(
                    name: 'Ethereum', // 以太坊示例
                    builder: (_) {
                      return EthereumExample(wallet);
                    },
                  ),
                  _exampleItem(
                    name: 'Bitcoin Address', // 比特币地址示例
                    builder: (_) {
                      return BitcoinAddressExample(wallet);
                    },
                  ),
                  _exampleItem(
                    name: 'Bitcoin Transaction', // 比特币交易示例
                    builder: (_) {
                      return BitcoinTransactionExample(wallet);
                    },
                  ),
                  _exampleItem(
                    name: 'Tron', // 波场示例
                    builder: (_) {
                      return TronExample(wallet);
                    },
                  ),
                  _exampleItem(
                    name: 'PrivateKey.isValid(a,b)', // 私钥验证示例
                    builder: (_) {
                      return PrivateKeyIsValidExample(wallet);
                    },
                  ),
                ],
              ),
            ),
            ElevatedButton(
              onPressed: () async {
                wallet.delete(); // 删除钱包
                wallet = HDWallet(); // 重新生成钱包
                setState(() {}); // 更新 UI
              },
              child: Text("gen"), // 按钮文本
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


trust_wallet_core_new 是一个用于 Flutter 的钱包核心功能插件,它基于 Trust Wallet 的核心库(Trust Wallet Core)。这个插件提供了创建、管理和操作加密货币钱包的核心功能,包括生成助记词、创建钱包、导入钱包、签名交易等。

主要功能

  1. 生成助记词:生成 BIP39 标准的助记词。
  2. 创建钱包:通过助记词创建钱包。
  3. 导入钱包:通过助记词或私钥导入钱包。
  4. 获取地址:获取指定币种的地址。
  5. 签名交易:对交易进行签名。
  6. 管理多种币种:支持多种加密货币,如 Bitcoin、Ethereum 等。

安装

pubspec.yaml 文件中添加依赖:

dependencies:
  trust_wallet_core_new: ^0.1.0

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

使用示例

1. 生成助记词

import 'package:trust_wallet_core_new/trust_wallet_core_new.dart';

void main() {
  // 生成助记词
  String mnemonic = TrustWalletCore.generateMnemonic();
  print('Generated Mnemonic: $mnemonic');
}

2. 创建钱包

import 'package:trust_wallet_core_new/trust_wallet_core_new.dart';

void main() {
  // 生成助记词
  String mnemonic = TrustWalletCore.generateMnemonic();
  
  // 通过助记词创建钱包
  Wallet wallet = TrustWalletCore.createWallet(mnemonic);
  
  // 获取钱包地址
  String address = wallet.getAddressForCoin(CoinType.ethereum);
  print('Ethereum Address: $address');
}

3. 导入钱包

import 'package:trust_wallet_core_new/trust_wallet_core_new.dart';

void main() {
  // 已有的助记词
  String mnemonic = "your mnemonic here";
  
  // 通过助记词导入钱包
  Wallet wallet = TrustWalletCore.importWallet(mnemonic);
  
  // 获取钱包地址
  String address = wallet.getAddressForCoin(CoinType.bitcoin);
  print('Bitcoin Address: $address');
}

4. 签名交易

import 'package:trust_wallet_core_new/trust_wallet_core_new.dart';

void main() {
  // 生成助记词
  String mnemonic = TrustWalletCore.generateMnemonic();
  
  // 通过助记词创建钱包
  Wallet wallet = TrustWalletCore.createWallet(mnemonic);
  
  // 创建交易
  String transactionData = "your transaction data here";
  
  // 签名交易
  String signedTransaction = wallet.signTransaction(CoinType.ethereum, transactionData);
  print('Signed Transaction: $signedTransaction');
}
回到顶部