import 'package:flutter/material.dart'; import 'package:dio/dio.dart'; class ListViewExample extends StatefulWidget { const ListViewExample({Key? key}) : super(key: key); @override _ListViewExampleState createState() => _ListViewExampleState(); } class _ListViewExampleState extends State<ListViewExample> { List<Map<String, dynamic>> items = []; bool isLoading = true; @override void initState() { super.initState(); fetchDataFromServer(); } Future<void> fetchDataFromServer() async { final String apiUrl = 'https://aina.company/DIT/KN/getAllReq.php'; final Map<String, dynamic> queryParams = { 'apk': 'sdkjq1234wda4dfadf315rFDfhagfgfg', 'userid': '1', }; final Dio dio = Dio(); try { print('Making request to $apiUrl with $queryParams'); final response = await dio.post( apiUrl, options: Options( headers: {'Content-Type': 'application/x-www-form-urlencoded'}, ), data: queryParams, ); print('Response status: ${response.statusCode}'); print('Response body: ${response.data}'); if (response.statusCode == 200) { final List<dynamic> data = response.data; setState(() { items = List<Map<String, dynamic>>.from(data); isLoading = false; }); } else { print( 'Error: Failed to load data from server with status code ${response.statusCode}'); setState(() { isLoading = false; }); } } catch (e) { print('Error: $e'); setState(() { isLoading = false; }); } } void _onItemTap(Map<String, dynamic> item) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( content: Text( 'REQUEST ID: ${item['requests_id']}, REQUEST STATUS: ${item['requests_status']}, REQUEST STATUS TEXT: ${item['texts_requests']}'), ), ); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: const Text('Server JSON ListView'), ), body: isLoading ? Center(child: CircularProgressIndicator()) : items.isEmpty ? Center(child: Text('No data available')) : ListView.separated( itemCount: items.length, itemBuilder: (context, index) { final item = items[index]; return Card( child: ListTile( title: Text('REQUEST ID: ${item['requests_id']}'), subtitle: Text( 'REQUEST STATUS: ${item['requests_status']}\nREQUEST STATUS TEXT: ${item['texts_requests']}'), trailing: Icon(Icons.arrow_forward), onTap: () => _onItemTap(item), ), ); }, separatorBuilder: (context, index) => const Divider(), ), ); } } void main() { runApp(const MaterialApp( home: ListViewExample(), )); }