import
'dart:convert'
;
import
'package:flutter/material.dart'
;
import
'package:http/http.dart'
as http;
void
main() {
runApp(MyApp());
}
class
MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return
MaterialApp(
theme: ThemeData(
primarySwatch: Colors.green,
),
debugShowCheckedModeBanner:
false
,
home: MyHomePage(),
);
}
}
class
MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class
_MyHomePageState extends State<MyHomePage> {
TextEditingController pinCodeController = TextEditingController();
String pinCodeDetails =
""
;
@override
Widget build(BuildContext context) {
return
Scaffold(
appBar: AppBar(
title: Text(
'Pin Code Details'
),
),
body: Padding(
padding:
const
EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextField(
controller: pinCodeController,
keyboardType: TextInputType.number,
decoration: InputDecoration(labelText:
'Enter Pin Code'
),
),
SizedBox(height: 16),
ElevatedButton(
onPressed: () {
getDataFromPinCode(pinCodeController.text);
},
child: Text(
'Get Data'
),
),
SizedBox(height: 16),
Text(pinCodeDetails),
],
),
),
);
}
Future<
void
> getDataFromPinCode(String pinCode) async {
try
{
final response = await http.get(Uri.parse(url));
if
(response.statusCode == 200) {
final jsonResponse = json.decode(response.body);
if
(jsonResponse[
'Status'
] ==
'Error'
) {
showSnackbar(context,
"Pin Code is not valid. "
);
setState(() {
pinCodeDetails =
'Pin code is not valid.'
;
});
}
else
{
final postOfficeArray = jsonResponse[
'PostOffice'
] as List;
final obj = postOfficeArray[0];
final district = obj[
'District'
];
final state = obj[
'State'
];
final country = obj[
'Country'
];
setState(() {
pinCodeDetails =
'Details of pin code are:\nDistrict: $district\nState: $state\nCountry: $country'
;
});
}
}
else
{
showSnackbar(context,
"Failed to fetch data. Please try again"
);
setState(() {
pinCodeDetails =
'Failed to fetch data. Please try again.'
;
});
}
}
catch
(e) {
showSnackbar(context,
"Error Occurred. Please try again"
);
setState(() {
pinCodeDetails =
'Error occurred. Please try again.'
;
});
}
}
void
showSnackbar(BuildContext context, String message) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(message),
duration: Duration(seconds: 2),
),
);
}
}