import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:intl/intl.dart'; import 'package:tunas/domains/budget/budget_bloc.dart'; import 'package:tunas/pages/common/titled_container.dart'; import 'package:tunas/repositories/metadata/models/budget.dart'; import 'package:uuid/uuid.dart'; class MonthDistribution extends StatelessWidget { const MonthDistribution({super.key}); List _computeBudgetLines(BuildContext context, List budgets, double initialBudget, double remainingBudget) { List list = [ Text('Money to spare: ${NumberFormat('#####00.00 €', 'fr_FR').format(remainingBudget)} € / $initialBudget €'), ]; list.addAll(budgets.map((budget) => Row( children: [ Expanded( child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text(budget.label), Text(NumberFormat('#####00.00 €', 'fr_FR').format(budget.value)), ], ) ), Expanded( child: SliderTheme( data: SliderThemeData( ), child: Slider( min: 0, max: initialBudget, label: budget.value.round().toString(), value: budget.value, secondaryTrackValue: remainingBudget + budget.value, onChanged: (value) => context.read().add(BudgetSetValue(budget, value)), ), ) ) ], )).toList()); return list; } @override Widget build(BuildContext context) { return BlocBuilder( builder: (context, state) => Column( children: [ TitledContainer( title: 'Prepare', action: IconButton( onPressed: () => context.read().add(BudgetAdd(const Uuid().v8())), icon: const Icon(Icons.add), ), child: Column( children: _computeBudgetLines(context, state.budgets, state.initialBudget, state.remainingBudget), ), ), TitledContainer( title: 'Compare', height: 500, child: Row( children: [ Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text('Budget'), ], ), ), Expanded( child: Column( children: [ Row( children: [ IconButton( onPressed: () => {}, icon: const Icon(Icons.skip_previous) ), Text('Fev 2024'), IconButton( onPressed: () => {}, icon: const Icon(Icons.skip_next) ), ], ), ], ) ) ], ), ), ], ) ); } }