import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:okane/database/collections/account.dart'; import 'package:okane/database/database.dart'; import 'package:okane/ui/state/core.dart'; import 'package:okane/ui/utils.dart'; class TotalBalanceCard extends StatelessWidget { const TotalBalanceCard({super.key}); Future _getTotalBalance(List accounts) async { if (accounts.isEmpty) { return 0; } final results = await Future.wait(accounts.map(getTotalBalance).toList()); return results.reduce((acc, val) => acc + val); } @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) { return Card( child: Padding( padding: EdgeInsets.all(16), child: Column( mainAxisSize: MainAxisSize.min, children: [ Text( "Total balance", style: Theme.of(context).textTheme.titleLarge, ), FutureBuilder( future: _getTotalBalance(state.accounts), builder: (context, snapshot) { return Text( snapshot.hasData ? formatCurrency(snapshot.data!) : "...", style: Theme.of(context).textTheme.bodyLarge, ); }, ), ], ), ), ); }, ); } }