Skip to content
Snippets Groups Projects
Commit 4a2d8639 authored by Benoît Harrault's avatar Benoît Harrault
Browse files

Improve refresh cards data and charts

parent 28142ac4
No related branches found
No related tags found
1 merge request!36Resolve "Improve refresh data and charts"
Pipeline #4652 passed
This commit is part of merge request !36. Comments created here will be created in the context of that merge request.
......@@ -19,27 +19,23 @@ class CardStatisticsRecent extends StatelessWidget {
Widget build(BuildContext context) {
final int daysCount = Settings.statisticsRecentDaysCount;
// data context
return BlocProvider<DataStatisticsRecentCubit>(
create: (BuildContext context) => DataStatisticsRecentCubit(),
child: BlocBuilder<DataStatisticsRecentCubit, DataStatisticsRecentState>(
builder: (BuildContext context, DataStatisticsRecentState dataState) {
return CardContent(
color: Theme.of(context).colorScheme.primary,
title: 'recent_statistics'.tr(
namedArgs: {
'daysCount': daysCount.toString(),
},
),
loader: updateStatisticsRecent(Settings.statisticsRecentDaysCount),
content: ContentStatisticsRecent(
statistics: StatisticsRecentData.fromJson(
jsonDecode(dataState.statisticsRecent.toString())),
isLoading: false,
),
);
},
),
return BlocBuilder<DataStatisticsRecentCubit, DataStatisticsRecentState>(
builder: (BuildContext context, DataStatisticsRecentState dataState) {
return CardContent(
color: Theme.of(context).colorScheme.primary,
title: 'recent_statistics'.tr(
namedArgs: {
'daysCount': daysCount.toString(),
},
),
loader: updateStatisticsRecent(Settings.statisticsRecentDaysCount),
content: ContentStatisticsRecent(
statistics: StatisticsRecentData.fromJson(
jsonDecode(dataState.statisticsRecent.toString())),
isLoading: false,
),
);
},
);
}
......@@ -50,23 +46,21 @@ class CardStatisticsRecent extends StatelessWidget {
late Future<StatisticsRecentData> futureStatisticsRecent =
ScrobblesApi.fetchRecentStatistics(daysCount);
return BlocProvider<DataStatisticsRecentCubit>(
create: (BuildContext context) => DataStatisticsRecentCubit(),
child: BlocBuilder<DataStatisticsRecentCubit, DataStatisticsRecentState>(
builder: (BuildContext context, DataStatisticsRecentState state) {
return FutureBuilder<StatisticsRecentData>(
future: futureStatisticsRecent,
builder: (context, snapshot) {
if (snapshot.hasError) {
return ShowErrorWidget(message: '${snapshot.error}');
}
return BlocBuilder<DataStatisticsRecentCubit, DataStatisticsRecentState>(
builder: (BuildContext context, DataStatisticsRecentState state) {
return FutureBuilder<StatisticsRecentData>(
future: futureStatisticsRecent,
builder: (context, snapshot) {
if (snapshot.hasError) {
return ShowErrorWidget(message: '${snapshot.error}');
}
BlocProvider.of<DataStatisticsRecentCubit>(context).setValue(snapshot.data);
return !snapshot.hasData ? loading : done;
},
);
},
),
BlocProvider.of<DataStatisticsRecentCubit>(context).update(snapshot.data);
return !snapshot.hasData ? loading : done;
},
);
},
);
}
}
......@@ -20,33 +20,30 @@ class CardTimeline extends StatelessWidget {
Widget build(BuildContext context) {
final int daysCount = Settings.timelineDaysCount;
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(),
},
),
loader: updateTimeline(Settings.timelineDaysCount),
content: Stack(
children: [
ChartTimelineCounts(
chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
isLoading: false,
),
ChartTimelineEclecticism(
chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
isLoading: false,
),
],
),
);
},
),
return BlocBuilder<DataTimelineCubit, DataTimelineState>(
builder: (BuildContext context, DataTimelineState state) {
return CardContent(
color: Theme.of(context).colorScheme.surface,
title: 'timeline_title'.tr(
namedArgs: {
'daysCount': daysCount.toString(),
},
),
loader: updateTimeline(Settings.timelineDaysCount),
content: Stack(
children: [
ChartTimelineCounts(
chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
isLoading: false,
),
ChartTimelineEclecticism(
chartData: TimelineData.fromJson(jsonDecode(state.timeline.toString())),
isLoading: false,
),
],
),
);
},
);
}
......@@ -56,23 +53,21 @@ class CardTimeline extends StatelessWidget {
late Future<TimelineData> futureTimeline = ScrobblesApi.fetchTimeline(daysCount);
return BlocProvider<DataTimelineCubit>(
create: (BuildContext context) => DataTimelineCubit(),
child: BlocBuilder<DataTimelineCubit, DataTimelineState>(
builder: (BuildContext context, DataTimelineState state) {
return FutureBuilder<TimelineData>(
future: futureTimeline,
builder: (context, snapshot) {
if (snapshot.hasError) {
return ShowErrorWidget(message: '${snapshot.error}');
}
return BlocBuilder<DataTimelineCubit, DataTimelineState>(
builder: (BuildContext context, DataTimelineState dataTimelineState) {
return FutureBuilder<TimelineData>(
future: futureTimeline,
builder: (context, snapshot) {
if (snapshot.hasError) {
return ShowErrorWidget(message: '${snapshot.error}');
}
BlocProvider.of<DataTimelineCubit>(context).setValue(snapshot.data);
return !snapshot.hasData ? loading : done;
},
);
},
),
BlocProvider.of<DataTimelineCubit>(context).update(snapshot.data);
return !snapshot.hasData ? loading : done;
},
);
},
);
}
}
......@@ -19,25 +19,22 @@ class CardTopArtists extends StatelessWidget {
Widget build(BuildContext context) {
final int daysCount = Settings.topArtistsDaysCount;
return BlocProvider<DataTopArtistsCubit>(
create: (BuildContext context) => DataTopArtistsCubit(),
child: BlocBuilder<DataTopArtistsCubit, DataTopArtistsState>(
builder: (BuildContext context, DataTopArtistsState state) {
return CardContent(
color: Theme.of(context).colorScheme.surface,
title: 'top_artists_title'.tr(
namedArgs: {
'daysCount': daysCount.toString(),
},
),
loader: updateTopArtists(Settings.topArtistsDaysCount),
content: ChartTopArtists(
chartData: TopArtistsData.fromJson(jsonDecode(state.topArtists.toString())),
isLoading: false,
),
);
},
),
return BlocBuilder<DataTopArtistsCubit, DataTopArtistsState>(
builder: (BuildContext context, DataTopArtistsState state) {
return CardContent(
color: Theme.of(context).colorScheme.surface,
title: 'top_artists_title'.tr(
namedArgs: {
'daysCount': daysCount.toString(),
},
),
loader: updateTopArtists(Settings.topArtistsDaysCount),
content: ChartTopArtists(
chartData: TopArtistsData.fromJson(jsonDecode(state.topArtists.toString())),
isLoading: false,
),
);
},
);
}
......@@ -47,23 +44,21 @@ class CardTopArtists extends StatelessWidget {
late Future<TopArtistsData> futureTopArtists = ScrobblesApi.fetchTopArtists(daysCount);
return BlocProvider<DataTopArtistsCubit>(
create: (BuildContext context) => DataTopArtistsCubit(),
child: BlocBuilder<DataTopArtistsCubit, DataTopArtistsState>(
builder: (BuildContext context, DataTopArtistsState state) {
return FutureBuilder<TopArtistsData>(
future: futureTopArtists,
builder: (context, snapshot) {
if (snapshot.hasError) {
return ShowErrorWidget(message: '${snapshot.error}');
}
return BlocBuilder<DataTopArtistsCubit, DataTopArtistsState>(
builder: (BuildContext context, DataTopArtistsState state) {
return FutureBuilder<TopArtistsData>(
future: futureTopArtists,
builder: (context, snapshot) {
if (snapshot.hasError) {
return ShowErrorWidget(message: '${snapshot.error}');
}
BlocProvider.of<DataTopArtistsCubit>(context).setValue(snapshot.data);
return !snapshot.hasData ? loading : done;
},
);
},
),
BlocProvider.of<DataTopArtistsCubit>(context).update(snapshot.data);
return !snapshot.hasData ? loading : done;
},
);
},
);
}
}
......@@ -17,6 +17,12 @@ class ChartCountsByDay extends CustomBarChart {
@override
Widget build(BuildContext context) {
if (this.chartData.data.keys.length == 0) {
return SizedBox(
height: this.chartHeight,
);
}
return Container(
height: this.chartHeight,
child: this.isLoading
......
......@@ -17,6 +17,12 @@ class ChartCountsByHour extends CustomBarChart {
@override
Widget build(BuildContext context) {
if (this.chartData.data.keys.length == 0) {
return SizedBox(
height: this.chartHeight,
);
}
return Container(
height: this.chartHeight,
child: this.isLoading
......
......@@ -14,6 +14,12 @@ class ChartDiscoveriesArtists extends CustomBarChart {
@override
Widget build(BuildContext context) {
if (this.chartData.data.keys.length == 0) {
return SizedBox(
height: this.chartHeight,
);
}
return Container(
height: this.chartHeight,
child: this.isLoading
......
......@@ -14,6 +14,12 @@ class ChartDiscoveriesTracks extends CustomBarChart {
@override
Widget build(BuildContext context) {
if (this.chartData.data.keys.length == 0) {
return SizedBox(
height: this.chartHeight,
);
}
return Container(
height: this.chartHeight,
child: this.isLoading
......
......@@ -15,6 +15,12 @@ class ChartTimelineCounts extends CustomBarChart {
@override
Widget build(BuildContext context) {
if (this.chartData.data.keys.length == 0) {
return SizedBox(
height: this.chartHeight,
);
}
return Container(
height: this.chartHeight,
child: this.isLoading
......
......@@ -16,6 +16,12 @@ class ChartTimelineEclecticism extends CustomLineChart {
Widget build(BuildContext context) {
final horizontalScale = getHorizontalScale();
if (this.chartData.data.keys.length == 0) {
return SizedBox(
height: this.chartHeight,
);
}
return Container(
height: this.chartHeight,
child: this.isLoading
......
......@@ -3,7 +3,7 @@ description: Display scrobbles data and charts
publish_to: 'none'
version: 0.0.33+33
version: 0.0.34+34
environment:
sdk: '^3.0.0'
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment