Forked from
vjrj / ginkgo
1035 commits behind the upstream repository.
transaction_page.dart 11.66 KiB
import 'package:backdrop/backdrop.dart';
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import '../../../data/models/node_list_cubit.dart';
import '../../../data/models/transaction.dart';
import '../../../data/models/transaction_balance_state.dart';
import '../../../data/models/transaction_cubit.dart';
import '../../../shared_prefs.dart';
import '../../ui_helpers.dart';
import 'transaction_chart.dart';
import 'transaction_item.dart';
class TransactionsAndBalanceWidget extends StatefulWidget {
const TransactionsAndBalanceWidget({super.key});
@override
State<TransactionsAndBalanceWidget> createState() =>
_TransactionsAndBalanceWidgetState();
}
class _TransactionsAndBalanceWidgetState
extends State<TransactionsAndBalanceWidget>
with SingleTickerProviderStateMixin {
final ScrollController _transScrollController = ScrollController();
late NodeListCubit nodeListCubit;
late TransactionsCubit transCubit;
bool isLoading = false;
@override
void initState() {
super.initState();
_transScrollController.addListener(_scrollListener);
// Remove in the future
transCubit = context.read<TransactionsCubit>();
nodeListCubit = context.read<NodeListCubit>();
transCubit.fetchTransactions(nodeListCubit);
}
@override
void dispose() {
_transScrollController.removeListener(_scrollListener);
_transScrollController.dispose();
super.dispose();
}
Future<void> _scrollListener() async {
if (_transScrollController.offset == 0) {
_refreshIndicatorKey.currentState?.show();
}
}
Future<void> _refreshTransactions() async {
return transCubit.fetchTransactions(nodeListCubit);
}
final GlobalKey<RefreshIndicatorState> _refreshIndicatorKey =
GlobalKey<RefreshIndicatorState>();
@override
Widget build(BuildContext context) {
final String myPubKey = SharedPreferencesHelper().getPubKey();
return BlocBuilder<TransactionsCubit, TransactionsAndBalanceState>(builder:
(BuildContext context, TransactionsAndBalanceState transBalanceState) {
final List<Transaction> transactions = transBalanceState.transactions;
final double balance = transBalanceState.balance;
return BackdropScaffold(