cake_wallet/lib/src/screens/transaction_details/transaction_details_page.dart

122 lines
4 KiB
Dart
Raw Normal View History

2020-05-12 12:04:54 +00:00
import 'package:cake_wallet/src/domain/monero/monero_transaction_info.dart';
2020-01-04 19:31:52 +00:00
import 'package:provider/provider.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:cake_wallet/generated/i18n.dart';
import 'package:cake_wallet/src/domain/common/transaction_info.dart';
import 'package:cake_wallet/src/stores/settings/settings_store.dart';
import 'package:cake_wallet/src/screens/transaction_details/standart_list_item.dart';
import 'package:cake_wallet/src/widgets/standart_list_row.dart';
2020-01-04 19:31:52 +00:00
import 'package:cake_wallet/src/screens/base_page.dart';
import 'package:cake_wallet/palette.dart';
2020-01-04 19:31:52 +00:00
class TransactionDetailsPage extends BasePage {
2020-01-08 12:26:34 +00:00
TransactionDetailsPage({this.transactionInfo});
2020-01-04 19:31:52 +00:00
final TransactionInfo transactionInfo;
2020-01-08 12:26:34 +00:00
@override
String get title => S.current.transaction_details_title;
2020-01-04 19:31:52 +00:00
@override
Widget body(BuildContext context) {
final settingsStore = Provider.of<SettingsStore>(context);
return TransactionDetailsForm(
transactionInfo: transactionInfo, settingsStore: settingsStore);
}
}
class TransactionDetailsForm extends StatefulWidget {
TransactionDetailsForm(
{@required this.transactionInfo, @required this.settingsStore});
2020-01-08 12:26:34 +00:00
final TransactionInfo transactionInfo;
final SettingsStore settingsStore;
2020-01-04 19:31:52 +00:00
@override
2020-01-08 12:26:34 +00:00
TransactionDetailsFormState createState() => TransactionDetailsFormState();
2020-01-04 19:31:52 +00:00
}
class TransactionDetailsFormState extends State<TransactionDetailsForm> {
2020-01-08 12:26:34 +00:00
final _items = List<StandartListItem>();
2020-01-04 19:31:52 +00:00
@override
void initState() {
final _dateFormat = widget.settingsStore.getCurrentDateFormat(
2020-05-12 12:04:54 +00:00
formatUSA: "yyyy.MM.dd, HH:mm", formatDefault: "dd.MM.yyyy, HH:mm");
final tx = widget.transactionInfo;
if (tx is MoneroTransactionInfo) {
final items = [
StandartListItem(
title: S.current.transaction_details_transaction_id, value: tx.id),
StandartListItem(
title: S.current.transaction_details_date,
value: _dateFormat.format(tx.date)),
StandartListItem(
title: S.current.transaction_details_height, value: '${tx.height}'),
StandartListItem(
title: S.current.transaction_details_amount,
value: tx.amountFormatted())
];
if (widget.settingsStore.shouldSaveRecipientAddress &&
tx.recipientAddress != null) {
items.add(StandartListItem(
title: S.current.transaction_details_recipient_address,
value: tx.recipientAddress));
}
_items.addAll(items);
2020-01-04 19:31:52 +00:00
}
super.initState();
}
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.only(top: 20, bottom: 20),
2020-01-04 19:31:52 +00:00
child: ListView.separated(
separatorBuilder: (context, index) => Container(
height: 1,
padding: EdgeInsets.only(left: 24),
color: Theme.of(context).accentTextTheme.title.backgroundColor,
child: Container(
height: 1,
color: Theme.of(context).dividerColor,
),
),
2020-01-04 19:31:52 +00:00
itemCount: _items.length,
itemBuilder: (context, index) {
final item = _items[index];
final isDrawTop = index == 0 ? true : false;
final isDrawBottom = index == _items.length - 1 ? true : false;
2020-01-04 19:31:52 +00:00
return GestureDetector(
onTap: () {
Clipboard.setData(ClipboardData(text: item.value));
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text(
S.of(context).transaction_details_copied(item.title)),
backgroundColor: Colors.green,
duration: Duration(milliseconds: 1500),
),
);
},
child:
StandartListRow(
title: '${item.title}:',
value: item.value,
isDrawTop: isDrawTop,
isDrawBottom: isDrawBottom),
2020-01-04 19:31:52 +00:00
);
}),
);
}
}