customers
This commit is contained in:
@@ -6,16 +6,22 @@ class FluxTextField extends StatelessWidget {
|
||||
final String label;
|
||||
final IconData icon;
|
||||
final bool isPassword;
|
||||
final bool autoFocus;
|
||||
final TextEditingController? controller;
|
||||
final TextInputType? keyboardType; // Aggiunto per flessibilità
|
||||
final int? minLines;
|
||||
final int? maxLines;
|
||||
|
||||
const FluxTextField({
|
||||
super.key, // Usiamo super.key per Flutter moderno
|
||||
required this.label,
|
||||
required this.icon,
|
||||
this.isPassword = false,
|
||||
this.autoFocus = false,
|
||||
this.controller,
|
||||
this.keyboardType,
|
||||
this.minLines,
|
||||
this.maxLines = 1,
|
||||
});
|
||||
|
||||
@override
|
||||
@@ -24,6 +30,10 @@ class FluxTextField extends StatelessWidget {
|
||||
controller: controller,
|
||||
obscureText: isPassword,
|
||||
keyboardType: keyboardType,
|
||||
autofocus: autoFocus,
|
||||
minLines: minLines,
|
||||
// Se minLines è impostato, maxLines deve essere almeno uguale o null (espandibile)
|
||||
maxLines: minLines != null ? null : maxLines,
|
||||
style: TextStyle(color: context.primaryText),
|
||||
decoration: InputDecoration(
|
||||
prefixIcon: Icon(icon, color: context.accent.withValues(alpha: 0.6)),
|
||||
|
||||
@@ -91,6 +91,7 @@ class _CustomerFormState extends State<CustomerForm> {
|
||||
const SizedBox(height: 20),
|
||||
FluxTextField(
|
||||
label: 'Nome Completo',
|
||||
autoFocus: true,
|
||||
icon: Icons.person_outline,
|
||||
controller: _nomeController,
|
||||
),
|
||||
@@ -112,6 +113,7 @@ class _CustomerFormState extends State<CustomerForm> {
|
||||
label: 'Note',
|
||||
icon: Icons.notes_outlined,
|
||||
controller: _noteController,
|
||||
minLines: 3,
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
SwitchListTile(
|
||||
|
||||
@@ -5,7 +5,13 @@ import 'package:flux/core/theme/theme.dart';
|
||||
|
||||
class DashboardContent extends StatelessWidget {
|
||||
final bool isLargeScreen;
|
||||
const DashboardContent({super.key, this.isLargeScreen = false});
|
||||
final Function(int)? onTabRequested;
|
||||
|
||||
const DashboardContent({
|
||||
super.key,
|
||||
this.isLargeScreen = false,
|
||||
this.onTabRequested,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
@@ -109,7 +115,7 @@ class DashboardContent extends StatelessWidget {
|
||||
label: 'Clienti',
|
||||
icon: Icons.people,
|
||||
color: Colors.orange,
|
||||
onTap: () {},
|
||||
onTap: () => onTabRequested?.call(1),
|
||||
),
|
||||
_ActionCard(
|
||||
label: 'Campagne',
|
||||
|
||||
@@ -119,7 +119,15 @@ class _HomeScreenState extends State<HomeScreen> {
|
||||
Widget _buildPageContent(int index, bool isLargeScreen) {
|
||||
switch (index) {
|
||||
case 0:
|
||||
return DashboardContent(isLargeScreen: isLargeScreen);
|
||||
return DashboardContent(
|
||||
isLargeScreen: isLargeScreen,
|
||||
// Questo pezzo DEVE puntare al setState dello State della HomeScreen
|
||||
onTabRequested: (targetIndex) {
|
||||
setState(() {
|
||||
_selectedIndex = targetIndex;
|
||||
});
|
||||
},
|
||||
);
|
||||
case 1:
|
||||
return const CustomersContent();
|
||||
case 2:
|
||||
|
||||
Reference in New Issue
Block a user