import 'package:flutter/material.dart'; import 'models/mini_app.dart'; import 'screens/news_screen.dart'; import 'screens/notes_screen.dart'; import 'screens/currency_screen.dart'; import 'screens/crypto_screen.dart'; import 'screens/dino_screen.dart'; import 'screens/memory_screen.dart'; import 'screens/minesweeper_screen.dart'; import 'screens/calculator_screen.dart'; void main() { runApp(const CarteiraAppsApp()); } class CarteiraAppsApp extends StatelessWidget { const CarteiraAppsApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( title: 'Carteira Apps', theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.blue), useMaterial3: true, ), home: const HomePage(), routes: { '/news': (context) => const NewsScreen(), '/notes': (context) => const NotesScreen(), '/currency': (context) => const CurrencyScreen(), '/crypto': (context) => const CryptoScreen(), '/dino': (context) => const DinoScreen(), '/memory': (context) => const MemoryScreen(), '/minesweeper': (context) => const MinesweeperScreen(), '/calculator': (context) => const CalculatorScreen(), }, ); } } class HomePage extends StatelessWidget { const HomePage({super.key}); @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Carteira Apps'), centerTitle: true, ), body: Padding( padding: const EdgeInsets.all(12.0), child: Column( children: [ // Search bar TextField( decoration: InputDecoration( hintText: 'Pesquisar apps...', prefixIcon: const Icon(Icons.search), border: OutlineInputBorder( borderRadius: BorderRadius.circular(12), ), filled: true, fillColor: Theme.of(context).colorScheme.surfaceContainerHighest, ), ), const SizedBox(height: 16), // Grid of mini apps Expanded( child: GridView.builder( gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, crossAxisSpacing: 12, mainAxisSpacing: 12, childAspectRatio: 0.9, ), itemCount: miniApps.length, itemBuilder: (context, index) { final app = miniApps[index]; return Card( elevation: 2, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(16), ), child: InkWell( borderRadius: BorderRadius.circular(16), onTap: () { // Navigate to the named route Navigator.of(context).pushNamed(app.route); }, child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Icon( app.icon, size: 48, color: app.color, ), const SizedBox(height: 12), Text( app.title, textAlign: TextAlign.center, style: Theme.of(context).textTheme.titleMedium, ), ], ), ), ); }, ), ), ], ), ), ); } }