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

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

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

trust_wallet_core 是一个用于在 Flutter 应用中集成 Trust Wallet Core 的插件。它允许你调用 Trust Wallet Core 中的所有 API。

重要事项

由于官方库在 CmakeLists.txt 文件中设置了 set(CMAKE_CXX_VISIBILITY_PRESET hidden),这可能会导致 Android 平台上的 Dart FFI 查找函数时抛出异常。

如果你想运行 Android 演示程序,请参考我的其他仓库 flutter_trust_wallet_core_lib_include 来运行完整的演示。

Android

在你的 MainActivity.kt 文件中添加以下代码:

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

请注意,Android 的 minSdk 版本需要大于等于 23。

iOS

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

Dart 部分

在使用 wallet_core 之前,需要先调用初始化函数:

FlutterTrustWalletCore.init();

这样你就准备好运行了。

完整示例

以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 trust_wallet_core 插件。

import 'package:flutter/material.dart';
import 'package:trust_wallet_core/flutter_trust_wallet_core.dart';
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"; // 有测试币的 tron地址
    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(() {});
              },
              child: Text("重新生成钱包"),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用trust_wallet_core插件的简要示例代码。trust_wallet_core是一个强大的库,用于处理区块链钱包的核心功能,如生成钱包、签名交易等。这个库通常用于开发加密货币钱包应用。

首先,你需要在Flutter项目中添加trust_wallet_core依赖。由于trust_wallet_core是一个比较底层的库,通常不会有直接的Flutter插件,你可能需要通过Platform Channels与原生代码进行交互。不过,为了演示,我们可以假设有一个封装好的Flutter插件。如果没有,你可能需要自己编写原生代码来桥接。

1. 添加依赖

pubspec.yaml中添加依赖(假设存在一个封装好的插件):

dependencies:
  flutter:
    sdk: flutter
  trust_wallet_core_flutter: ^x.y.z  # 假设版本号为x.y.z

2. 配置原生代码

由于trust_wallet_core是一个原生库,你可能需要在iOS和Android项目中进行一些配置。这部分通常包括将原生库添加到项目中,并配置Platform Channels。

iOS

ios/Podfile中添加原生库的依赖:

pod 'TrustWalletCore', '~> x.y.z'  # 替换为实际的版本号

然后运行pod install

Android

android/build.gradle中添加依赖:

dependencies {
    implementation 'com.trustwallet:core:x.y.z'  # 替换为实际的版本号
}

3. 使用插件

以下是一个简单的Flutter代码示例,展示如何使用这个插件生成一个新的比特币钱包:

import 'package:flutter/material.dart';
import 'package:trust_wallet_core_flutter/trust_wallet_core_flutter.dart';  // 假设包名为trust_wallet_core_flutter

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String? walletAddress;

  void generateBitcoinWallet() async {
    try {
      // 假设有一个名为generateWallet的方法
      var wallet = await TrustWalletCoreFlutter.generateWallet('bitcoin');
      setState(() {
        walletAddress = wallet.address;
      });
    } catch (e) {
      print("Error generating wallet: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Trust Wallet Core Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Text(
                'Generated Bitcoin Wallet Address:',
                style: TextStyle(fontSize: 20),
              ),
              Text(
                walletAddress ?? 'Not generated yet',
                style: TextStyle(fontSize: 18, color: Colors.blue),
              ),
              SizedBox(height: 20),
              ElevatedButton(
                onPressed: generateBitcoinWallet,
                child: Text('Generate Wallet'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

注意

  1. Platform Channels:上面的代码假设已经有一个封装好的Flutter插件trust_wallet_core_flutter,实际上你可能需要自己编写原生代码来创建Platform Channels,并调用TrustWalletCore库的相关方法。

  2. 错误处理:在实际应用中,你需要添加更多的错误处理和边界情况检查。

  3. 安全性:加密货币钱包涉及资金安全,务必确保代码的安全性,避免潜在的漏洞。

  4. 依赖版本:确保你使用的库版本是最新的,并检查其兼容性。

  5. 文档:查阅trust_wallet_core的官方文档,以获取更多详细信息和API使用方法。

由于trust_wallet_core本身是一个复杂的库,并且没有直接的Flutter插件,因此上面的代码仅作为一个概念性的示例。在实际项目中,你可能需要更深入地了解原生开发,并编写相应的Platform Channels代码。

回到顶部