You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
840 B
33 lines
840 B
import 'package:flutter/widgets.dart'; |
|
import 'package:neon/l10n/localizations.dart'; |
|
|
|
String? validateHttpUrl( |
|
final BuildContext context, |
|
final String? input, { |
|
final bool httpsOnly = false, |
|
}) { |
|
if (input == null || input.isEmpty) { |
|
return NeonLocalizations.of(context).errorInvalidURL; |
|
} |
|
final uri = Uri.tryParse(input); |
|
|
|
if (uri != null) { |
|
if (uri.isScheme('https')) { |
|
return null; |
|
} |
|
if (uri.isScheme('http') && !httpsOnly) { |
|
// TODO: Maybe make a better error message for http URLs if only https is allowed |
|
return null; |
|
} |
|
} |
|
|
|
return NeonLocalizations.of(context).errorInvalidURL; |
|
} |
|
|
|
String? validateNotEmpty(final BuildContext context, final String? input) { |
|
if (input == null || input.isEmpty) { |
|
return NeonLocalizations.of(context).errorEmptyField; |
|
} |
|
|
|
return null; |
|
}
|
|
|