import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; import 'package:siopas/connection/connection.dart'; import 'package:http/http.dart' as http; class DetailTransferPetiPage extends StatefulWidget { final int petiId; const DetailTransferPetiPage({Key? key, required this.petiId}) : super(key: key); @override State createState() => _DetailTransferPetiPageState(); } class _DetailTransferPetiPageState extends State { Map? petiStatusData; String _formatDate(String date) { DateTime parsedDate = DateTime.parse(date); String formattedDate = DateFormat('EEEE, dd MMMM yyyy', 'id_ID').format(parsedDate); return formattedDate; } @override void initState() { super.initState(); _fetchAssetStatusDataPengembalian(); } Future _fetchAssetStatusDataPengembalian() async { try { final response = await http.get( Uri.parse('$baseUrl/peti-asset/show/${widget.petiId}'), headers: { 'Content-Type': 'application/json', }, ); if (response.statusCode == 200) { setState(() { petiStatusData = json.decode(response.body)['data']['peti']; }); } else { throw Exception('Failed to load data'); } } catch (e) { print('Error fetching data: $e'); } } @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.grey[200], appBar: AppBar( backgroundColor: Colors.indigo[700], elevation: 0, title: Text('Detail Peti', style: TextStyle( color: Colors.white, fontSize: 16, )), leading: IconButton( icon: Icon(Icons.arrow_back, color: Colors.white), onPressed: () { Navigator.pushNamed(context, '/transfer-peti'); }, ), ), body: Padding( padding: EdgeInsets.all(16.0), child: Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(15.0), ), elevation: 5, child: Column( children: [ Card( shape: RoundedRectangleBorder( borderRadius: BorderRadius.vertical(top: Radius.circular(15.0)), ), elevation: 0, margin: EdgeInsets.all(0), color: Colors.indigo[700], child: Padding( padding: const EdgeInsets.all(16.0), child: Row( children: [ Icon(Icons.article, size: 40, color: Colors.white), // Ganti ikon sesuai kebutuhan SizedBox(width: 10), Text( 'ID: ${widget.petiId}', style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: Colors.white, ), ), ], ), ), ), SizedBox(height: 10), if (petiStatusData != null) ...[ _buildDetailItem( 'Tipe Peti', petiStatusData!['tipe_peti']['type'], ), Divider(thickness: 1), _buildDetailItem( 'Warna Peti', petiStatusData!['warna'] != null ? petiStatusData!['warna'].toString() : '-'), Divider(thickness: 1), _buildDetailItem( 'Customer', petiStatusData!['customer']['name'] != null ? petiStatusData!['customer']['name'].toString() : '-'), Divider(thickness: 1), _buildDetailItem( 'Warehouse', petiStatusData!['warehouse']['name'] != null ? petiStatusData!['warehouse']['name'].toString() : '-'), Divider(thickness: 1), _buildDetailItem( 'Status Peti', petiStatusData!['status_disposal'] != null ? petiStatusData!['status_disposal'].toString() : '-'), Divider(thickness: 1), _buildDetailItem( 'Jumlah Peti', petiStatusData!['jumlah'] != null ? petiStatusData!['jumlah'].toString() : '-', ), Divider(thickness: 1), _buildDetailItem( 'Tgl Pembuatan Peti', petiStatusData!['created_at'] != null ? _formatDate(petiStatusData!['created_at']) : '-'), ], ], ), ), ), ); } Widget _buildDetailItem(String label, String value) { return Padding( padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 16.0), child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Text( label, style: TextStyle(fontSize: 12.5, fontWeight: FontWeight.bold), ), Text(value), ], ), ); } }