import 'dart:convert';
import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
class DataFetchScreen extends StatefulWidget {
@override
_DataFetchScreenState createState() => _DataFetchScreenState();
}
class _DataFetchScreenState extends State<DataFetchScreen> {
List<dynamic> data = [];
bool isLoading = false;
String errorMessage;
Future fetchData() async {
setState(() {
isLoading = true;
});
var url = 'YOUR_API_ENDPOINT';
try {
var response = await http.get(url);
if (response.statusCode == 200) {
setState(() {
data = json.decode(response.body);
errorMessage = null;
});
} else {
setState(() {
errorMessage = 'Failed to load data: ${response.statusCode}';
});
}
} catch (e) {
setState(() {
errorMessage = 'Failed to load data: $e';
});
} finally {
setState(() {
isLoading = false;
});
}
}
@override
void initState() {
super.initState();
fetchData();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Data Fetch'),
),
body: isLoading
? Center(
child: CircularProgressIndicator(),
)
: errorMessage != null
? Center(
child: Text(errorMessage),
)
: ListView.builder(
itemCount: data.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(data[index]['title']),
subtitle: Text(data[index]['description']),
);
},
),
);
}
}
void main() {
runApp(MaterialApp(
home: DataFetchScreen(),
));
}
Comments
Post a Comment