articles_page.dart 2.3 KB
Newer Older
nayeli92433 committed
1 2
import 'package:flutter/material.dart';

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
import '../controllers/ArticuloController.dart';
import '../models/ArticuloModel.dart';


class ArticlePage extends StatefulWidget {
  final int categoryId;

  const ArticlePage({Key? key, required this.categoryId}) : super(key: key);

  @override
  _ArticlePageState createState() => _ArticlePageState();
}

class _ArticlePageState extends State<ArticlePage> {
  final ArticuloController _articleController = ArticuloController();
  late Future<Map<String, dynamic>> _articlesFuture;

  @override
  void initState() {
    super.initState();
    _articlesFuture = _articleController.getArticles(widget.categoryId);
  }
nayeli92433 committed
25 26 27 28 29

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
30 31 32
        title: const Text('Artículos'),
        backgroundColor: Colors.indigoAccent,
        foregroundColor: Colors.white,
nayeli92433 committed
33
      ),
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66

      body: FutureBuilder<Map<String, dynamic>>(
        future: _articlesFuture,
        builder: (context, snapshot) {
          if (snapshot.hasData) {
            if (snapshot.data!['ok']) {
              if (snapshot.data!['data'] != null && (snapshot.data!['data'] as List).isNotEmpty) {
                List<ArticleModel> articles = snapshot.data!['data'] as List<ArticleModel>;
                return ListView.builder(
                  itemCount: articles.length,
                  itemBuilder: (context, index) {
                    final article = articles[index];
                    return Card(
                      child: ListTile(
                        title: Text(article.nombre),
                        subtitle: Text('Clave: ${article.clave}'),
                        trailing: Text('\$${article.precios.isNotEmpty ? article.precios.first.precio.toStringAsFixed(2) : 'N/A'}'),
                      ),
                    );
                  },
                );
              } else {
                return Center(child: Text('No se encontraron artículos.'));
              }
            } else {
              return Center(child: Text('Error: ${snapshot.data!['message']}'));
            }
          } else if (snapshot.hasError) {
            return Center(child: Text('Error: ${snapshot.error}'));
          } else {
            return const Center(child: CircularProgressIndicator());
          }
        },
nayeli92433 committed
67 68 69
      ),
    );
  }
70
}