ui iniziale fatta con gemini
This commit is contained in:
117
lib/ui/dashboard/dashboard_view.dart
Normal file
117
lib/ui/dashboard/dashboard_view.dart
Normal file
@@ -0,0 +1,117 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flux/theme.dart';
|
||||
|
||||
class DashboardView extends StatelessWidget {
|
||||
const DashboardView({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
// Iniezione del Bloc per la creazione di operazioni (da implementare)
|
||||
return /* BlocProvider(
|
||||
create: (context) => OperazioneBloc(), // Implementa la logica nel Bloc
|
||||
child: */ Scaffold(
|
||||
appBar: AppBar(title: Text('FLUX')),
|
||||
body: SingleChildScrollView(
|
||||
padding: EdgeInsets.all(16.0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
_WelcomeHeader(),
|
||||
SizedBox(height: 24),
|
||||
_QuickActions(), // Contiene "Nuova Operazione"
|
||||
SizedBox(height: 24),
|
||||
_RecentActivityPreview(),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
// );
|
||||
}
|
||||
}
|
||||
|
||||
class _WelcomeHeader extends StatelessWidget {
|
||||
const _WelcomeHeader();
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text('Benvenuto,', style: Theme.of(context).textTheme.bodyMedium),
|
||||
Text(
|
||||
'Negozio Piacenza Centro',
|
||||
style: Theme.of(context).textTheme.headlineMedium,
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _QuickActions extends StatelessWidget {
|
||||
const _QuickActions();
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
Text(
|
||||
'AZIONI RAPIDE',
|
||||
style: Theme.of(
|
||||
context,
|
||||
).textTheme.titleSmall?.copyWith(color: FluxColors.accentTurquoise),
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
ElevatedButton.icon(
|
||||
onPressed: () {
|
||||
// Emetti evento al Bloc: BlocProvider.of<OperazioneBloc>(context).add(IniziaNuovaOperazione());
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
const SnackBar(content: Text('Avvio Nuova Operazione...')),
|
||||
);
|
||||
},
|
||||
icon: const Icon(Icons.add),
|
||||
label: const Text('NUOVA OPERAZIONE TELCO'),
|
||||
style: ElevatedButton.styleFrom(
|
||||
minimumSize: const Size(double.infinity, 50),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class _RecentActivityPreview extends StatelessWidget {
|
||||
const _RecentActivityPreview();
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Card(
|
||||
child: Padding(
|
||||
padding: const EdgeInsets.all(16.0),
|
||||
child: Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
const Text(
|
||||
'Attività Recenti',
|
||||
style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
|
||||
),
|
||||
const Divider(color: FluxColors.textSecondary),
|
||||
// Sostituire con BlocBuilder
|
||||
_activityTile('Nuova Linea', 'Mario Rossi', '10 min fa'),
|
||||
_activityTile('Assistenza Tech', 'iPhone 13', '45 min fa'),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _activityTile(String title, String subtitle, String time) {
|
||||
return ListTile(
|
||||
contentPadding: EdgeInsets.zero,
|
||||
leading: const Icon(Icons.history, color: FluxColors.accentTurquoise),
|
||||
title: Text(title, style: const TextStyle(color: FluxColors.textPrimary)),
|
||||
subtitle: Text(subtitle),
|
||||
trailing: Text(
|
||||
time,
|
||||
style: const TextStyle(color: FluxColors.textSecondary, fontSize: 12),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user