woocommerce_inventory/mobile_app/lib/main.dart

92 lines
2.8 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'api_service.dart';
import 'profile_manager.dart'; // Import ProfileManager
import 'screens/profile_login_screen.dart'; // Change import
import 'screens/site_selection_screen.dart'; // New Import
import 'screens/product_list_screen.dart';
import 'screens/product_editor_screen.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MultiProvider( // Use MultiProvider
providers: [
ChangeNotifierProvider(create: (_) => ApiService()),
ChangeNotifierProvider(create: (_) => ProfileManager()),
],
child: MaterialApp(
title: 'Inventory Manager',
debugShowCheckedModeBanner: false,
theme: ThemeData(
useMaterial3: true,
brightness: Brightness.dark,
colorScheme: ColorScheme.fromSeed(
seedColor: Colors.blue,
brightness: Brightness.dark,
background: const Color(0xFF111827),
surface: const Color(0xFF1F2937),
),
scaffoldBackgroundColor: const Color(0xFF111827),
appBarTheme: const AppBarTheme(
backgroundColor: Color(0xFF1F2937),
elevation: 0,
centerTitle: false,
),
inputDecorationTheme: InputDecorationTheme(
filled: true,
fillColor: const Color(0xFF374151),
border: OutlineInputBorder(
borderRadius: BorderRadius.circular(8),
borderSide: BorderSide.none,
),
hintStyle: const TextStyle(color: Colors.grey),
),
),
home: const AuthWrapper(),
routes: {
'/product/new': (context) => const ProductEditorScreen(),
},
onGenerateRoute: (settings) {
if (settings.name == '/product/edit') {
final product = settings.arguments as Map<String, dynamic>;
return MaterialPageRoute(
builder: (context) => ProductEditorScreen(product: product),
);
}
return null;
},
),
);
}
}
class AuthWrapper extends StatelessWidget {
const AuthWrapper({super.key});
@override
Widget build(BuildContext context) {
// Current Flow:
// 1. App Start
// 2. Check ProfileManager.isAuthenticated (PIN Protection)
// NO -> ProfileLoginScreen
// YES -> SiteSelectionScreen
return Consumer<ProfileManager>(
builder: (context, profile, child) {
if (!profile.isAuthenticated) {
return const ProfileLoginScreen();
} else {
return const SiteSelectionScreen();
}
},
);
}
}