Skip to content
Snippets Groups Projects
Select Git revision
  • 0a6e0337e58e2c170b719cbd5979975adff55966
  • master default protected
  • 42-improve-app-metadata
  • 17-improve-and-complete-offline-words-list-and-tips
  • 6-allow-translate-application
  • 9-improve-documentation
  • Release_1.10.2_46 protected
  • Release_1.10.1_45 protected
  • Release_1.10.0_44 protected
  • Release_1.9.2_43 protected
  • Release_1.9.1_42 protected
  • Release_1.9.0_41 protected
  • Release_1.8.0_40 protected
  • Release_1.7.0_39 protected
  • Release_1.6.0_38 protected
  • Release_1.5.2_37 protected
  • Release_1.5.1_36 protected
  • Release_1.5.0_35 protected
  • Release_1.4.1_34 protected
  • Release_1.4.0_33 protected
  • Release_1.3.2_32 protected
  • Release_1.3.1_31 protected
  • Release_1.3.0_30 protected
  • Release_1.2.18_29 protected
  • Release_1.2.17_28 protected
  • Release_1.2.16_27 protected
26 results

home.dart

Blame
  • statistics_global.dart 2.02 KiB
    import 'dart:convert';
    
    import 'package:easy_localization/easy_localization.dart';
    import 'package:flutter/material.dart';
    import 'package:flutter_bloc/flutter_bloc.dart';
    
    import 'package:scrobbles/cubit/data_statistics_global_cubit.dart';
    import 'package:scrobbles/models/statistics_global.dart';
    import 'package:scrobbles/network/scrobbles.dart';
    import 'package:scrobbles/ui/widgets/card_content.dart';
    import 'package:scrobbles/ui/widgets/content/statistics_global.dart';
    import 'package:scrobbles/ui/widgets/error.dart';
    
    class CardStatisticsGlobal extends StatelessWidget {
      const CardStatisticsGlobal({super.key});
    
      @override
      Widget build(BuildContext context) {
        return BlocBuilder<DataStatisticsGlobalCubit, DataStatisticsGlobalState>(
          builder: (BuildContext context, DataStatisticsGlobalState state) {
            return CardContent(
              color: Theme.of(context).colorScheme.primary,
              title: 'global_statistics'.tr(),
              loader: updateStatisticsGlobal(),
              content: ContentStatisticsGlobal(
                statistics:
                    StatisticsGlobalData.fromJson(jsonDecode(state.statisticsGlobal.toString())),
                isLoading: false,
              ),
            );
          },
        );
      }
    
      Widget updateStatisticsGlobal() {
        final Widget loading = const Text('⏳');
        final Widget done = const Text('');
    
        late Future<StatisticsGlobalData> futureStatisticsGlobal =
            ScrobblesApi.fetchGlobalStatistics();
    
        return BlocBuilder<DataStatisticsGlobalCubit, DataStatisticsGlobalState>(
          builder: (BuildContext context, DataStatisticsGlobalState dataState) {
            return FutureBuilder<StatisticsGlobalData>(
              future: futureStatisticsGlobal,
              builder: (context, snapshot) {
                if (snapshot.hasError) {
                  return ShowErrorWidget(message: '${snapshot.error}');
                }
    
                BlocProvider.of<DataStatisticsGlobalCubit>(context).update(snapshot.data);
    
                return !snapshot.hasData ? loading : done;
              },
            );
          },
        );
      }
    }