Skip to content
Snippets Groups Projects
Select Git revision
  • c4bdceaf4f9d2f044e09c4fa91e5120683b55715
  • master default protected
  • polkadart-stuff
  • dev
  • provider-to-riverpod
  • implementLightnode
  • subscribesSplit
  • hugo_RML16
  • refactorOnboardingSlideshow
  • duniterV1Latest
  • scanNetwork
  • dubp_rs
  • v0.2.3+119
  • v0.2.2+118
  • v0.2.1+113
  • polkawallet-sdk-latest
  • v0.1.29+111
  • v0.1.28+109
  • v0.1.27+108
  • v0.1.26+107
  • v0.1.25+106
  • v0.1.25+105
  • v0.1.24+102
  • v0.1.23+101
  • v0.1.22+100
  • v0.1.22+99
  • v0.1.21+98
  • v0.1.21+97
  • v0.1.21+96
  • v0.1.21+95
  • v0.1.21+94
  • v0.1.21+93
32 results

certifications.dart

Blame
  • certifications.dart 2.55 KiB
    import 'package:flutter/material.dart';
    import 'package:gecko/models/scale_functions.dart';
    import 'package:gecko/providers/substrate_sdk.dart';
    import 'package:provider/provider.dart';
    
    // Add a class to store certification data
    class CertificationData {
      final int receivedCount;
      final int sentCount;
    
      CertificationData({required this.receivedCount, required this.sentCount});
    
      bool equals(CertificationData? other) {
        if (other == null) return false;
        return receivedCount == other.receivedCount && sentCount == other.sentCount;
      }
    }
    
    class Certifications extends StatefulWidget {
      const Certifications({super.key, required this.address, required this.size, this.color = Colors.black});
      final String address;
      final double size;
      final Color color;
    
      @override
      State<Certifications> createState() => _CertificationsState();
    }
    
    class _CertificationsState extends State<Certifications> {
      bool _isLoading = false;
    
      Future<void> _checkNetworkData(SubstrateSdk sdk) async {
        if (_isLoading) return;
        _isLoading = true;
    
        try {
          final networkData = await sdk.getCertsCounter(widget.address);
          if (!mounted) return;
    
          final cachedData = sdk.certsCounterCache[widget.address];
          if (cachedData == null || !cachedData.equals(networkData)) {
            sdk.certsCounterCache[widget.address] = networkData;
            setState(() {});
          }
        } finally {
          _isLoading = false;
        }
      }
    
      @override
      Widget build(BuildContext context) {
        return Consumer<SubstrateSdk>(
          builder: (context, sdk, _) {
            // Display cached data immediately if available
            final cachedCerts = sdk.certsCounterCache[widget.address];
    
            // Check network data in the background
            if (!_isLoading) {
              Future.microtask(() => _checkNetworkData(sdk));
            }
    
            // If no cached data, show nothing while waiting
            if (cachedCerts == null) {
              return const SizedBox.shrink();
            }
    
            // Display cached data
            return _buildContent(cachedCerts.receivedCount, cachedCerts.sentCount);
          },
        );