// ignore_for_file: use_build_context_synchronously import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/widgets/payment_popup.dart'; import 'package:provider/provider.dart'; class DragTuleAction extends StatelessWidget { const DragTuleAction({Key? key, required this.wallet, required this.child}) : super(key: key); final WalletData wallet; final Widget child; @override Widget build(BuildContext context) { final myWalletProvider = Provider.of(context); final sub = Provider.of(context, listen: false); return LongPressDraggable( delay: const Duration(milliseconds: 200), data: wallet.address, dragAnchorStrategy: (Draggable _, BuildContext __, Offset ___) => const Offset(55, 55), onDragStarted: () => myWalletProvider.dragAddress = wallet, onDragEnd: (_) { myWalletProvider.lastFlyBy = null; myWalletProvider.dragAddress = null; myWalletProvider.reload(); }, feedback: ElevatedButton( onPressed: () {}, style: ElevatedButton.styleFrom( backgroundColor: orangeC, shape: const CircleBorder(), padding: const EdgeInsets.all(15), ), child: const SizedBox( height: 35, child: Image(image: AssetImage('assets/vector_white.png')), ), ), child: DragTarget( onAccept: (senderAddress) async { log.d( 'INTERPAY: sender: $senderAddress --- receiver: ${wallet.address}'); final walletData = myWalletProvider.getWalletDataByAddress(senderAddress); await sub.setCurrentWallet(walletData!); sub.reload(); paymentPopup(context, wallet.address, g1WalletsBox.get(wallet.address)!.username ?? wallet.name!); }, onMove: (details) { if (wallet.address != myWalletProvider.lastFlyBy?.address) { myWalletProvider.lastFlyBy = wallet; myWalletProvider.reload(); } }, onWillAccept: (senderAddress) => senderAddress != wallet.address, builder: ( BuildContext context, List accepted, List rejected, ) { return child; }), ); } }