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