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

111 lines
3.7 KiB
Dart
Raw Normal View History

2020-01-04 19:31:52 +00:00
import 'package:intl/intl.dart';
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() {
final _dateFormat = widget.settingsStore.currentLocale == 'en_US'
? DateFormat('yyyy.MM.dd, HH:mm')
: DateFormat('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),
);
}),
);
}
}