Skip to content
Snippets Groups Projects
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(