Skip to content
Snippets Groups Projects
timeline.dart 1.65 KiB
Newer Older
import 'dart:convert';

import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
Benoît Harrault's avatar
Benoît Harrault committed
import 'package:flutter_bloc/flutter_bloc.dart';
Benoît Harrault's avatar
Benoît Harrault committed
import 'package:scrobbles/config/settings.dart';
Benoît Harrault's avatar
Benoît Harrault committed
import 'package:scrobbles/cubit/data_timeline_cubit.dart';
import 'package:scrobbles/models/timeline.dart';
import 'package:scrobbles/ui/widgets/card_content.dart';
import 'package:scrobbles/ui/widgets/charts/timeline_counts.dart';
import 'package:scrobbles/ui/widgets/charts/timeline_eclecticism.dart';

class CardTimeline extends StatelessWidget {
  const CardTimeline({super.key});

  @override
  Widget build(BuildContext context) {
Benoît Harrault's avatar
Benoît Harrault committed
    final int daysCount = Settings.timelineDaysCount;
Benoît Harrault's avatar
Benoît Harrault committed
    return BlocProvider<DataTimelineCubit>(
      create: (BuildContext context) => DataTimelineCubit(),
      child: BlocBuilder<DataTimelineCubit, DataTimelineState>(
        builder: (BuildContext context, DataTimelineState state) {
          return CardContent(
            color: Theme.of(context).colorScheme.surface,
            title: 'timeline_title'.tr(
              namedArgs: {
                'daysCount': daysCount.toString(),
              },
            ),
            content: Stack(
              children: [
                ChartTimelineCounts(
                  chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
                  isLoading: false,
                ),
                ChartTimelineEclecticism(
                  chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
                  isLoading: false,
                ),
              ],
            ),
          );
        },
      ),