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/screens/transaction_details/standart_list_row.dart';
|
|
|
|
import 'package:cake_wallet/src/screens/base_page.dart';
|
|
|
|
|
|
|
|
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
|
|
|
|
bool get isModalBackButton => true;
|
|
|
|
|
|
|
|
@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() {
|
2020-03-09 16:51:54 +00:00
|
|
|
final _dateFormat = widget.settingsStore.getCurrentDateFormat(
|
|
|
|
formatUSA: "yyyy.MM.dd, HH:mm",
|
|
|
|
formatDefault: "dd.MM.yyyy, HH:mm");
|
2020-01-08 12:26:34 +00:00
|
|
|
final items = [
|
2020-01-04 19:31:52 +00:00
|
|
|
StandartListItem(
|
|
|
|
title: S.current.transaction_details_transaction_id,
|
|
|
|
value: widget.transactionInfo.id),
|
|
|
|
StandartListItem(
|
|
|
|
title: S.current.transaction_details_date,
|
|
|
|
value: _dateFormat.format(widget.transactionInfo.date)),
|
|
|
|
StandartListItem(
|
|
|
|
title: S.current.transaction_details_height,
|
|
|
|
value: '${widget.transactionInfo.height}'),
|
|
|
|
StandartListItem(
|
|
|
|
title: S.current.transaction_details_amount,
|
|
|
|
value: widget.transactionInfo.amountFormatted())
|
|
|
|
];
|
|
|
|
|
2020-01-08 12:26:34 +00:00
|
|
|
if (widget.settingsStore.shouldSaveRecipientAddress &&
|
|
|
|
widget.transactionInfo.recipientAddress != null) {
|
2020-01-04 19:31:52 +00:00
|
|
|
items.add(StandartListItem(
|
2020-01-08 12:26:34 +00:00
|
|
|
title: S.current.transaction_details_recipient_address,
|
|
|
|
value: widget.transactionInfo.recipientAddress));
|
2020-01-04 19:31:52 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
_items.addAll(items);
|
|
|
|
super.initState();
|
|
|
|
}
|
|
|
|
|
|
|
|
@override
|
|
|
|
Widget build(BuildContext context) {
|
|
|
|
return Container(
|
|
|
|
padding: EdgeInsets.only(left: 20, right: 15, top: 10, bottom: 10),
|
|
|
|
child: ListView.separated(
|
|
|
|
separatorBuilder: (context, index) => Container(
|
|
|
|
height: 1,
|
|
|
|
color: Theme.of(context).dividerTheme.color,
|
|
|
|
),
|
|
|
|
padding: EdgeInsets.only(left: 25, top: 10, right: 25, bottom: 15),
|
|
|
|
itemCount: _items.length,
|
|
|
|
itemBuilder: (context, index) {
|
|
|
|
final item = _items[index];
|
|
|
|
|
|
|
|
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),
|
|
|
|
);
|
|
|
|
}),
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|