mirror of
https://github.com/Mercantec-GHC/h4-projekt-gruppe-0-sm.git
synced 2025-04-27 08:24:05 +02:00
98 lines
3.6 KiB
Dart
98 lines
3.6 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:google_fonts/google_fonts.dart';
|
|
import 'package:mobile/controllers/session.dart';
|
|
import 'package:mobile/pages/dashboard.dart';
|
|
import 'package:mobile/pages/log_in_page.dart';
|
|
import 'package:mobile/controllers/add_to_cart_state.dart';
|
|
import 'package:mobile/controllers/cart.dart';
|
|
import 'package:mobile/controllers/location_image.dart';
|
|
import 'package:mobile/controllers/paying_state.dart';
|
|
import 'package:mobile/controllers/product.dart';
|
|
import 'package:mobile/controllers/receipt.dart';
|
|
import 'package:mobile/controllers/users.dart';
|
|
import 'package:mobile/results.dart';
|
|
import 'package:mobile/server/backend_server.dart';
|
|
import 'package:mobile/server/server.dart';
|
|
import 'package:provider/provider.dart';
|
|
import 'package:mobile/controllers/routing.dart';
|
|
|
|
void main() {
|
|
final server = BackendServer();
|
|
final usersController = UsersController(server: server);
|
|
final sessionController = SessionController(server: server);
|
|
|
|
sessionController.loadCachedUser();
|
|
|
|
runApp(MyApp(
|
|
usersController: usersController,
|
|
sessionController: sessionController,
|
|
server: server,
|
|
));
|
|
}
|
|
|
|
class MyApp extends StatelessWidget {
|
|
final UsersController usersController;
|
|
final SessionController sessionController;
|
|
|
|
final Server server;
|
|
|
|
const MyApp(
|
|
{super.key,
|
|
required this.usersController,
|
|
required this.sessionController,
|
|
required this.server});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MultiProvider(
|
|
providers: [
|
|
ChangeNotifierProvider(
|
|
create: (_) => SessionProvider(controller: sessionController)),
|
|
ChangeNotifierProvider(
|
|
create: (_) => CurrentUserProvider(controller: sessionController)),
|
|
ChangeNotifierProvider(create: (_) => RoutingController()),
|
|
ChangeNotifierProvider(
|
|
create: (_) => ProductController(server: server)),
|
|
ChangeNotifierProvider(
|
|
create: (_) => CartControllerCache(
|
|
server: server, sessionController: sessionController)),
|
|
ChangeNotifierProvider(create: (_) => ReceiptController()),
|
|
ChangeNotifierProvider(create: (_) => PayingStateController()),
|
|
ChangeNotifierProvider(create: (_) => AddToCartStateController()),
|
|
ChangeNotifierProvider(create: (_) => LocationImageController()),
|
|
Provider(create: (_) => usersController),
|
|
],
|
|
child: MaterialApp(
|
|
title: 'Fresh Plaza',
|
|
theme: ThemeData(
|
|
colorScheme: ColorScheme.fromSeed(
|
|
seedColor: const Color.fromARGB(255, 149, 92, 255)),
|
|
scaffoldBackgroundColor: const Color(0xFFFAFAFF),
|
|
textTheme:
|
|
GoogleFonts.merriweatherTextTheme(Theme.of(context).textTheme),
|
|
useMaterial3: true,
|
|
),
|
|
home: Consumer2<SessionProvider, CurrentUserProvider>(
|
|
builder: (_, provider1, provider2, ___) {
|
|
if (provider1.controller.hasUser) {
|
|
return Dashboard();
|
|
}
|
|
return FutureBuilder(
|
|
future: provider1.controller.loadCachedUser(),
|
|
builder: (_, snapshot) {
|
|
final error = snapshot.error;
|
|
if (error != null) {
|
|
throw error;
|
|
}
|
|
if (snapshot.data != null &&
|
|
snapshot.data is Err<Null, Null>) {
|
|
return const LoginPage();
|
|
}
|
|
return const Scaffold(body: CircularProgressIndicator());
|
|
});
|
|
},
|
|
)),
|
|
);
|
|
}
|
|
}
|