import
'package:flutter/material.dart'
;
import
'package:http/http.dart'
as http;
import
'dart:convert'
;
void
main() {
runApp(MyApp());
}
class
MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return
MaterialApp(
debugShowCheckedModeBanner:
false
,
theme: ThemeData(
primarySwatch: Colors.green,
),
home: APICall(),
);
}
}
class
APICall extends StatefulWidget {
@override
_APICallState createState() => _APICallState();
}
class
_APICallState extends State<APICall> {
final TextEditingController nameController = TextEditingController();
final TextEditingController emailController = TextEditingController();
String result =
''
;
@override
void
dispose() {
nameController.dispose();
emailController.dispose();
super.dispose();
}
Future<
void
> _postData() async {
try
{
final response = await http.post(
Uri.parse(apiUrl),
headers: <String, String>{
'Content-Type'
:
'application/json; charset=UTF-8'
,
},
body: jsonEncode(<String, dynamic>{
'name'
: nameController.text,
'email'
: emailController.text,
}),
);
if
(response.statusCode == 201) {
final responseData = jsonDecode(response.body);
setState(() {
result =
'ID: ${responseData['
id
']}\nName: ${responseData['
name
']}\nEmail: ${responseData['
email
']}'
;
});
}
else
{
throw
Exception(
'Failed to post data'
);
}
}
catch
(e) {
setState(() {
result =
'Error: $e'
;
});
}
}
@override
Widget build(BuildContext context) {
return
Scaffold(
appBar: AppBar(
title: Text(
'POST Request Example'
),
),
body: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: nameController,
decoration: InputDecoration(labelText:
'Name'
),
),
TextField(
controller: emailController,
decoration: InputDecoration(labelText:
'Email'
),
),
ElevatedButton(
onPressed: _postData,
child: Text(
'Submit'
),
),
SizedBox(height: 20.0),
Text(
result,
style: TextStyle(fontSize: 16.0),
),
],
),
),
);
}
}