release: bump version to 1.4(p) (versionCode 14)

- Update versionCode 12 → 14, versionName 1.3(p) → 1.4(p)
- Update pubspec.yaml version to 1.4.0+14
- Add CHANGELOG.md with full version history
- Update README.md: version badge + changelog section
- Desktop Contribute Dashboard rebuilt to match web version
  - Contributor Dashboard title, 3-tab nav (Contribute/Leaderboard/Achievements)
  - Two-column submit form, tier milestone progress bar
  - Desktop leaderboard with podium, filters, rank table (green points)
  - Desktop achievements 3-column badge grid
  - Inline Reward Shop with RP balance
- Gamification feature module (EP, RP, leaderboard, achievements, shop)
- Profile screen redesigned to match web app layout with animations
- Home screen bottom sheet date filter chips
- Updated API endpoints, login/event detail screens, theme colors
- Added Gilroy font suite, responsive layout improvements
This commit is contained in:
2026-03-18 11:10:56 +05:30
parent 5b98f41596
commit 50caad21a5
16 changed files with 3219 additions and 921 deletions

View File

@@ -6,6 +6,7 @@ import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:share_plus/share_plus.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:cached_network_image/cached_network_image.dart';
import '../features/events/models/event_models.dart';
import '../features/events/services/events_service.dart';
@@ -430,10 +431,21 @@ class _LearnMoreScreenState extends State<LearnMoreScreen> {
child: Stack(
fit: StackFit.expand,
children: [
Image.network(
images[_currentPage],
CachedNetworkImage(
imageUrl: images[_currentPage],
fit: BoxFit.cover,
errorBuilder: (_, __, ___) => Container(
width: double.infinity,
height: double.infinity,
placeholder: (_, __) => Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
end: Alignment.bottomRight,
colors: [Color(0xFF1A56DB), Color(0xFF3B82F6)],
),
),
),
errorWidget: (_, __, ___) => Container(
decoration: const BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topLeft,
@@ -476,11 +488,15 @@ class _LearnMoreScreenState extends State<LearnMoreScreen> {
controller: _pageController,
onPageChanged: (i) => setState(() => _currentPage = i),
itemCount: images.length,
itemBuilder: (_, i) => Image.network(
images[i],
itemBuilder: (_, i) => CachedNetworkImage(
imageUrl: images[i],
fit: BoxFit.cover,
width: double.infinity,
errorBuilder: (_, __, ___) => Container(
placeholder: (_, __) => Container(
color: theme.dividerColor,
child: const Center(child: CircularProgressIndicator(strokeWidth: 2)),
),
errorWidget: (_, __, ___) => Container(
color: theme.dividerColor,
child: Icon(Icons.broken_image, size: 48, color: theme.hintColor),
),
@@ -672,10 +688,10 @@ class _LearnMoreScreenState extends State<LearnMoreScreen> {
child: Stack(
children: [
Positioned.fill(
child: Image.network(
'https://maps.googleapis.com/maps/api/staticmap?center=$lat,$lng&zoom=15&size=600x300&markers=color:red%7C$lat,$lng&key=',
child: CachedNetworkImage(
imageUrl: 'https://maps.googleapis.com/maps/api/staticmap?center=$lat,$lng&zoom=15&size=600x300&markers=color:red%7C$lat,$lng&key=',
fit: BoxFit.cover,
errorBuilder: (_, __, ___) => Container(
errorWidget: (_, __, ___) => Container(
color: const Color(0xFFE8EAF6),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,