Files
sendico/frontend/pweb/lib/pages/dashboard/buttons/balance/carousel/carousel.dart
2026-03-06 17:48:36 +03:00

64 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:pshared/models/ledger/account.dart';
import 'package:pshared/models/payment/wallet.dart';
import 'package:pweb/controllers/dashboard/balance/carousel.dart';
import 'package:pweb/pages/dashboard/buttons/balance/carousel/cards_view.dart';
import 'package:pweb/pages/dashboard/buttons/balance/carousel/navigation.dart';
import 'package:pweb/pages/dashboard/buttons/balance/config.dart';
class BalanceCarousel extends StatelessWidget {
final BalanceCarouselController controller;
final ValueChanged<Wallet> onTopUp;
final ValueChanged<LedgerAccount> onLedgerAddFunds;
final ValueChanged<Wallet> onWalletTap;
final ValueChanged<LedgerAccount> onLedgerTap;
const BalanceCarousel({
super.key,
required this.controller,
required this.onTopUp,
required this.onLedgerAddFunds,
required this.onWalletTap,
required this.onLedgerTap,
});
@override
Widget build(BuildContext context) {
if (controller.items.isEmpty) {
return const SizedBox.shrink();
}
WidgetsBinding.instance.addPostFrameCallback((_) {
controller.syncPageController();
});
final safeIndex = controller.index.clamp(0, controller.items.length - 1);
return LayoutBuilder(
builder: (context, constraints) {
final cardHeight = WalletCardConfig.cardHeightForWidth(
constraints.maxWidth,
);
return Column(
children: [
BalanceCarouselCardsView(
controller: controller,
onTopUp: onTopUp,
onLedgerAddFunds: onLedgerAddFunds,
onWalletTap: onWalletTap,
onLedgerTap: onLedgerTap,
height: cardHeight,
),
const SizedBox(height: 16),
BalanceCarouselNavigation(controller: controller, index: safeIndex),
],
);
},
);
}
}