flutter_rgb 0.0.1
flutter_rgb: ^0.0.1 copied to clipboard
Flutter plugin for RGB protocol.
example/lib/main.dart
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter_rgb/flutter_rgb.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _status = 'Initializing...';
String _mnemonic = '';
@override
void initState() {
super.initState();
_run();
}
Future<void> _run() async {
try {
setState(() {
_status = 'Generating keys...';
});
const network = BitcoinNetwork.testnet4;
final keys = await FlutterRgb.generateKeys(network.name.toUpperCase());
debugPrint('keys:');
debugPrint(' mnemonic: ${keys.mnemonic}');
debugPrint(' xpub: ${keys.xpub}');
debugPrint(' accountXpubVanilla: ${keys.accountXpubVanilla}');
debugPrint(' accountXpubColored: ${keys.accountXpubColored}');
debugPrint(' masterFingerprint: ${keys.masterFingerprint}');
setState(() {
_mnemonic = keys.mnemonic;
_status = 'Keys generated. Mnemonic: ${_mnemonic.substring(0, 20)}...';
});
setState(() {
_status = 'Creating wallet...';
});
final wallet = Wallet(keys, network: network.name.toUpperCase());
setState(() {
_status = 'Going online...';
});
await wallet.goOnline('ssl://mempool.space:50002', false);
setState(() {
_status = 'Fetching balance...';
});
final btcBalance = await wallet.getBtcBalance(false);
debugPrint('btcBalance: ${btcBalance.vanilla.settled}');
final address = await wallet.getAddress();
debugPrint('address: $address');
final listAssets = await wallet.listAssets([
AssetSchema.nia,
AssetSchema.uda,
AssetSchema.cfa,
AssetSchema.ifa,
]);
debugPrint('listAssets: $listAssets');
setState(() {
_status = 'Success! Wallet operations completed.';
});
} catch (e) {
debugPrint('Wallet error: $e');
setState(() {
_status = 'Error: $e';
});
}
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
backgroundColor: const Color(0xFFF5F5F5),
appBar: AppBar(title: const Text('RGB Wallet Example')),
body: SingleChildScrollView(
padding: const EdgeInsets.all(20),
child: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
const SizedBox(height: 20),
Text(
'Status: $_status',
textAlign: TextAlign.center,
style: const TextStyle(
fontSize: 16,
color: Color(0xFF666666),
),
),
if (_mnemonic.isNotEmpty) ...[
const SizedBox(height: 10),
Text(
'Mnemonic: $_mnemonic',
style: const TextStyle(
fontSize: 12,
color: Color(0xFF888888),
),
),
],
],
),
),
),
),
);
}
}