tx history improved layout (wip)

Robert Malikowski committed Jun 24, 2026 at 11:00 UTC 7c7ddf8205d032b403ea14ca7772fe27a45eee27
3 files changed +19 -7
lib/new-ui/widgets/coins_page/assets_history/assets_history_section.dart
+1
@@ -43,6 +43,7 @@ class _AssetsHistorySectionState extends State<AssetsHistorySection> {
43 S.current.history,
44 HistorySection(
45 dashboardViewModel: widget.dashboardViewModel,
46 + short: true,
47 )),
48 if (isNFTACtivatedChain(widget.dashboardViewModel.wallet.type,
49 chainId: widget.dashboardViewModel.wallet.chainId))
lib/new-ui/widgets/coins_page/assets_history/history_section.dart
+12 -7
@@ -1,3 +1,5 @@
1 +import 'dart:math';
2 +
3 import 'package:cake_wallet/di.dart';
4 import 'package:cake_wallet/generated/i18n.dart';
5 import 'package:cake_wallet/new-ui/widgets/coins_page/assets_history/anonpay_history_tile.dart';
@@ -22,16 +24,19 @@ import 'package:flutter_mobx/flutter_mobx.dart';
24 import 'package:intl/intl.dart';
25
26 class HistorySection extends StatelessWidget {
25 - const HistorySection({super.key, required this.dashboardViewModel});
27 + const HistorySection({super.key, required this.dashboardViewModel, required this.short});
28
29 final DashboardViewModel dashboardViewModel;
30 + final bool short;
31
32 @override
33 Widget build(BuildContext context) {
34 + final items = short ? dashboardViewModel.itemsShort : dashboardViewModel.items;
35 +
36 return SliverPadding(
37 padding: const EdgeInsets.symmetric(horizontal: 16.0),
38 sliver: Observer(
34 - builder: (_) => (dashboardViewModel.items.isEmpty)
39 + builder: (_) => (items.isEmpty)
40 ? SliverPadding(
41 padding: EdgeInsets.only(top: 24),
42 sliver: SliverToBoxAdapter(
@@ -48,14 +53,14 @@ class HistorySection extends StatelessWidget {
53 )
54 : SliverList(
55 delegate: SliverChildBuilderDelegate(
51 - childCount: dashboardViewModel.items.length,
56 + childCount: items.length,
57 (context, index) => Observer(builder: (_) {
53 - final prevItem = index == 0 ? null : dashboardViewModel.items[index - 1];
58 + final prevItem = index == 0 ? null : items[index - 1];
59 final topPadding = index == 0 ? 0.0 : 18.0;
55 - final item = dashboardViewModel.items[index];
56 - final nextItem = index == dashboardViewModel.items.length - 1
60 + final item = items[index];
61 + final nextItem = index == items.length - 1
62 ? null
58 - : dashboardViewModel.items[index + 1];
63 + : items[index + 1];
64
65 final roundedBottom = (nextItem == null || nextItem is DateSectionItem);
66 final roundedTop = (prevItem == null || prevItem is DateSectionItem);
lib/view_model/dashboard/dashboard_view_model.dart
+6
@@ -5,6 +5,7 @@ import 'dart:io' show Platform;
5 import 'package:cake_wallet/.secrets.g.dart' as secrets;
6 import 'package:cake_wallet/bitcoin/bitcoin.dart';
7 import 'package:cake_wallet/core/key_service.dart';
8 +import 'package:cake_wallet/view_model/dashboard/date_section_item.dart';
9 import "package:cw_core/balance_card_style_settings.dart";
10 import 'package:cake_wallet/core/trade_monitor.dart';
11 import 'package:cake_wallet/entities/auto_generate_subaddress_status.dart';
@@ -715,6 +716,11 @@ abstract class DashboardViewModelBase with Store {
716 return formattedItemsList(_items);
717 }
718
719 + static const shortHistoryLength = 3;
720 +
721 + @computed
722 + List<ActionListItem> get itemsShort => items.where((item)=>item is! DateSectionItem).take(3).toList();
723 +
724 @observable
725 WalletBase<Balance, TransactionHistoryBase<TransactionInfo>, TransactionInfo> wallet;
726