gecko/lib/widgets/drag_tule_action.dart

73 lines
2.5 KiB
Dart

// 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<MyWalletsProvider>(context);
final sub = Provider.of<SubstrateSdk>(context, listen: false);
return LongPressDraggable<String>(
delay: const Duration(milliseconds: 200),
data: wallet.address,
dragAnchorStrategy: (Draggable<Object> _, 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<String>(
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<dynamic> accepted,
List<dynamic> rejected,
) {
return child;
}),
);
}
}