add graph_view
This commit is contained in:
103
lib/pages/graph_view.dart
Normal file
103
lib/pages/graph_view.dart
Normal file
@@ -0,0 +1,103 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:get/get.dart';
|
||||
import '../controller/graph_controller.dart';
|
||||
import '../models/chart_model.dart';
|
||||
import '../widgets/detail_info_card_widget.dart';
|
||||
import '../widgets/detail_stat_widget.dart';
|
||||
import '../widgets/chart_line_widget.dart';
|
||||
|
||||
class GraphPage extends GetView<GraphController> {
|
||||
static const String namedRoute = '/graph-page';
|
||||
|
||||
const GraphPage({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
var displayWidth = MediaQuery.of(context).size.width;
|
||||
var displayHeight = MediaQuery.of(context).size.height;
|
||||
var graphCtrl = controller;
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
backgroundColor: Colors.blueGrey,
|
||||
foregroundColor: Colors.white,
|
||||
title: const Text('Graph Page'),
|
||||
centerTitle: true,
|
||||
),
|
||||
body: Container(
|
||||
width: displayWidth,
|
||||
height: displayHeight,
|
||||
padding: EdgeInsets.all(16.0),
|
||||
decoration: BoxDecoration(
|
||||
gradient: LinearGradient(
|
||||
begin: Alignment.topCenter,
|
||||
end: Alignment.bottomCenter,
|
||||
colors: [
|
||||
Colors.blueGrey[800]!,
|
||||
Colors.blueGrey[600]!,
|
||||
Colors.blueGrey[300]!,
|
||||
Colors.blue[100]!,
|
||||
],
|
||||
),
|
||||
),
|
||||
child: Center(
|
||||
child: SingleChildScrollView(
|
||||
child: Column(
|
||||
children: [
|
||||
const SizedBox(height: 16),
|
||||
|
||||
// Fahrzeugdaten
|
||||
DetailInfoCardWidget(
|
||||
title: 'Jahresstatistik',
|
||||
children: [
|
||||
DetailStatWidget(
|
||||
icon: Icons.directions_car,
|
||||
label: 'Jahreskilometerstand',
|
||||
value: '${graphCtrl.sumYearKm.value} KM',
|
||||
iconColor: Colors.blue,
|
||||
valueSize: 24,
|
||||
valueWeight: FontWeight.bold,
|
||||
),
|
||||
DetailStatWidget(
|
||||
icon: Icons.gas_meter,
|
||||
label: 'Jahresliterverbrauch',
|
||||
value:
|
||||
'${graphCtrl.sumYearLiters.value.toStringAsFixed(2)} L',
|
||||
iconColor: Colors.blue,
|
||||
valueSize: 24,
|
||||
valueWeight: FontWeight.bold,
|
||||
),
|
||||
DetailStatWidget(
|
||||
icon: Icons.euro,
|
||||
label: 'Jahreskostenverbrauch',
|
||||
value:
|
||||
'${graphCtrl.sumYearPrice.value.toStringAsFixed(2)} €',
|
||||
iconColor: Colors.blue,
|
||||
valueSize: 24,
|
||||
valueWeight: FontWeight.bold,
|
||||
),
|
||||
DetailStatWidget(
|
||||
icon: Icons.euro,
|
||||
label: 'Jahresdurchschnittspreis pro Liter',
|
||||
value:
|
||||
'${graphCtrl.averagePricePerLiter.value.toStringAsFixed(2)} €',
|
||||
iconColor: Colors.blue,
|
||||
valueSize: 24,
|
||||
valueWeight: FontWeight.bold,
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
const SizedBox(height: 24),
|
||||
|
||||
// Liniendiagramm
|
||||
ChartLineWidget(
|
||||
chartData: ChartData.fromTankList(graphCtrl.listTankModel),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user