import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart' as http; import 'dart:convert'; import 'package:qr_flutter/qr_flutter.dart'; class ReceivePage extends StatefulWidget { ReceivePage({Key? key, required this.uuid, required this.wallet}) : super(key: key); final String uuid; String wallet; @override _ReceivePageState createState() => _ReceivePageState(); } class _ReceivePageState extends State { @override void initState() { super.initState(); fetchReceive(); } String address = ''; Future fetchReceive() async { // Fetch domains from api final response = await http.get(Uri.parse( 'https://api.firewallet.au/wallet/address?uuid=${widget.uuid}&name=${widget.wallet}')); if (response.statusCode == 200) { final data = jsonDecode(response.body); if (data is Map && data.containsKey('error')) { print('Error: ${data['error']}'); return; } // Return if empty if (data.isEmpty) { setState(() { address = 'No address found'; }); return; } final addressData = data as Map; setState(() { address = addressData['address']; }); } else { // Handle error print('Failed to load wallet names'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('${widget.wallet} - Receive HNS or Domains'), ), // Get wallet list from api and display here body: Center( child: LayoutBuilder( builder: (BuildContext context, BoxConstraints constraints) { return ListView( children: [ Center(child: Text(address, style: TextStyle(fontSize: 18.0))), // QR Code Center( child: QrImageView( data: address, version: QrVersions.auto, // Width = 90% of the screen width size: constraints.maxWidth * 0.9, eyeStyle: QrEyeStyle( eyeShape: QrEyeShape.square, color: Theme.of(context).brightness == Brightness.light ? Colors.black : Colors.white, ), dataModuleStyle: QrDataModuleStyle( dataModuleShape: QrDataModuleShape.square, color: Theme.of(context).brightness == Brightness.light ? Colors.black : Colors.white, ), ), ), TextButton(onPressed: copyAddress, child: Text('Copy Address')), TextButton(onPressed: fetchReceive, child: Text('Refresh')), ], ); }, ), ), ); } Future copyAddress() async { // Copy the address to the clipboard await Clipboard.setData(ClipboardData(text: address)); } }