All checks were successful
ci/woodpecker/push/billing_fees Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/bff Pipeline was successful
ci/woodpecker/push/discovery Pipeline was successful
ci/woodpecker/push/fx_ingestor Pipeline was successful
ci/woodpecker/push/fx_oracle Pipeline was successful
ci/woodpecker/push/frontend Pipeline was successful
ci/woodpecker/push/gateway_mntx Pipeline was successful
ci/woodpecker/push/gateway_chain Pipeline was successful
ci/woodpecker/push/gateway_tgsettle Pipeline was successful
ci/woodpecker/push/nats Pipeline was successful
ci/woodpecker/push/ledger Pipeline was successful
ci/woodpecker/push/notification Pipeline was successful
ci/woodpecker/push/payments_orchestrator Pipeline was successful
77 lines
2.4 KiB
Dart
77 lines
2.4 KiB
Dart
import 'package:flutter/material.dart';
|
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
import 'package:pshared/controllers/wallets.dart';
|
|
import 'package:pshared/models/payment/wallet.dart';
|
|
import 'package:pshared/models/payment/chain_network.dart';
|
|
import 'package:pshared/utils/l10n/chain.dart';
|
|
|
|
import 'package:pweb/pages/dashboard/buttons/balance/add_funds.dart';
|
|
import 'package:pweb/pages/dashboard/buttons/balance/amount.dart';
|
|
import 'package:pweb/pages/dashboard/buttons/balance/config.dart';
|
|
import 'package:pweb/pages/dashboard/buttons/balance/header.dart';
|
|
import 'package:pweb/widgets/refresh_balance/wallet.dart';
|
|
|
|
import 'package:pweb/generated/i18n/app_localizations.dart';
|
|
|
|
|
|
class WalletCard extends StatelessWidget {
|
|
final Wallet wallet;
|
|
final VoidCallback onTopUp;
|
|
|
|
const WalletCard({
|
|
super.key,
|
|
required this.wallet,
|
|
required this.onTopUp,
|
|
});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final loc = AppLocalizations.of(context)!;
|
|
final networkLabel = (wallet.network == null || wallet.network == ChainNetwork.unspecified)
|
|
? null
|
|
: wallet.network!.localizedName(context);
|
|
final symbol = wallet.tokenSymbol?.trim();
|
|
|
|
return Card(
|
|
color: Theme.of(context).colorScheme.onSecondary,
|
|
elevation: WalletCardConfig.elevation,
|
|
shape: RoundedRectangleBorder(
|
|
borderRadius: BorderRadius.circular(WalletCardConfig.borderRadius),
|
|
),
|
|
child: SizedBox.expand(
|
|
child: Padding(
|
|
padding: WalletCardConfig.contentPadding,
|
|
child: Column(
|
|
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
|
crossAxisAlignment: CrossAxisAlignment.start,
|
|
children: [
|
|
BalanceHeader(
|
|
title: loc.paymentTypeCryptoWallet,
|
|
subtitle: networkLabel,
|
|
badge: (symbol == null || symbol.isEmpty) ? null : symbol,
|
|
),
|
|
Row(
|
|
children: [
|
|
BalanceAmount(
|
|
wallet: wallet,
|
|
onToggleVisibility: () {
|
|
context.read<WalletsController>().toggleVisibility(wallet.id);
|
|
},
|
|
),
|
|
WalletBalanceRefreshButton(
|
|
walletRef: wallet.id,
|
|
),
|
|
],
|
|
),
|
|
BalanceAddFunds(onTopUp: onTopUp),
|
|
],
|
|
),
|
|
),
|
|
),
|
|
|
|
);
|
|
}
|
|
}
|