Displaying API Data in Flutter Without Using FutureBuilder

 import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;

void main() {
runApp(const MyApp());
}

class MyApp extends StatelessWidget {
const MyApp({super.key});

@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
useMaterial3: true,
),
home: MyHomePage(),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({super.key});

@override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {

List<StatusItem> _statusItems = [];
bool _isLoading = true;
String? _error;

@override
void initState() {
super.initState();
_fetchData();
}

Future<void> _fetchData() async {
final url = "http://urbanflowservice.hirenow.co.in/api/booking-status";
try {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
List<dynamic> body = jsonDecode(response.body);
List<StatusItem> statuses = body.map((dynamic item) => StatusItem.fromJson(item)).toList();
setState(() {
_statusItems = statuses;
_isLoading = false;
});
} else {
throw Exception('Failed to load data');
}
} catch (error) {
setState(() {
_isLoading = false;
_error = error.toString();
});
}
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('API Data'),
),
body: _isLoading
? Center(child: CircularProgressIndicator())
: _error != null
? Center(child: Text('Error: $_error'))
: ListView.builder(
itemCount: _statusItems.length,
itemBuilder: (context, index) {
final item = _statusItems[index];
return ListTile(
title: Text(item.label),
subtitle: Text('Value: ${item.value}, Status: ${item.status}'),
);
},
),
);
}
}

class StatusItem {
final int id;
final String value;
final String label;
final int status;
final int sequence;
final String? deletedAt;
final String createdAt;
final String updatedAt;

StatusItem({
required this.id,
required this.value,
required this.label,
required this.status,
required this.sequence,
this.deletedAt,
required this.createdAt,
required this.updatedAt,
});

factory StatusItem.fromJson(Map<String, dynamic> json) {
return StatusItem(
id: json['id'],
value: json['value'],
label: json['label'],
status: json['status'],
sequence: json['sequence'],
deletedAt: json['deleted_at'],
createdAt: json['created_at'],
updatedAt: json['updated_at'],
);
}
}

Comments

Popular posts from this blog

Unlocking the Power of OOP: A Beginner's Guide to Objects, Encapsulation, Inheritance, Abstraction, and Polymorphism

HTTP GET Response in Flutter

Building a Flutter Firebase Firestore CRUD App