import 'package:flutter/material.dart'; import 'package:provider/provider.dart'; import 'package:primer_practica/src/controllers/articles_controller.dart'; import 'package:primer_practica/src/models/articles_model.dart'; import 'package:primer_practica/src/providers/carrito_providers.dart'; // Importa CarritoProvider class ArticleSearchDelegate extends SearchDelegate { final ArticleController articleCtrl = ArticleController(); ArticleSearchDelegate() : super(); @override List buildActions(BuildContext context) { return [ IconButton( icon: Icon(Icons.clear), onPressed: () { query = ''; }, ), ]; } @override Widget buildLeading(BuildContext context) { return IconButton( icon: AnimatedIcon( icon: AnimatedIcons.menu_arrow, progress: transitionAnimation, ), onPressed: () { close(context, null); }, ); } @override Widget buildResults(BuildContext context) { return Container(); } @override Widget buildSuggestions(BuildContext context) { if (query.isEmpty) { return Center(child: Text('Ingrese el texto para buscar artículos.')); } return FutureBuilder>( future: articleCtrl.searchArticles(query), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return Center(child: CircularProgressIndicator()); } else if (snapshot.hasError) { return Center(child: Text('Error: ${snapshot.error}')); } else if (!snapshot.hasData || snapshot.data!.isEmpty) { return Center(child: Text('No se encontraron artículos.')); } else { final articles = snapshot.data!; return ListView.builder( itemCount: articles.length, itemBuilder: (context, index) { final article = articles[index]; return ListTile( title: Text(article.nombre), subtitle: Text(article.precios.isNotEmpty ? '\$${article.precios[0].precio.toStringAsFixed(2)}' : 'Sin precio'), trailing: IconButton( icon: Icon(Icons.shopping_cart), onPressed: () { final carritoProvider = Provider.of(context, listen: false); carritoProvider.agregarCarrito(article); close(context, null); }, ), ); }, ); } }, ); } }