This commit is contained in:
2026-06-13 22:43:06 +03:00
parent 2682c92f23
commit 8fb785944c
29 changed files with 671 additions and 322 deletions
@@ -377,7 +377,7 @@ class _AccountEditorOverlayState extends State<AccountEditorOverlay> {
mainAxisSize: MainAxisSize.min,
children: [
if (!dash.isAddingAccount &&
(ref.watch(accountsProvider).valueOrNull?.length ?? 0) >
(ref.watch(accountsProvider).value?.length ?? 0) >
1) ...[
GestureDetector(
onTap: () => setState(() => _showDeleteDialog = true),
@@ -588,7 +588,7 @@ class AccountColorPanel extends StatelessWidget {
final accounts =
ProviderScope.containerOf(
dashboardContext,
).read(accountsProvider).valueOrNull ??
).read(accountsProvider).value ??
[];
if (isDuplicateName(
@@ -56,7 +56,7 @@ class AccountDeleteDialog extends ConsumerWidget {
onConfirm();
final txs = ref.read(transactionsProvider).valueOrNull ?? [];
final txs = ref.read(transactionsProvider).value ?? [];
final accountTxs = txs
.where((t) => t.accountId == accountId)
.toList();
@@ -145,15 +145,12 @@ class BalanceCardState extends ConsumerState<BalanceCard>
.toList();
final textColorMode = ref.watch(cardTextColorProvider);
final Color onCard;
switch (textColorMode) {
case CardTextColorMode.white:
onCard = Colors.white;
case CardTextColorMode.black:
onCard = Colors.black;
case CardTextColorMode.adaptive:
onCard = primary.computeLuminance() > 0.3 ? Colors.black : Colors.white;
}
final Color onCard = switch (textColorMode) {
CardTextColorMode.white => Colors.white,
CardTextColorMode.black => Colors.black,
CardTextColorMode.adaptive => primary.computeLuminance() > 0.3 ? Colors.black : Colors.white,
_ => Colors.white,
};
return GestureDetector(
onLongPress: () {
@@ -75,7 +75,7 @@ class _BalanceCardCarouselState extends ConsumerState<BalanceCardCarousel> {
Clip.none,
itemCount: totalPages,
onPageChanged: (index) {
ref.read(activeAccountIndexProvider.notifier).state = index;
ref.read(activeAccountIndexProvider.notifier).set(index);
if (ref.read(hapticEnabledProvider)) {
HapticService.light();
}
@@ -103,7 +103,7 @@ class _BalanceCardCarouselState extends ConsumerState<BalanceCardCarousel> {
);
final txs =
ref.watch(transactionsProvider).valueOrNull ?? [];
ref.watch(transactionsProvider).value ?? [];
final accountTxs = txs
.where((t) => t.accountId == account.id)
.toList();
@@ -23,15 +23,15 @@ class FilterChips extends ConsumerWidget {
_FilterChip(
label: strings.filterAllTime,
isSelected: timeFilter == TimeFilter.allTime,
onTap: () => ref.read(timeFilterProvider.notifier).state =
TimeFilter.allTime,
onTap: () => ref.read(timeFilterProvider.notifier).set(
TimeFilter.allTime),
),
const SizedBox(width: 6),
_FilterChip(
label: strings.filterMonth,
isSelected: timeFilter == TimeFilter.lastMonth,
onTap: () => ref.read(timeFilterProvider.notifier).state =
TimeFilter.lastMonth,
onTap: () => ref.read(timeFilterProvider.notifier).set(
TimeFilter.lastMonth),
),
Padding(
padding: const EdgeInsets.symmetric(horizontal: 8),
@@ -46,32 +46,32 @@ class FilterChips extends ConsumerWidget {
_FilterChip(
label: strings.filterAll,
isSelected: typeFilter == TransactionFilter.all,
onTap: () => ref.read(transactionFilterProvider.notifier).state =
TransactionFilter.all,
onTap: () => ref.read(transactionFilterProvider.notifier).set(
TransactionFilter.all),
),
const SizedBox(width: 6),
_FilterChip(
label: strings.filterIncome,
isSelected: typeFilter == TransactionFilter.income,
color: AppColors.income,
onTap: () => ref.read(transactionFilterProvider.notifier).state =
TransactionFilter.income,
onTap: () => ref.read(transactionFilterProvider.notifier).set(
TransactionFilter.income),
),
const SizedBox(width: 6),
_FilterChip(
label: strings.filterExpense,
isSelected: typeFilter == TransactionFilter.expense,
color: AppColors.expense,
onTap: () => ref.read(transactionFilterProvider.notifier).state =
TransactionFilter.expense,
onTap: () => ref.read(transactionFilterProvider.notifier).set(
TransactionFilter.expense),
),
const SizedBox(width: 6),
_FilterChip(
label: strings.filterTransfer,
isSelected: typeFilter == TransactionFilter.transfer,
color: Colors.blueAccent,
onTap: () => ref.read(transactionFilterProvider.notifier).state =
TransactionFilter.transfer,
onTap: () => ref.read(transactionFilterProvider.notifier).set(
TransactionFilter.transfer),
),
],
),
@@ -37,7 +37,7 @@ class SearchBar extends StatelessWidget {
color: Theme.of(context).colorScheme.onSurface.withOpacity(0.6),
onPressed: () {
controller.clear();
ref.read(searchQueryProvider.notifier).state = '';
ref.read(searchQueryProvider.notifier).set('');
},
)
: null,
@@ -63,7 +63,7 @@ class SearchBar extends StatelessWidget {
vertical: 12,
),
),
onChanged: (v) => ref.read(searchQueryProvider.notifier).state = v,
onChanged: (v) => ref.read(searchQueryProvider.notifier).set(v),
);
}
}
@@ -56,7 +56,7 @@ class TransactionTile extends ConsumerWidget {
: 0.0;
final displaySymbol = currencyMap[displayCurrency]?.symbol ?? '';
final accounts = ref.watch(accountsProvider).valueOrNull ?? [];
final accounts = ref.watch(accountsProvider).value ?? [];
final txAccount = accounts.firstWhereOrNull(
(a) => a.id == transaction.accountId,
);