Flutter Solana钱包管理插件solana_seed_vault的使用

Flutter Solana钱包管理插件solana_seed_vault的使用

seed_vault_sdk 是一个用于 Flutter 的 Solana 钱包管理插件的参考实现。

示例代码

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

import 'package:dfunc/dfunc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:wallet_example/bl/bloc.dart';
import 'package:wallet_example/bl/signature_verifier.dart';
import 'package:wallet_example/presentation/limits_section.dart';
import 'package:wallet_example/presentation/seed_list.dart';
import 'package:wallet_example/presentation/seed_section.dart';

void main() {
  runApp(
    BlocProvider<SeedVaultBloc>(
      create: (context) => SeedVaultBloc(const SignatureVerifier())..init(),
      child: const MyApp(),
    ),
  );
}

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

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late final SeedVaultBloc _bloc;

  [@override](/user/override)
  void initState() {
    super.initState();
    _bloc = context.read<SeedVaultBloc>();
  }

  [@override](/user/override)
  void dispose() {
    _bloc.close();
    super.dispose();
  }

  [@override](/user/override)
  Widget build(BuildContext context) => MaterialApp(
        home: BlocBuilder<SeedVaultBloc, SeedVaultState>(
          builder: (context, state) => Scaffold(
            appBar: AppBar(
              title: const Text('FakeWallet'),
              actions: [
                IconButton(
                  onPressed: _bloc.refreshUI,
                  icon: const Icon(Icons.refresh),
                ),
              ],
            ),
            body: Center(
              child: state.map(
                none: always(const CircularProgressIndicator()),
                loaded: always(const SeedVaultContent()),
                error: (state) => Text(state.err),
                unauthorized: always(
                  ElevatedButton(
                    onPressed: _bloc.init,
                    child: const Text('请求权限'),
                  ),
                ),
              ),
            ),
          ),
        ),
      );
}

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

  [@override](/user/override)
  Widget build(BuildContext context) => Padding(
        padding: const EdgeInsets.all(16),
        child: CustomScrollView(
          physics: const BouncingScrollPhysics(),
          slivers: [
            SliverList(
              delegate: SliverChildListDelegate(
                [
                  const LimitsSection(),
                  const SizedBox(height: 16),
                  const SeedSection(),
                  const SizedBox(height: 16),
                  const SeedList(),
                ],
              ),
            ),
          ],
        ),
      );
}

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

1 回复

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


solana_seed_vault 是一个 Flutter 插件,旨在帮助开发者安全地管理 Solana 钱包的种子短语和私钥。它通过提供安全的存储和访问机制,确保用户的私钥不会暴露在不安全的环境中。

以下是使用 solana_seed_vault 插件的基本步骤:

1. 添加依赖

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

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

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

2. 导入包

在你的 Dart 文件中导入 solana_seed_vault

import 'package:solana_seed_vault/solana_seed_vault.dart';

3. 初始化 SolanaSeedVault

在使用插件之前,你需要初始化 SolanaSeedVault

final solanaSeedVault = SolanaSeedVault();

4. 创建或导入钱包

你可以使用 solanaSeedVault 来创建新的钱包或导入现有的钱包。

创建新钱包

final wallet = await solanaSeedVault.createWallet();
print('New wallet created with public key: ${wallet.publicKey}');

导入现有钱包

final mnemonic = 'your 12 or 24 word seed phrase here';
final wallet = await solanaSeedVault.importWallet(mnemonic);
print('Wallet imported with public key: ${wallet.publicKey}');

5. 获取钱包信息

你可以通过 solanaSeedVault 获取钱包的公钥、私钥等信息。

获取公钥

final publicKey = wallet.publicKey;
print('Public Key: $publicKey');

获取私钥

final privateKey = await wallet.getPrivateKey();
print('Private Key: $privateKey');

6. 签名交易

你可以使用钱包来签名交易:

final transaction = ...; // 你的 Solana 交易
final signedTransaction = await wallet.signTransaction(transaction);
print('Signed Transaction: $signedTransaction');

7. 安全存储

solana_seed_vault 会自动将种子短语和私钥存储在安全的环境中(例如 Android 的 Keystore 或 iOS 的 Keychain),确保它们不会被恶意应用访问。

8. 删除钱包

如果你想删除钱包,可以使用以下方法:

await solanaSeedVault.deleteWallet(wallet);
print('Wallet deleted');

9. 错误处理

在使用 solana_seed_vault 时,你可能会遇到一些错误(例如无效的种子短语、存储失败等)。你可以使用 try-catch 块来处理这些错误:

try {
  final wallet = await solanaSeedVault.importWallet(invalidMnemonic);
} catch (e) {
  print('Error importing wallet: $e');
}
回到顶部