回答編集履歴
1
Autocompleteを改良する場合の実装例を追加
test
CHANGED
@@ -5,3 +5,40 @@
|
|
5
5
|
```Autocomplete```を改良するか```RawAutocomplete```を使って自作するかどちらか。
|
6
6
|
|
7
7
|
速いのは```Autocomplete```をコピーして上位側から```TextEditingController```を渡せるようにして、```build```内の```RawAutocomplete```に用意した```TextEditingController```を渡すようにするという感じだろうか。
|
8
|
+
|
9
|
+
---
|
10
|
+
```Autocomplete```を改良した場合の実装を以下抜粋して追記しておきます。
|
11
|
+
```dart
|
12
|
+
class Autocomplete<T extends Object> extends StatelessWidget {
|
13
|
+
/// Creates an instance of [Autocomplete].
|
14
|
+
Autocomplete(
|
15
|
+
this.controller, // 追加
|
16
|
+
{
|
17
|
+
super.key,
|
18
|
+
required this.optionsBuilder,
|
19
|
+
this.displayStringForOption = RawAutocomplete.defaultStringForOption,
|
20
|
+
this.fieldViewBuilder = _defaultFieldViewBuilder,
|
21
|
+
this.onSelected,
|
22
|
+
this.optionsMaxHeight = 200.0,
|
23
|
+
this.optionsViewBuilder,
|
24
|
+
this.initialValue,
|
25
|
+
}) : assert(displayStringForOption != null),
|
26
|
+
assert(optionsBuilder != null);
|
27
|
+
|
28
|
+
/// {@macro flutter.widgets.RawAutocomplete.displayStringForOption}
|
29
|
+
final AutocompleteOptionToString<T> displayStringForOption;
|
30
|
+
|
31
|
+
final TextEditingController controller; // 追加
|
32
|
+
final FocusNode _focusNode = FocusNode(); // 追加
|
33
|
+
final GlobalKey _autocompleteKey = GlobalKey(); // 追加
|
34
|
+
|
35
|
+
~中略~
|
36
|
+
|
37
|
+
@override
|
38
|
+
Widget build(BuildContext context) {
|
39
|
+
return RawAutocomplete<T>(
|
40
|
+
textEditingController: controller, // 追加
|
41
|
+
focusNode: _focusNode, // 追加
|
42
|
+
key: _autocompleteKey, // 追加
|
43
|
+
displayStringForOption: displayStringForOption,
|
44
|
+
```
|