dev
dart 73 lines 2.56 KB
Raw
1 import 'package:cake_wallet/generated/i18n.dart';
2 import 'package:cake_wallet/src/screens/base_page.dart';
3 import 'package:cake_wallet/src/screens/trade_details/trade_details_list_card.dart';
4 import 'package:cake_wallet/src/screens/trade_details/trade_details_status_item.dart';
5 import 'package:cake_wallet/src/widgets/list_row.dart';
6 import 'package:cake_wallet/src/widgets/standard_list.dart';
7 import 'package:cake_wallet/src/widgets/standard_list_card.dart';
8 import 'package:cake_wallet/src/widgets/standard_list_status_row.dart';
9 import 'package:cake_wallet/utils/show_bar.dart';
10 import 'package:cake_wallet/view_model/anonpay_details_view_model.dart';
11 import 'package:flutter/material.dart';
12 import 'package:flutter/services.dart';
13
14 class AnonpayDetailsPage extends BasePage {
15 AnonpayDetailsPage({required this.anonpayDetailsViewModel});
16
17 @override
18 String get title => S.current.invoice_details;
19
20 final AnonpayDetailsViewModel anonpayDetailsViewModel;
21
22 @override
23 Widget body(BuildContext context) => AnonpayDetailsPageBody(anonpayDetailsViewModel);
24 }
25
26 class AnonpayDetailsPageBody extends StatefulWidget {
27 AnonpayDetailsPageBody(this.anonpayDetailsViewModel);
28
29 final AnonpayDetailsViewModel anonpayDetailsViewModel;
30
31 @override
32 State<AnonpayDetailsPageBody> createState() => _AnonpayDetailsPageBodyState();
33 }
34
35 class _AnonpayDetailsPageBodyState extends State<AnonpayDetailsPageBody> {
36 @override
37 void dispose() {
38 super.dispose();
39 widget.anonpayDetailsViewModel.timer?.cancel();
40 }
41
42 @override
43 Widget build(BuildContext context) {
44 return SectionStandardList(
45 sectionCount: 1,
46 itemCounter: (int _) => widget.anonpayDetailsViewModel.items.length,
47 itemBuilder: (__, index) {
48 final item = widget.anonpayDetailsViewModel.items[index];
49
50 if (item is DetailsListStatusItem) {
51 return StandardListStatusRow(title: item.title, value: item.value);
52 }
53
54 if (item is TradeDetailsListCardItem) {
55 return TradeDetailsStandardListCard(
56 id: item.id,
57 create: item.createdAt,
58 pair: item.pair,
59 currentTheme: widget.anonpayDetailsViewModel.themeStore.currentTheme.type,
60 onTap: item.onTap,
61 );
62 }
63
64 return GestureDetector(
65 onTap: () {
66 Clipboard.setData(ClipboardData(text: item.value));
67 showBar<void>(context, S.of(context).transaction_details_copied(item.title));
68 },
69 child: ListRow(title: '${item.title}:', value: item.value),
70 );
71 });
72 }
73 }