flutter_magento 4.3.1
flutter_magento: ^4.3.1 copied to clipboard
A comprehensive Flutter plugin for Magento e-commerce platform integration with authentication, cart management, product catalog, orders, and offline support
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_magento/flutter_magento.dart';
import 'screens/home_screen.dart';
import 'screens/auth_screen.dart';
import 'screens/products_screen.dart';
import 'screens/cart_screen.dart';
import 'screens/config_screen.dart';
import 'screens/categories_screen.dart';
import 'screens/device_info_screen.dart';
import 'screens/profile_screen.dart';
import 'screens/rada_screen.dart';
import 'providers/app_provider.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Load environment variables
try {
await dotenv.load(fileName: ".env");
} catch (e) {
debugPrint('Warning: Could not load .env file: $e');
}
// Initialize image cache service
await ImageCacheService().initialize();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [ChangeNotifierProvider(create: (_) => AppProvider())],
child: MaterialApp(
title: 'Flutter Magento Example',
navigatorKey: NavigationService.navigatorKey,
theme: ThemeData(
primarySwatch: Colors.blue,
appBarTheme: const AppBarTheme(
backgroundColor: Colors.blue,
foregroundColor: Colors.white,
),
elevatedButtonTheme: ElevatedButtonThemeData(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.blue,
foregroundColor: Colors.white,
),
),
),
home: const MainScreen(),
debugShowCheckedModeBanner: false,
),
);
}
}
class MainScreen extends StatefulWidget {
const MainScreen({super.key});
@override
State<MainScreen> createState() => _MainScreenState();
}
class _MainScreenState extends State<MainScreen> {
int _currentIndex = 0;
final List<Widget> _screens = [
const HomeScreen(),
const AuthScreen(),
const ProfileScreen(),
const ProductsScreen(),
const CategoriesScreen(),
const CartScreen(),
const RadaScreen(),
const DeviceInfoScreen(),
const ConfigScreen(),
];
final List<BottomNavigationBarItem> _navItems = [
const BottomNavigationBarItem(icon: Icon(Icons.home), label: 'Home'),
const BottomNavigationBarItem(icon: Icon(Icons.person), label: 'Auth'),
const BottomNavigationBarItem(
icon: Icon(Icons.account_circle),
label: 'Profile',
),
const BottomNavigationBarItem(
icon: Icon(Icons.shopping_bag),
label: 'Products',
),
const BottomNavigationBarItem(
icon: Icon(Icons.category),
label: 'Categories',
),
const BottomNavigationBarItem(
icon: Icon(Icons.shopping_cart),
label: 'Cart',
),
const BottomNavigationBarItem(icon: Icon(Icons.archive), label: 'RADA'),
const BottomNavigationBarItem(icon: Icon(Icons.info), label: 'Device'),
const BottomNavigationBarItem(icon: Icon(Icons.settings), label: 'Config'),
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: IndexedStack(index: _currentIndex, children: _screens),
bottomNavigationBar: BottomNavigationBar(
type: BottomNavigationBarType.fixed,
currentIndex: _currentIndex,
onTap: (index) {
setState(() {
_currentIndex = index;
});
},
items: _navItems,
selectedItemColor: Colors.blue,
unselectedItemColor: Colors.grey,
),
);
}
}