show static method

Future<String?> show({
  1. String initial = "",
  2. String quote = "",
})

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;
}