import 'package:flutter/material.dart'; import 'dart:io'; Future showMiuiSafeDialog({ required BuildContext context, required Widget Function(BuildContext dialogContext) builder, bool barrierDismissible = true, }) { return showDialog( context: context, barrierDismissible: barrierDismissible, builder: (dialogContext) => builder(dialogContext), ); } class MiuiSafeTextDialog extends StatelessWidget { final String title; final String label; final String hint; final String initialText; const MiuiSafeTextDialog({ super.key, required this.title, required this.label, required this.hint, required this.initialText, }); @override Widget build(BuildContext context) { final controller = TextEditingController(text: initialText); final focusNode = FocusNode(); // ⭐ MIUI-safe: piccolo delay per evitare blocco input Future.microtask(() async { if (!context.mounted) return; final delay = Platform.isAndroid ? const Duration(milliseconds: 30) : Duration.zero; await Future.delayed(delay); if (!context.mounted) return; FocusScope.of(context).requestFocus(focusNode); }); return AlertDialog( title: Text(title), content: TextField( controller: controller, focusNode: focusNode, autofocus: false, textInputAction: TextInputAction.done, decoration: InputDecoration( labelText: label, hintText: hint, ), onSubmitted: (_) { if (!context.mounted) return; Navigator.of(context).pop(controller.text.trim()); }, ), actions: [ TextButton( onPressed: () { if (!context.mounted) return; Navigator.of(context).pop(); }, child: const Text('Annulla'), ), TextButton( onPressed: () { if (!context.mounted) return; Navigator.of(context).pop(controller.text.trim()); }, child: const Text('Salva'), ), ], ); } }