import 'package:flutter/material.dart';
import 'package:http/http.dart' as http;
factory Promotion.fromJson(Map<String, dynamic> json) {
promotionId: json['promotionId'] as int,
promotionName: json['promotionName'] as String,
startDate: json['startDate'] as String,
expirationDate: json['expirationDate'] as String,
description: json['description'] as String,
isActive: json['isActive'] as bool,
class RequestListView extends StatelessWidget {
Widget build(BuildContext context) {
return FutureBuilder<List<Promotion>>(
builder: (context, snapshot) {
List<Promotion> data = snapshot.data;
return _jobsListView(data);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
return CircularProgressIndicator();
Future<List<Promotion>> _fetchJobs() async {
Map<String, String> headers = {
"Content-type": "application/json",
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtcm5nb2NodXUiLCJVc2VybmFtZSI6Im1ybmdvY2h1dSIsIkVtYWlsIjoibmdvY2hodUBnbWFpbC5jb20iLCJGdWxsbmFtZSI6Ik5nb2NIdXUiLCJCcmFuZElkIjoiNjYiLCJTdG9yZUlkIjoiNSIsInJvbGUiOiJBZG1pbiIsImp0aSI6IjZiYzQ2YWY0LWU5YWUtNDBmOC1iZjQ4LWE2ZjIwYTQ1MTRmYiIsIm5iZiI6MTYwNTYyNjczOCwiZXhwIjoxNjA4MjE4NzM4LCJpYXQiOjE2MDU2MjY3MzgsImlzcyI6Imh0dHBzOi8vbG9jYWxob3N0OjQ0MzM2LyIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjQ0MzM2LyJ9.8uWNcrzvThhgVeaysRkm0b3S-zxJLbivK2HxS6OryQU"
final response = await http.get(
'https://apivoucher-develop.azurewebsites.net/api/v1/stores/5/promotions?page=1&pageSize=10&isDesc=false',
if (response.statusCode == 200) {
var data = json.decode(response.body);
List<Promotion> result = [];
Promotion p = new Promotion();
p.promotionId = pr["promotionId"] as int;
p.promotionName = pr["promotionName"] as String;
p.startDate = pr["startDate"] as String;
p.expirationDate = pr["expirationDate"] as String;
p.shortDescription = pr["shortDescription"] as String;
p.description = pr["description"] as String;
p.imgUrl = pr["imgUrl"] as String;
p.isActive = pr["isActive"] as bool;
throw Exception('Failed to load jobs from API');
ListView _jobsListView(data) {
itemBuilder: (context, index) {
return _tile(data[index]);
Widget _tile(Promotion request) {
leading: const Icon(Icons.flight_land),
title: Text(request.shortDescription),
subtitle: Text(request.startDate) ,