Files
apidash/lib/screens/common_widgets/field_header.dart
2025-03-29 13:45:42 +05:30

62 lines
1.8 KiB
Dart

import 'package:apidash/widgets/widgets.dart';
import 'package:flutter/material.dart';
import 'package:multi_trigger_autocomplete_plus/multi_trigger_autocomplete_plus.dart';
import 'package:apidash/utils/utils.dart';
import 'envfield_cell.dart';
class HeaderField extends StatefulWidget {
const HeaderField({
super.key,
required this.keyId,
this.hintText,
this.initialValue,
this.onChanged,
this.colorScheme,
});
final String keyId;
final String? hintText;
final String? initialValue;
final void Function(String)? onChanged;
final ColorScheme? colorScheme;
@override
State<HeaderField> createState() => _HeaderFieldState();
}
class _HeaderFieldState extends State<HeaderField> {
final FocusNode focusNode = FocusNode();
@override
Widget build(BuildContext context) {
var colorScheme = widget.colorScheme ?? Theme.of(context).colorScheme;
return EnvCellField(
keyId: widget.keyId,
hintText: widget.hintText,
initialValue: widget.initialValue ?? "",
focusNode: focusNode,
onChanged: widget.onChanged,
colorScheme: colorScheme,
autocompleteNoTrigger: AutocompleteNoTrigger(
optionsViewBuilder: (context, autocompleteQuery, controller) {
return HeaderSuggestions(
suggestionsCallback: headerSuggestionCallback,
query: autocompleteQuery.query,
onSuggestionTap: (suggestion) {
controller.text = suggestion;
widget.onChanged?.call(controller.text);
focusNode.unfocus();
});
}),
);
}
Future<List<String>?> headerSuggestionCallback(String pattern) async {
if (pattern.isEmpty) {
return null;
}
return getHeaderSuggestions(pattern)
.where(
(suggestion) => suggestion.toLowerCase() != pattern.toLowerCase())
.toList();
}
}