147 lines
6.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'gaslist_controller.dart';
class GaslistPage extends GetView<GaslistController> {
static const namedRoute = '/gas-stations-list-page';
const GaslistPage({super.key});
@override
Widget build(BuildContext context) {
var gasCtrl = controller;
return PopScope(
canPop: false,
child: SafeArea(
child: Scaffold(
appBar: AppBar(
shadowColor: Colors.grey,
title: const Text('Gas Stations'),
centerTitle: true,
actions: [
IconButton(
icon: Icon(Icons.list, color: Colors.grey.shade300),
onPressed: () async {
// Handle go to Chart View
gasCtrl.goToListView();
},
),
IconButton(
icon: Icon(Icons.logout, color: Colors.grey.shade300),
onPressed: () async {
// Handle logout logic here
gasCtrl.logoutSessionAndGoToLoginPage();
},
),
],
),
body: Obx(
() => gasCtrl.isLoadingList.value == true
? Center(
child: Text('GasStations'),
)
: Column(
children: [
SizedBox(
child: Wrap(
alignment: WrapAlignment.center,
spacing: 50,
children: [
Divider(
color: Colors.grey.shade300,
),
ElevatedButton(
onPressed: () async {
gasCtrl.szRxGasArt.value = 'DIE';
await gasCtrl.loadListData();
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.grey.shade800,
foregroundColor: Colors
.orange, // Hintergrundfarbe des Buttons
),
child: Column(
children: [
Text('Diesel'),
Text('DIE'),
],
),
),
ElevatedButton(
onPressed: () async {
gasCtrl.szRxGasArt.value = 'SUP';
await gasCtrl.loadListData();
},
style: ElevatedButton.styleFrom(
backgroundColor: Colors.grey.shade800,
foregroundColor: Colors
.orange, // Hintergrundfarbe des Buttons
),
child: Column(
children: [
Text('Benzin'),
Text('SUP'),
],
),
),
],
),
),
Divider(
color: Colors.grey.shade300,
),
Expanded(
child: ListView.builder(
itemCount: 5,
itemBuilder: (context, index) {
var gasStation = gasCtrl.gasStationsList[index];
return ListTile(
shape: RoundedRectangleBorder(
side: BorderSide(
color: Colors.grey, // Border color
width: 1.0, // Border thickness
),
borderRadius: BorderRadius.circular(5.0),
),
onTap: () {
// Handle item tap if needed
gasCtrl.openDirectionMaps(
gasStation.location!.latitude!,
gasStation.location!.longitude!);
},
title: Text(gasStation.name ?? 'No Name'),
subtitle: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(gasStation.location?.address ??
'No Address'),
Text(gasStation.distance != null
? '${gasStation.distance?.toStringAsFixed(2)} km'
: 'No Distance'),
],
),
trailing: gasStation.prices != null &&
gasStation.prices!.isNotEmpty
? Column(
children: [
Text(gasStation.prices?[0].fuelType ??
'N/A'),
Text(
'${gasStation.prices?[0].amount?.toStringAsPrecision(4) ?? 'N/A'}'),
],
)
: const Text('N/A'),
);
},
),
),
],
),
),
),
),
);
}
}