Anonymous
Как отправить массив JSON, заполненный данными из Flutter, в API, созданный с помощью php
Сообщение
Anonymous » 10 апр 2024, 09:21
В настоящее время я работаю над проектом и столкнулся с проблемой отправки массива JSON в PHP API.
Вот код, который я написал для приложения flutter:
Код: Выделить всё
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:url_launcher/url_launcher.dart';
class Ustroistva extends StatelessWidget {
Future fetchData() async {
final apiUrl = 'http://kvb-bg.com/Sirena/api.php';
try {
final response = await http.get(Uri.parse(apiUrl));
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception('Failed to load data');
}
} catch (e) {
throw Exception('Error: $e');
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('СИРЕНА - Устройства'),
backgroundColor: Colors.green.withOpacity(0.5),
),
body: SingleChildScrollView(
child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () {
// Navigate to the AddDeviceFormScreen when the button is pressed
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => AddDeviceFormScreen(),
),
);
},
child: Text('Добави устройство'),
),
SizedBox(height: 16),
Text(
'Страница с Устройства',
style: TextStyle(
fontSize: 18,
fontWeight: FontWeight.bold,
),
),
SizedBox(height: 8),
FutureBuilder(
future: fetchData(),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return CircularProgressIndicator();
} else if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
List data = snapshot.data ?? [];
return SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: Container(
width: MediaQuery.of(context).size.width,
child: DataTable(
columns: [
DataColumn(label: Text('ID')),
DataColumn(label: Text('Device ID')),
DataColumn(label: Text('Device Name')),
// ... Other columns ...
],
rows: data.map((item) {
return DataRow(cells: [
DataCell(Text('${item['id']}')),
DataCell(Text('${item['device_id']}')),
DataCell(
InkWell(
onTap: () {
// Navigate to a new screen with device information
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => DeviceDetailsScreen(item),
),
);
},
child: Text('${item['device_name']}'),
),
),
// ... Other cells ...
]);
}).toList(),
),
),
);
} //
Подробнее здесь: [url]https://stackoverflow.com/questions/78297729/how-to-send-json-array-filled-with-data-from-flutter-to-api-made-with-php[/url]
1712730078
Anonymous
В настоящее время я работаю над проектом и столкнулся с проблемой отправки массива JSON в PHP API. Вот код, который я написал для приложения flutter: [code]import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:convert'; import 'package:http/http.dart' as http; import 'package:url_launcher/url_launcher.dart'; class Ustroistva extends StatelessWidget { Future fetchData() async { final apiUrl = 'http://kvb-bg.com/Sirena/api.php'; try { final response = await http.get(Uri.parse(apiUrl)); if (response.statusCode == 200) { return jsonDecode(response.body); } else { throw Exception('Failed to load data'); } } catch (e) { throw Exception('Error: $e'); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('СИРЕНА - Устройства'), backgroundColor: Colors.green.withOpacity(0.5), ), body: SingleChildScrollView( child: Padding( padding: const EdgeInsets.all(16), child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ ElevatedButton( onPressed: () { // Navigate to the AddDeviceFormScreen when the button is pressed Navigator.push( context, MaterialPageRoute( builder: (context) => AddDeviceFormScreen(), ), ); }, child: Text('Добави устройство'), ), SizedBox(height: 16), Text( 'Страница с Устройства', style: TextStyle( fontSize: 18, fontWeight: FontWeight.bold, ), ), SizedBox(height: 8), FutureBuilder( future: fetchData(), builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.waiting) { return CircularProgressIndicator(); } else if (snapshot.hasError) { return Text('Error: ${snapshot.error}'); } else { List data = snapshot.data ?? []; return SingleChildScrollView( scrollDirection: Axis.horizontal, child: Container( width: MediaQuery.of(context).size.width, child: DataTable( columns: [ DataColumn(label: Text('ID')), DataColumn(label: Text('Device ID')), DataColumn(label: Text('Device Name')), // ... Other columns ... ], rows: data.map((item) { return DataRow(cells: [ DataCell(Text('${item['id']}')), DataCell(Text('${item['device_id']}')), DataCell( InkWell( onTap: () { // Navigate to a new screen with device information Navigator.push( context, MaterialPageRoute( builder: (context) => DeviceDetailsScreen(item), ), ); }, child: Text('${item['device_name']}'), ), ), // ... Other cells ... ]); }).toList(), ), ), ); } // Подробнее здесь: [url]https://stackoverflow.com/questions/78297729/how-to-send-json-array-filled-with-data-from-flutter-to-api-made-with-php[/url]