show static method
Returns the edited note, an empty string to clear it, or null when cancelled.
Implementation
static Future<String?> show({String initial = "", String quote = ""}) async {
final TextEditingController field = TextEditingController(text: initial);
final String? result = await UNavigator.dialog<String>(
AlertDialog(
title: UTextTitleMedium(initial.isEmpty ? U.s.addNote : U.s.editNote),
content: SizedBox(
width: 420,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
if (quote.trim().isNotEmpty)
Builder(
builder: (BuildContext context) => Container(
margin: const EdgeInsets.only(bottom: 12),
padding: const EdgeInsets.all(10),
decoration: BoxDecoration(
color: Theme.of(context).colorScheme.surfaceContainerHighest,
borderRadius: BorderRadius.circular(8),
),
child: Text(
quote.trim(),
maxLines: 4,
overflow: TextOverflow.ellipsis,
textDirection: UDocText.isRtl(quote) ? TextDirection.rtl : TextDirection.ltr,
style: Theme.of(context).textTheme.bodySmall?.copyWith(fontStyle: FontStyle.italic),
),
),
),
TextField(
controller: field,
autofocus: true,
minLines: 3,
maxLines: 8,
decoration: InputDecoration(hintText: U.s.writeYourNote, border: const OutlineInputBorder()),
),
],
),
),
actions: <Widget>[
TextButton(onPressed: UNavigator.back<String>, child: UTextBodyMedium(U.s.cancel)),
TextButton(onPressed: () => UNavigator.back<String>(field.text.trim()), child: UTextBodyMedium(U.s.save)),
],
),
);
field.dispose();
return result;
}