Merge pull request #309 from astubenbord/fix/305-bug-server-url-validation-misses-scheme-validation

Fix/305 bug server url validation misses scheme validation
This commit is contained in:
Anton Stubenbord
2023-11-18 19:38:10 +01:00
committed by GitHub
3 changed files with 16 additions and 13 deletions

View File

@@ -1 +1,2 @@
* Neue Einstellung um Animationen zu deaktivieren * Neue Einstellung um Animationen zu deaktivieren
* Verbesserte Validierung von Server-Adressen

View File

@@ -1 +1,2 @@
* Add setting to disable animations * Add setting to disable animations
* Improved server-address validation

View File

@@ -42,15 +42,6 @@ class _ServerAddressFormFieldState extends State<ServerAddressFormField> {
initialValue: widget.initialValue, initialValue: widget.initialValue,
name: ServerAddressFormField.fkServerAddress, name: ServerAddressFormField.fkServerAddress,
autovalidateMode: AutovalidateMode.onUserInteraction, autovalidateMode: AutovalidateMode.onUserInteraction,
validator: (value) {
if (value?.trim().isEmpty ?? true) {
return S.of(context)!.serverAddressMustNotBeEmpty;
}
if (!RegExp(r"https?://.*").hasMatch(value!)) {
return S.of(context)!.serverAddressMustIncludeAScheme;
}
return null;
},
builder: (field) { builder: (field) {
return RawAutocomplete<String>( return RawAutocomplete<String>(
focusNode: _focusNode, focusNode: _focusNode,
@@ -74,7 +65,7 @@ class _ServerAddressFormFieldState extends State<ServerAddressFormField> {
}, },
fieldViewBuilder: fieldViewBuilder:
(context, textEditingController, focusNode, onFieldSubmitted) { (context, textEditingController, focusNode, onFieldSubmitted) {
return TextField( return TextFormField(
controller: textEditingController, controller: textEditingController,
focusNode: focusNode, focusNode: focusNode,
decoration: InputDecoration( decoration: InputDecoration(
@@ -93,10 +84,20 @@ class _ServerAddressFormFieldState extends State<ServerAddressFormField> {
: null, : null,
), ),
autofocus: false, autofocus: false,
onSubmitted: (_) { onFieldSubmitted: (_) {
onFieldSubmitted(); onFieldSubmitted();
_formatInput(); _formatInput();
}, },
autovalidateMode: AutovalidateMode.onUserInteraction,
validator: (value) {
if (value?.trim().isEmpty ?? true) {
return S.of(context)!.serverAddressMustNotBeEmpty;
}
if (!RegExp(r"^https?://.*").hasMatch(value!)) {
return S.of(context)!.serverAddressMustIncludeAScheme;
}
return null;
},
keyboardType: TextInputType.url, keyboardType: TextInputType.url,
onChanged: (value) { onChanged: (value) {
field.didChange(value); field.didChange(value);