Flutter插件boltz的使用方法介绍

Boltz-Dart 插件简介

boltz-dart 是一个 Dart 和 Flutter 的 pub 库,用于管理和操作 Boltz 交换。该项目的顶级目录是一个 Dart/Flutter pub 库。rust 文件夹包含核心代码,内部使用 boltz-rust crate 来暴露一个抽象化的 API 来管理 Boltz 交换。


使用方法

在应用程序的 main() 函数中初始化库:

Future main({bool fromTest = false}) async {
  if (!fromTest) WidgetsFlutterBinding.ensureInitialized();

  await dotenv.load(isOptional: true);
  Bloc.observer = BBlocObserver();
  // await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);

  await setupLocator(fromTest: fromTest);
  final delegate = await Localise.getDelegate();
  LwkCore.init();
  BoltzCore.init(); // 初始化 Boltz 库
  runApp(
    LocalizedApp(
      delegate,
      const BullBitcoinWalletApp(),
    ),
  );
}

依赖项

目前,我们不使用预编译二进制文件。作为用户,你需要安装 cargo 和平台特定的工具链来本地编译二进制文件。

安装 Rust 和相关工具

# 安装 Rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# 安装工具
cargo install flutter_rust_bridge_codegen --version 2.0.0
cargo install cargo-ndk
cargo install cargo-lipo

对于 iOS 构建,确保你已安装 Xcode 和 CocoaPods。


更新与构建过程

在项目根目录下运行以下命令:

# 在项目根目录下运行
./compile.native.sh # 为本地平台(Linux/Mac)构建二进制文件。

如果使用 macOS 作为主机,则可以构建所有平台的二进制文件:

# 需要运行 docker
./compile.all.sh

构建流程会先生成 Rust 代码的本地二进制文件,并将其移动到 Dart 测试文件夹中。然后运行 flutter_rust_bridge_codegen 生成 Rust 和 Dart 的 FFI 代码。


MacOS 作为主机

macOS 主机可以通过以下命令为所有平台构建二进制文件:

# 需要运行 docker
./compile.all.sh

构建流程会首先生成本地二进制文件并移动到 Dart 测试文件夹中,然后生成 FFI 代码。


非 Debian Linux 用户

在非 Debian 系统上,可能会遇到 bridge_generated.dart 文件的相关错误。错误可能与以下代码有关:

void store_dart_post_cobject(
  int ptr,
) {
  return _store_dart_post_cobject(
    ptr,
  );
}

在这种情况下,你需要手动设置 clang 的路径。运行以下命令:

export CPATH="$(clang -v 2>&1 | grep "Selected GCC installation" | rev | cut -d' ' -f1 | rev)/include"

Dart 类

一旦我们在 Dart 中有了所有的结构体和函数,我们可以将它们组织成类以改善库的用户体验。


测试

你可以使用 test/boltz-test.dart 文件来测试是否正确地通过 FFI 暴露了预期逻辑。此外,可以在 example 目录下运行 flutter run


示例代码

以下是一个完整的示例代码,展示如何使用 boltz-dart 插件来获取费用信息。

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

import 'package:boltz/boltz.dart'; // 导入 boltz-dart 库
import 'package:flutter/material.dart';

void main() async {
  await LibBoltz.init(); // 初始化 Boltz 库
  runApp(const MyApp()); // 启动应用
}

// 主应用布局
class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: const Text('Fees Display')), // 设置应用标题
        body: const FeesWidget(), // 显示费用信息的组件
      ),
    );
  }
}

// 费用显示组件
class FeesWidget extends StatelessWidget {
  const FeesWidget({Key? key}) : super(key: key);

  // 异步获取费用信息
  Future<String> fetchFees() async {
    const boltzUrl = 'https://api.testnet.boltz.exchange/v2'; // Boltz API 地址
    try {
      final fees = await const Fees(boltzUrl: boltzUrl).chain(); // 获取费用信息
      return fees.toString(); // 返回费用信息
    } catch (e) {
      return 'Error: $e'; // 错误处理
    }
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return FutureBuilder<String>(
      future: fetchFees(), // 异步获取费用
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.waiting) {
          // 如果正在加载,显示进度指示器
          return const Center(child: CircularProgressIndicator());
        } else if (snapshot.hasError || !snapshot.hasData) {
          // 如果发生错误或无数据,显示错误提示
          return const Center(child: Text('Failed to load fees.'));
        } else {
          // 显示费用信息
          return SingleChildScrollView(
            padding: const EdgeInsets.all(16),
            child: Text(snapshot.data!, style: const TextStyle(fontSize: 16)),
          );
        }
      },
    );
  }
}

更多关于Flutter插件boltz的使用方法介绍的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter插件boltz的使用方法介绍的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


boltz 是一个用于 Flutter 的插件,它提供了一些未知功能,通常用于探索和实验。由于 boltz 并不是 Flutter 官方或广泛使用的插件,因此关于它的文档和资源可能相对有限。以下是一些可能的使用步骤和探索方法:

1. 安装 boltz 插件

首先,你需要在 pubspec.yaml 文件中添加 boltz 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  boltz: ^版本号  # 替换为实际的版本号

然后运行 flutter pub get 来安装插件。

2. 导入 boltz 插件

在你的 Dart 文件中导入 boltz 插件:

import 'package:boltz/boltz.dart';

3. 探索 boltz 的功能

由于 boltz 是一个未知功能探索插件,你可能需要通过查看源代码或文档来了解它提供的功能。以下是一些可能的探索方法:

3.1 查看插件源码

你可以在 pub.dev 上找到 boltz 插件的源代码,或者直接查看你的本地缓存中的插件源码(通常位于 ~/.pub-cache/hosted/pub.dartlang.org/boltz-版本号/)。

3.2 使用 boltz 提供的 API

尝试使用 boltz 提供的 API 来探索其功能。例如:

void main() {
  // 初始化 boltz
  Boltz boltz = Boltz();

  // 调用 boltz 的某个方法
  boltz.explore();
}
回到顶部