feat: Phase 1 critical gaps — gamification API, Razorpay checkout, Google OAuth, notifications
- Fix gamification endpoints to use Node.js server (app.eventifyplus.com) - Replace 6 mock gamification methods with real API calls (dashboard, leaderboard, shop, redeem, submit) - Add booking models, service, payment service (Razorpay), checkout provider - Add 3-step CheckoutScreen with Razorpay native modal integration - Add Google OAuth login (Flutter + Django backend) - Add full notifications system (Django model + 3 endpoints + Flutter UI) - Register CheckoutProvider, NotificationProvider in main.dart MultiProvider - Wire notification bell in HomeScreen app bar - Add razorpay_flutter ^1.3.7 and google_sign_in ^6.2.2 packages
This commit is contained in:
@@ -2,17 +2,24 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
import 'screens/home_screen.dart';
|
||||
import 'screens/home_desktop_screen.dart';
|
||||
import 'screens/login_screen.dart';
|
||||
import 'screens/desktop_login_screen.dart';
|
||||
import 'screens/responsive_layout.dart'; // keep this path if your file is under lib/screens/
|
||||
import 'screens/responsive_layout.dart';
|
||||
import 'core/theme_manager.dart';
|
||||
import 'core/analytics/posthog_service.dart';
|
||||
import 'features/auth/providers/auth_provider.dart';
|
||||
import 'features/gamification/providers/gamification_provider.dart';
|
||||
import 'features/booking/providers/checkout_provider.dart';
|
||||
import 'features/notifications/providers/notification_provider.dart';
|
||||
|
||||
void main() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await ThemeManager.init(); // load saved theme preference
|
||||
await PostHogService.instance.init();
|
||||
|
||||
// Increase image cache for smoother scrolling and faster re-renders
|
||||
PaintingBinding.instance.imageCache.maximumSize = 500;
|
||||
@@ -90,18 +97,26 @@ class MyApp extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ValueListenableBuilder<ThemeMode>(
|
||||
valueListenable: ThemeManager.themeMode,
|
||||
builder: (context, mode, _) {
|
||||
return MaterialApp(
|
||||
title: 'Event App',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: _lightTheme(),
|
||||
darkTheme: _darkTheme(),
|
||||
themeMode: mode,
|
||||
home: const StartupScreen(),
|
||||
);
|
||||
},
|
||||
return MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProvider(create: (_) => AuthProvider()),
|
||||
ChangeNotifierProvider(create: (_) => GamificationProvider()),
|
||||
ChangeNotifierProvider(create: (_) => CheckoutProvider()),
|
||||
ChangeNotifierProvider(create: (_) => NotificationProvider()),
|
||||
],
|
||||
child: ValueListenableBuilder<ThemeMode>(
|
||||
valueListenable: ThemeManager.themeMode,
|
||||
builder: (context, mode, _) {
|
||||
return MaterialApp(
|
||||
title: 'Event App',
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: _lightTheme(),
|
||||
darkTheme: _darkTheme(),
|
||||
themeMode: mode,
|
||||
home: const StartupScreen(),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user