import 'package:flutter/material.dart'; import 'package:http/http.dart' as http; import 'package:html/parser.dart' as htmlParser; import 'package:html/dom.dart' as htmlDom; import 'package:flutter_project/bars/app_bar'; import 'package:flutter_project/bars/bottom_bar'; class EmbalsesPage extends StatefulWidget { const EmbalsesPage({Key? key}) : super(key: key); @override _EmbalsesPageState createState() => _EmbalsesPageState(); } class _EmbalsesPageState extends State { List embalsesData = []; @override void initState() { super.initState(); obtenerDatos(); } Future obtenerDatos() async { final response = await http.get(Uri.parse('http://www.crcivan.com/escaparate/noticias.cgi?idnoticias=192683')); if (response.statusCode == 200) { final document = htmlParser.parse(response.body); // Buscar los elementos dentro de la estructura especĂ­fica final elementosSpan = document.querySelectorAll('html > body > div > center > table > tbody > tr > td > div > center > table > tbody > tr > td > table > tbody > tr > td > font > font > table > tbody > tr > td > span'); // Limpiar la lista de datos antes de actualizarla setState(() { embalsesData.clear(); }); // Agregar textos de los elementos a la lista for (var elemento in elementosSpan) { final style = elemento.attributes['style']; if (style != null && style.contains('color: #000000; font-size: 12pt;')) { setState(() { embalsesData.add(elemento.text); }); } } } else { throw Exception('Error al cargar los datos de embalses'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: const CustomAppBar(), body: Stack( children: [ // Fondo con la imagen Positioned.fill( child: Image( image: AssetImage('assets/logo-fondo.png'), fit: BoxFit.cover, ), ), Padding( padding: const EdgeInsets.all(8.0), child: ListView.builder( itemCount: embalsesData.length, itemBuilder: (context, index) { final embalse = embalsesData[index]; return Padding( padding: const EdgeInsets.only(bottom: 8.0), child: Container( decoration: BoxDecoration( color: Colors.white, borderRadius: BorderRadius.circular(10.0), ), child: Column( children: [ Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.all(8.0), child: Text( embalse, style: TextStyle( fontWeight: FontWeight.bold, ), ), ), ), ], ), Row( children: [ Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( 'Valor 1', ), ), ), Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( 'Valor 2', ), ), ), Expanded( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 8.0), child: Text( 'Valor 3', ), ), ), ], ), ], ), ), ); }, ), ), ], ), bottomNavigationBar: const CustomBottomBar(), ); } }