feat: UX-002 — BouncingLoader widget replacing CircularProgressIndicator in key screens

This commit is contained in:
2026-04-04 17:41:57 +05:30
parent 9676ede50b
commit ac95a44a07
3 changed files with 108 additions and 7 deletions

View File

@@ -14,6 +14,7 @@ import 'package:share_plus/share_plus.dart';
import '../core/app_decoration.dart';
import '../features/gamification/models/gamification_models.dart';
import '../features/gamification/providers/gamification_provider.dart';
import '../widgets/bouncing_loader.dart';
import '../widgets/glass_card.dart';
import '../widgets/landscape_section_header.dart';
import '../widgets/tier_avatar_ring.dart';
@@ -962,7 +963,7 @@ class _ContributeScreenState extends State<ContributeScreen>
Widget _buildDesktopLeaderboardTab(BuildContext context, GamificationProvider provider) {
if (provider.isLoading && provider.leaderboard.isEmpty) {
return const Center(child: Padding(padding: EdgeInsets.all(40), child: CircularProgressIndicator()));
return const Center(child: Padding(padding: EdgeInsets.all(40), child: BouncingLoader()));
}
final entries = provider.leaderboard;
@@ -1202,7 +1203,7 @@ class _ContributeScreenState extends State<ContributeScreen>
Widget _buildDesktopAchievementsTab(BuildContext context, GamificationProvider provider) {
final badges = provider.achievements;
if (provider.isLoading && badges.isEmpty) {
return const Center(child: Padding(padding: EdgeInsets.all(40), child: CircularProgressIndicator()));
return const Center(child: Padding(padding: EdgeInsets.all(40), child: BouncingLoader()));
}
return Column(
@@ -2084,7 +2085,7 @@ class _ContributeScreenState extends State<ContributeScreen>
Widget _buildLeaderboardTab(BuildContext context, GamificationProvider provider) {
if (provider.isLoading && provider.leaderboard.isEmpty) {
return const Center(child: CircularProgressIndicator());
return const Center(child: BouncingLoader());
}
final entries = provider.leaderboard;
@@ -2523,7 +2524,7 @@ class _ContributeScreenState extends State<ContributeScreen>
final theme = Theme.of(context);
if (provider.isLoading && provider.achievements.isEmpty) {
return const Center(child: CircularProgressIndicator());
return const Center(child: BouncingLoader());
}
final badges = provider.achievements;
@@ -2638,7 +2639,7 @@ class _ContributeScreenState extends State<ContributeScreen>
final rp = provider.profile?.currentRp ?? 0;
if (provider.isLoading && provider.shopItems.isEmpty) {
return const Center(child: CircularProgressIndicator());
return const Center(child: BouncingLoader());
}
return Column(